共计 1776 个字符,预计需要花费 5 分钟才能阅读完成。
从 Bad Case 看提示词的重要性
刚接触 AI 对话系统时,我曾用这样模糊的提示词:” 帮我回答天气问题 ”,结果出现两种典型问题:

- 答非所问:用户问 ” 明天上海温度 ”,AI 回复 ” 温度是物质分子运动的宏观表现 ” 这种物理课本内容
- 过度发散:简单天气查询演变成讨论全球变暖的万字论文
这些崩溃场景说明:没有精准的 system 提示词,AI 就像没剧本的演员,容易即兴发挥出错。
提示词三大核心要素拆解
1. 角色定义(Role Definition)
用第一人称明确身份,例如:
你是一个专注于提供实时天气数据的专业助手,所有回答必须基于可信气象数据源。
2. 任务约束(Task Constraints)
需要规定:
- 知识边界(” 不回答气象学理论问题 ”)
- 行为禁忌(” 不预测超过 7 天的天气 ”)
- 响应时效(” 数据截止到昨天 ”)
3. 输出格式(Output Formatting)
包括:
- 结构化模板(” 城市:{城市名}\n 日期:{日期}\n 温度:{温度范围}”)
- 长度限制(” 不超过 100 字 ”)
- 特殊标记(” 用 emoji 表示天气现象 ”)
Python 实战:天气机器人
import openai
import logging
from typing import Dict
# 日志配置
logging.basicConfig(level=logging.INFO)
class WeatherBot:
def __init__(self, api_key: str):
self.messages = [
{
"role": "system",
"content": """ 你是一个严谨的天气预报助手,遵守以下规则:1. 只回答中国城市未来 3 天内的天气查询
2. 温度精确到小数点后 1 位
3. 格式:城市 | 日期 | 白天天气 | 夜间天气 | 温度范围
4. 不知道时回答 '超出查询范围'"""
}
]
self.api_key = api_key
def chat(self, user_input: str) -> Dict:
try:
self.messages.append({"role": "user", "content": user_input})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=self.messages,
max_tokens=100, # 控制输出长度
temperature=0.3, # 降低随机性
request_timeout=15 # 超时设置
)
ai_reply = response.choices[0].message.content
self.messages.append({"role": "assistant", "content": ai_reply})
# 敏感词过滤(示例)banned_words = ["暴力", "政治"]
if any(word in ai_reply for word in banned_words):
ai_reply = "回复内容包含受限词汇"
return {"status": "success", "data": ai_reply}
except Exception as e:
logging.error(f"API 调用失败: {str(e)}")
return {"status": "error", "data": "系统繁忙请重试"}
# 使用示例
bot = WeatherBot("your_api_key")
print(bot.chat("明天北京天气怎么样?"))
生产环境避坑指南
1. 敏感词过滤
建议采用双层校验:
- 前置过滤:在用户输入阶段拦截明显违规内容
- 后置过滤:对 AI 输出进行二次扫描
2. 超时与重试
- 设置合理 timeout(通常 15-30 秒)
- 实现指数退避重试(exponential backoff)
3. 成本控制
- 监控 token 消耗:
usage.total_tokens - 对免费用户限制每日调用次数
- 使用
gpt-3.5-turbo而非gpt-4降低开销
进阶思考方向
- 效果评估:如何设计 A / B 测试对比不同提示词的完成率?
- 知识注入:当需要专业气象知识时,应该用 fine-tuning 还是 RAG?
- 多模态扩展:如果要同时返回天气图和文字,提示词该如何调整?
提示词工程就像教 AI 说话的艺术,开始可能觉得像在猜谜语,但随着实践积累,你会逐渐掌握让 AI” 听话 ” 的窍门。建议从简单场景入手,通过日志分析持续优化,慢慢就能培养出对提示词的敏感度。
正文完
