system
预置的系统提示词,每个 Agent 或者 每个会话可以单独有一个。单 Agent 或者会话的每次请求最好都带上,防止跑偏。
1[{ "role": "system", "content": "系统提示词" }]user
用户说的内容
1[2 { "role": "system", "content": "系统提示词" },3 { "role": "user", "content": "用户的问题" }4]assistant
上一轮对话 LLM 自己说的内容,这样模型下次处理是就带上了之前的记忆
1```json2[3 { "role": "system", "content": "系统提示词" },4 "role": "user", "content": "我叫 vuji"},5 {"role": "assistant", "content": "你好, vuji"},6 {"role": "user", "content": "我叫什么"}7]tool
LLM 调用完工具之后的结果回传
LLM 存在能力边界
LLM 并非所有的对话都能正常处理,不同模型处理边界不同。 如 qwen2.5:7b 让给出推荐资料,但是没有库数据时,会编造 deepseek:r1:32b 则会根据示例来处理,能够实现距推
- Prompt 的“不准编造”等限制条件不完全可靠,需要代码进行兜底
- 同一份 prompt,7b 可能压不住 helpful 本能,32b 基本能压住 - 模型需要在快和听话之间做权衡
- Few-shot 示例比纯约束更加有效-模型天生擅长模仿样本,而非遵守抽象规则
| 模型 | 参数 | 拒推 | 编造 | 格式遵循 |
|---|---|---|---|---|
| qwen2.5:7b | 7B | 半(话术对,还是编) | 10 首 | 中等 |
| deepseek-r1:8b | 8B | ✅ 过 | 0 首 | ⚠️ 自创格式(加 emoji、改标题) |
| deepseek-r1:32b | 32B | ✅ | 0 首 | ✅ 严格遵循 |