LLM Moment 辅助发贴助手实现指南
在快节奏的生活中,想要发一条有格调的朋友圈却苦于没有灵感?本项目的 Moment 辅助发帖助手 利用本地部署的大语言模型(LLM),结合你的历史发帖风格,为你智能生成多条不同风格的朋友圈文案供你选择。
核心实现原理
1. 架构设计
助手采用 Python + Ollama + YAML 配置 的轻量级架构:
- Python 脚本 (
publish_moment.py): 核心逻辑控制器,负责交互、调用模型、保存文件。 - Ollama: 本地 LLM 服务,提供模型推理能力(支持
minicpm-v:8b等模型)。 - YAML 配置 (
moment_config.yaml): 集中管理模型参数、提示词模板和运行模式。
2. 动态风格学习
助手不是死板地套用模板,而是实时学习你的风格:
- 每次运行时,脚本会自动扫描
content/moments/目录。 - 读取你最近发布的 3 条朋友圈作为 Few-Shot(少样本)示例。
- 将这些示例注入到提示词中,让模型模仿你的排版、语气和用词习惯。
3. 多选项生成机制
为了避免“一刀切”的生成结果,助手采用多选项策略:
- 要求模型一次性生成 3 个不同风格的选项(如:严格仿古、略带抒情、极简意境)。
- 用户可以在终端查看并选择最满意的一条,或者输入
4让模型重新生成。
提示词工程 (Prompt Engineering) 详解
提示词工程是本项目的灵魂,决定了生成文案的质量。我们采用了 System Prompt + User Prompt + Few-Shot 的组合策略。
1. System Prompt (系统提示词)
定义模型的角色和输出格式约束:
system_prompt: |
你是一位专注分享中国古典文学与诗意生活的朋友圈博主。
请根据用户的输入诉求,结合提供的历史发帖风格,生成 3 个不同风格程度的选项供用户选择。
输出要求:
1. 必须严格基于历史风格(古典、诗词、意境)。
2. 选项之间要有细微的风格差异(例如:选项 1 严格仿古,选项 2 略带抒情,选项 3 极简意境)。
3. **必须且只能**输出一个 JSON 数组,格式如下:
[{"id": 1, "label": "严格仿古", "content": "内容..."}, {"id": 2, "label": "略带抒情", "content": "内容..."}, {"id": 3, "label": "极简意境", "content": "内容..."}]
4. 不要输出任何 JSON 之外的文字,不要 Markdown 代码块标记。
设计要点:
- 角色设定: 明确“古典文学博主”的人设,限制模型的发挥范围。
- 格式强约束: 强制要求输出 JSON 数组,便于 Python 脚本解析。
- 负向提示: 禁止输出多余的解释性文字,防止解析失败。
2. User Prompt (用户提示词)
动态注入上下文和用户诉求:
user_prompt: |
参考以下我的历史发帖风格:
{style_context}
---
我的诉求/草稿:{user_input}
请生成 3 个选项。
动态变量:
{style_context}: 脚本自动提取的最近 3 条历史帖子内容。{user_input}: 用户输入的灵感关键词或草稿(如“写首关于西湖雨天的诗”)。
3. 智能 JSON 提取
考虑到模型偶尔会“啰嗦”,脚本内置了智能提取逻辑:
- 寻找回复文本中第一个
[和最后一个]之间的内容。 - 自动剥离 Markdown 代码块标记(
```json)。 - 确保即使模型输出不完美,也能稳定解析出选项。
Moment 助手使用步骤
1. 环境准备
确保已安装 Python 3.10+ 和 Ollama,并拉取了模型(如 minicpm-v:8b-2.6-q4_k_m)。
安装 Python 依赖:
cd /Users/bob/Documents/myblog
.venv/bin/pip install pyyaml ollama
2. 配置文件检查
打开 scripts/moment_config.yaml,确认模型名称与本地一致:
llm:
model: "minicpm-v:8b-2.6-q4_k_m"
base_url: "http://localhost:11434"
3. 启动助手
在终端任意位置输入命令:
LLM 辅助模式(默认):
moment
手动模式(不经过 LLM):
moment /
4. 交互流程
以 LLM 模式为例,终端会引导你完成以下步骤:
- 输入标题:留空则自动生成(如
LLM-Moment-20260404)。 - 输入图片链接:支持多个链接,用空格分隔。
- 输入地点/意象:如“湿地公园”、“西湖”。
- 输入心情/氛围:如“沮丧”、“宁静”。
- 输入诉求/草稿:这是最关键的一步,告诉模型你想写什么。
- 示例:“山外春波山外山,绵绵秋水绿无边”
- 示例:“写一首关于秋天落叶的诗,带点忧伤”
- 选择选项:模型生成 3 个选项后,输入
1、2或3选择。- 如果不满意,输入
4重新生成。
- 如果不满意,输入
- 发布成功:脚本自动保存文件到
content/moments/目录。
5. 预览与发布
运行 hugo server 预览生成的朋友圈,确认无误后提交到 Git 仓库即可。
优势总结
- 风格一致: 动态学习历史帖子,越用越懂你。
- 灵感爆发: 一次生成 3 个选项,打破思维局限。
- 本地隐私: 所有数据在本地处理,不上传云端。
- 高效便捷: 终端交互,无需打开编辑器,几分钟完成发帖。
通过这套助手,发朋友圈不再是负担,而是一次与 AI 共同创作的诗意体验。
运行效果

