共计 2422 个字符,预计需要花费 7 分钟才能阅读完成。
为什么需要提示词工程?
在 AI 应用中,提示词是与模型沟通的桥梁。好的提示词能显著提升生成结果的质量和一致性,而糟糕的提示词则可能导致输出不相关、不完整甚至有害。新手常见的痛点包括:

- 输出结果不稳定,每次生成差异大
- 无法获得预期的具体细节
- 模型经常 ” 自由发挥 ”,偏离主题
- 长文本生成时逻辑不连贯
这些问题的根源往往在于提示词设计不当。下面我们将通过 5 个实战技巧来解决这些问题。
1. 结构化提示:明确指令与上下文
原理:将提示词分为明确的部分,让模型更好地理解任务结构。
实现方法:
1. 使用 ### 或 — 等符号划分不同部分
2. 明确区分指令、上下文和示例
3. 对输出格式提出具体要求
import openai
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你是一位专业的科技文章编辑"},
{"role": "user", "content": """
### 指令
请用中文撰写一篇关于 AI 提示词工程的短文
### 要求
- 字数 300 字左右
- 包含 3 个实用技巧
- 语言通俗易懂
### 示例格式
标题:...
正文:...
"""}
]
)
2. 温度参数 (temperature) 调优
原理 :控制模型输出的随机性。低 temperature(0-0.3) 结果更确定,高 temperature(0.7-1)更有创造性。
实现方法:
1. 对事实性内容使用低 temperature
2. 创意写作可使用较高 temperature
3. 通过 AB 测试确定最佳值
# 事实性查询 - 低随机性
fact_response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
temperature=0.2,
messages=[...]
)
# 创意写作 - 适度随机性
creative_response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
temperature=0.7,
messages=[...]
)
3. 少量样本学习(Few-shot Learning)
原理:提供少量示例,展示你期望的输入输出格式。
实现方法:
1. 选择 3 - 5 个典型示例
2. 确保示例覆盖各种情况
3. 示例与指令格式一致
few_shot_prompt = """
将以下产品评论分类为正面、中性或负面:评论: "电池续航很棒,但屏幕太小"
分类: 中性
评论: "完全物有所值,强烈推荐"
分类: 正面
评论: "糟糕的客户服务体验"
分类: 负面
现在请分类这个新评论:
"相机质量一般,但操作简单"
分类:"""
response = openai.Completion.create(
model="text-davinci-003",
prompt=few_shot_prompt,
max_tokens=10
)
4. 角色设定技巧
原理:为模型指定特定角色,引导其输出风格。
实现方法:
1. 在 system 消息中定义角色
2. 描述角色的专业知识领域
3. 指定回答风格(正式、友好等)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你是一位有 10 年经验的 Python 高级工程师。用专业但易懂的方式回答问题,必要时提供代码示例。"},
{"role": "user", "content": "如何用 Python 高效处理大型 CSV 文件?"}
]
)
5. 渐进式细化
原理:通过多轮交互逐步完善结果。
实现方法:
1. 首轮获取大体框架
2. 次轮补充细节
3. 后续轮次进行微调
# 第一轮:获取大纲
outline = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "为'AI 在医疗中的应用 '文章提供大纲"}
]
)
# 第二轮:扩展第一部分
details = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "请详细展开大纲中的' 医学影像分析 '部分"}
]
)
生产环境注意事项
- 速率限制:
- 了解 API 的每分钟 / 每天请求限制
-
实现指数退避的重试机制
-
错误处理:
- 捕获 API 异常
- 设置合理的超时时间
-
记录错误信息便于调试
-
成本控制:
- 监控 token 使用量
- 设置使用预算
- 对长文本考虑分块处理
import time
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def safe_api_call(prompt):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
timeout=10 # 设置超时
)
return response
except Exception as e:
print(f"API 调用失败: {str(e)}")
raise
进阶练习
- 设计一个提示词,让模型模拟 Linux 终端,能够理解和执行类 Unix 命令
- 创建一个多轮对话系统,能记住之前对话的上下文(提示:使用对话历史)
- 构建一个提示词,从长文章中提取关键信息并生成包含 5 个要点的执行摘要
通过这些练习,你可以巩固所学的提示词工程技巧,并探索更高级的应用场景。记住,好的提示词往往需要多次迭代和测试,持续优化才能获得最佳效果。
正文完
