Prompt 编写最佳实践
System Prompt 是技能的「灵魂」。它决定了 Agent 的行为模式、输出质量和任务完成度。写好 Prompt 不需要编程,但需要清晰的思维和结构化的表达。
核心原则
1. 角色先行
在 Prompt 开头明确定义 Agent 的角色。角色决定语气、专业度和行为边界。
✅ 好的写法:
你是 CeeCore 的天气预报助手,负责每日定时推送天气信息。
你的语气应该像一位细心的朋友,简洁、友好、实用。
❌ 差的写法:
你是一个助手,帮用户查天气。
为什么差:没有定义语气和边界,Agent 可能输出冗长、啰嗦或无关内容。
2. 任务具体化
用「做什么 → 怎么做 → 输出什么」的结构描述每个任务。
✅ 好的写法:
## 任务:每日天气推送
每天早上 8:00,完成以下步骤:
1. 调用 get_weather 获取 {{config.city}} 的天气数据
2. 整理成推送消息,包含:
- 天气状况(晴/雨/阴)
- 温度范围(最高℃/最低℃)
- 穿衣建议
3. 通过 send_notification 推送给用户
推送消息格式:
"早上好!今天{{城市}}天气{{状况}},{{温度范围}}。{{穿衣建议}}"
❌ 差的写法:
每天推送天气。
3. 给出正例和反例
告诉 Agent 什么是好的输出,什么是不好的——用例子说话。
✅ 好的写法:
## 推送示例
好的推送:
"早上好!今天北京晴,15℃~25℃。建议穿薄外套,温差较大注意保暖。"
不好的推送:
"根据气象数据分析,北京地区今日天气状况为晴朗,温度在15到25摄氏度之间波动..."
(太啰嗦,像天气预报播报,不像朋友提醒)
4. 设定边界
明确告诉 Agent 什么不能做、什么不能回复。
✅ 好的写法:
## 边界规则
- 不要回答天气相关以外的问题
- 如果天气 API 调用失败,推送"今日天气数据获取失败,请稍后查看",不要编造数据
- 不要主动提供超出天气范围的信息(如旅游建议、美食推荐)
- 推送消息控制在 200 字以内
5. 使用模板变量
在 Prompt 中用 {{config.xxx}} 引用用户配置,让技能变成可定制的。
每天早上 {{config.push_time}},获取 {{config.city}} 的天气数据。
可用变量:
{{config.xxx}}:用户配置参数(对应 config.schema.json 中的字段){{device.name}}:设备名称{{user.name}}:用户昵称
结构模板
一个规范的 Prompt 建议包含以下章节:
# [技能名称]
## 角色
你是谁,你的语气和定位是什么。
## 任务
你需要完成什么,按什么顺序,输出什么。
## 工具使用
你有哪些工具可用,在什么场景下调用。
## 输出格式
你的回复应该是什么格式、什么长度。
## 边界规则
你不能做什么,不能回答什么。
## 示例
好的输出和坏的输出的对比。
常见陷阱
陷阱 1:指令冲突
# ❌ 冲突的指令
输出要简洁,控制在 100 字以内。
同时要详细解释每个数据来源和计算方法。
两个指令互相矛盾,Agent 会困惑。解决方案:优先级排序。
# ✅ 优先级明确
1. 优先保证简洁(控制在 100 字以内)
2. 如果用户追问,再详细解释
陷阱 2:模糊描述
# ❌ 模糊
适当的时候提醒用户。
「适当的时候」是什么时候?Agent 无法判断。
# ✅ 精确
当温度超过 35℃ 或低于 5℃ 时,推送中增加极端天气提醒。
陷阱 3:过度约束
# ❌ 过度约束(让 Agent 失去灵活性)
你必须用以下 5 个句式回复,不能偏离。
过度约束让 Agent 机械、不自然。
# ✅ 保留灵活性
推送语气自然友好,避免机械播报。
陷阱 4:忽略异常处理
# ❌ 没有异常处理
调用 API 获取天气。
API 失败了怎么办?Agent 会卡住。
# ✅ 有异常处理
调用 API 获取天气。如果失败,重试一次。
仍失败则推送"今日天气数据获取失败,请稍后查看"。
测试你的 Prompt
写完 Prompt 后,用以下问题自检:
- 角色清晰吗? 读完第一段,能说出这个 Agent 是干什么的?
- 任务可执行吗? 每一步都有明确的输入和输出?
- 有边界吗? 明确说了什么不能做?
- 有示例吗? 给了好坏对比?
- 有异常处理吗? 出错时 Agent 知道怎么办?
- 能念出来吗? 念一遍——不通顺的地方,Agent 也会觉得不通顺。
进阶技巧
链式思维
让 Agent 在回答前先「思考」,提高复杂任务的准确性。
在回答用户之前,先按以下步骤分析:
1. 用户的问题是什么类型?
2. 需要调用哪些工具?
3. 预期的输出格式是什么?
然后根据分析结果回答。
渐进式引导
对于复杂技能,将任务拆成多个步骤,逐步引导。
## 步骤 1:分析用户需求
先理解用户想要什么,用一句话确认。
## 步骤 2:制定方案
根据用户需求,制定 2-3 个可行方案。
## 步骤 3:执行方案
用户选择一个方案后,调用工具执行。
## 步骤 4:汇报结果
整理执行结果,以简洁的方式汇报。