大模型已经不是新鲜事了,但很多人还是停留在"问一句答一句"的用法上。其实写好 Prompt 和写好代码一样,是有方法论的。这篇整理下我日常用 GPT 时总结的一些 Prompt 技巧。
Prompt 设计原则
原则一:明确且具体
模糊的 prompt 会得到模糊的回答。对比一下:
差的 prompt:
帮我写个函数
好的 prompt:
用 Go 写一个函数,输入一个字符串切片和一个目标字符串,返回目标字符串在切片中的索引,如果不存在返回 -1。不使用任何第三方库。
越具体,模型输出越接近你想要的结果。明确语言、输入输出、约束条件。
原则二:提供示例
人类学习靠例子,模型也一样。给一个输入输出的例子,模型就能快速理解你想要什么格式和风格。
请将以下技术术语翻译成中文,保留英文原文在括号中:
示例:
输入:Load Balancer
输出:负载均衡器(Load Balancer)
请翻译:
1. Circuit Breaker
2. Rate Limiting
3. Service Mesh
原则三:指定输出格式
如果你想要 JSON,就告诉模型输出 JSON;想要表格就说表格。不说清楚的话,模型可能输出一大段文字叙述。
分析以下错误日志,用 JSON 格式输出结果,包含字段:
- error_type: 错误类型
- root_cause: 根因分析
- suggestion: 修复建议
日志内容:
...
Few-shot Prompting
给模型几个完整的示例,让它学会你想要的模式,然后处理新的输入。
将用户反馈分类为:功能建议、Bug反馈、使用咨询
反馈:按钮点了没反应
分类:Bug反馈
反馈:能不能加个夜间模式
分类:功能建议
反馈:怎么修改密码
分类:使用咨询
反馈:上传图片总是失败
分类:
Few-shot 的效果通常比单纯的指令好很多,特别是分类、格式化这类任务。
Chain-of-Thought(思维链)
让模型一步步推理,而不是直接给答案。特别适合数学计算、逻辑推理和复杂分析。
一个商品原价 200 元,先打 8 折,再用一张满 100 减 20 的优惠券。最终价格是多少?
请一步步计算:
模型会输出:
- 原价 200 元,打 8 折:200 × 0.8 = 160 元
- 160 元 > 100 元,满足满减条件:160 - 20 = 140 元
- 最终价格:140 元
如果不加"请一步步计算",模型可能直接说"最终价格是 140 元",有时候甚至算错。让它展示推理过程,准确率会高很多。
角色设定
给模型一个角色,可以让输出更有针对性:
你是一个有10年经验的 Go 后端工程师。
请 review 以下代码,重点关注并发安全和错误处理:
[代码]
相比没有角色设定的 prompt,模型的 review 会更专业、更有深度。
常用角色:
- "你是一个资深的XX工程师"——做 code review
- "你是一个技术文档撰写专家"——写文档
- "你是一个产品经理"——写需求文档
- "你是一个面试官"——准备面试题
输出格式控制
JSON 输出
请用 JSON 格式返回结果,严格遵循以下 schema:
{
"name": "string",
"age": "number",
"skills": ["string"]
}
GPT-4 几乎总能给出合法的 JSON。GPT-3.5 偶尔会多出一些解释文字,加上"只输出 JSON,不要其他内容"可以缓解。
Markdown 输出
请用 Markdown 格式输出,包含:
- 一级标题作为主题
- 二级标题作为各章节
- 代码用代码块包裹
- 要点用无序列表
表格输出
请用 Markdown 表格对比 MySQL 和 PostgreSQL 的以下特性:
事务隔离级别、JSON 支持、全文搜索、扩展性、许可证
温度参数选择
温度(temperature)控制输出的随机性:
- temperature=0:最确定性的输出,适合代码生成、数据提取、分类任务
- temperature=0.3-0.5:轻微随机性,适合技术文档、翻译
- temperature=0.7-1.0:较高随机性,适合创意写作、头脑风暴
我的习惯是:写代码和做分析用 0,写文案用 0.7。
常见技巧
1. 分隔符隔离内容
用清晰的分隔符把指令和内容分开,避免模型把内容当成指令执行(prompt injection):
请总结以下文章的核心观点(3个要点):
---
[文章内容]
---
2. 否定指令不如正面指令
# 不推荐
不要用复杂的语法
# 推荐
请使用简单直白的语法,初中生也能看懂
模型对正面描述的遵循度比否定描述高。
3. 限定长度
用不超过 100 字总结以下内容
不限制的话,模型可能输出几百字。
4. 让模型说"不知道"
如果你不确定答案,请回复"我无法确定",不要编造信息。
减少幻觉(hallucination)的一个简单方法。
5. 迭代优化
Prompt 很少一次就完美。我的流程是:
- 先写一版简单的 prompt
- 看输出哪里不满意
- 针对性地加约束或示例
- 重复直到满意
工程实践中,好的 prompt 往往比好的模型更重要。同样是 GPT-3.5,精心设计的 prompt 效果可能比随便写的 GPT-4 prompt 还好。值得花时间打磨。