共计 1831 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点:为什么提示词设计如此重要
在构建对话系统时,提示词 (Prompt) 的质量直接影响 Agent 的表现。新手常遇到以下问题:

- 意图混淆:用户询问 ” 如何退货 ” 时,系统却返回 ” 商品推荐 ”,因为提示词未明确区分相似意图
- 多轮对话断裂:当用户追问细节时,系统丢失上文语境,导致重复提问或答非所问
- 输出不稳定:同一问题在不同时间得到不一致的回答,缺乏确定性约束
这些问题往往源于提示词设计时缺乏系统性的方法论。
设计原则:结构化 vs 自然语言
结构化提示词(推荐)
{
"role": "system",
"content": "你是一个专业电商客服,主要处理退货、物流查询、产品咨询三类问题"
}
- 优点:
- 机器可解析性强
- 支持多模态输入输出
- 便于版本管理和 A / B 测试
自然语言提示词
"你是一个 helpful 的客服助手,请礼貌回答用户问题"
- 优点:
- 人类可读性好
- 快速原型开发
- 缺点:
- 容易产生歧义
- 难以维护扩展
选择建议:生产环境优先采用结构化提示,配合 JSON Schema 等验证工具。
代码实战:电商客服案例
完整模板示例
import json
# 系统角色定义
system_prompt = {
"role": "system",
"content": """
你是一个天猫电商客服助手,需遵守以下规则:1. 仅处理退货退款、物流进度、商品咨询三类问题
2. 对于无法处理的需求,引导用户拨打 95018
3. 必须要求用户提供订单号后再查询具体信息
"""
}
# 对话历史处理
def build_messages(history):
return [system_prompt] + [{"role": "user" if i%2==0 else "assistant", "content": msg}
for i, msg in enumerate(history)
]
# 输出格式约束
response_schema = {
"type": "object",
"properties": {"reply": {"type": "string"},
"suggested_actions": {"type": "array"}
},
"required": ["reply"]
}
# 错误处理机制
def safe_generate(prompt):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=build_messages(prompt),
response_format={"schema": response_schema}
)
return json.loads(response.choices[0].message.content)
except Exception as e:
return {"reply": "系统繁忙,请稍后再试", "suggested_actions": []}
关键设计点说明:
- 角色定义明确业务边界,避免 ” 万能助手 ” 幻觉
- 对话历史采用交替存储模式(user/assistant)
- JSON Schema 确保输出结构一致性
- try-catch 防止 API 异常导致服务中断
避坑指南:生产环境三大陷阱
- 敏感词过滤
- 问题:用户输入或模型生成违规内容
-
方案:
BLACKLIST = ["发票", "投诉 12315"] def contains_sensitive(text): return any(word in text for word in BLACKLIST) -
超时控制
- 问题:复杂提示导致响应时间超过 5 秒
-
方案:
import signal class TimeoutException(Exception): pass def handler(signum, frame): raise TimeoutException() signal.signal(signal.SIGALRM, handler) signal.alarm(3) # 3 秒超时 -
上下文窗口溢出
- 问题:长对话历史超出模型 token 限制
- 方案:
- 优先保留最近 3 轮对话
- 关键信息抽提摘要
进阶建议:提示词优化方法论
A/ B 测试实施步骤
- 定义评估指标(如任务完成率、平均对话轮次)
- 创建提示词变体(Variant A/B)
- 均匀分配流量进行测试
- 使用 T 检验确定统计显著性
常用评估维度
- 准确性:人工评估回答正确率
- 流畅度:BLEU 等自动评分
- 安全性:敏感词触发次数
- 效率:平均响应时间
总结
有效的提示词工程需要:
– 明确场景边界
– 结构化设计
– 完备的异常处理
– 持续迭代优化
初学者可从简单场景入手,逐步增加复杂性。每次修改提示词后,建议用测试用例集验证效果稳定性。
正文完
