提示词工程最佳实践
概述
提示词工程(Prompt Engineering)是通过设计和优化输入提示词,引导大语言模型(LLM)生成高质量、符合预期的输出的技术。良好的提示词设计是 AI 应用成功的关键。
提示词基本结构
标准格式
markdown1# 角色设定 2你是[专业角色],具备[相关经验/能力]。 3 4# 任务描述 5请完成以下任务:[具体任务] 6 7# 输入数据 8[需要处理的内容] 9 10# 约束条件 11- 条件1 12- 条件2 13- ... 14 15# 输出格式 16请以[格式]输出,包含以下要素: 171. 要素A 182. 要素B 193. ...
示例:产品文案生成
markdown1## 角色 2你是一位资深的电商文案策划专家,拥有10年文案撰写经验,擅长挖掘产品卖点并转化为吸引人的文案。 3 4## 任务 5为以下产品撰写一则朋友圈推广文案。 6 7## 产品信息 8- 产品名称:智能颈椎按摩仪 9- 核心功能:热敷+脉冲按摩+APP控制 10- 目标人群:25-40岁办公室白领 11- 价格区间:299-399元 12- 卖点:15分钟快速缓解疲劳、静音设计、便携可折叠 13 14## 要求 151. 开头要有吸引力,3秒内抓住注意力 162. 突出解决的具体痛点 173. 加入社会认同元素(如销量、好评) 184. 结尾有明确的行动号召 195. 字数控制在150字以内 206. 语气亲切自然,避免过度营销感 21 22## 输出格式 23直接输出文案内容,不需要额外解释。
核心技巧
1. 角色设定(Role Prompting)
通过设定专业角色,激活模型的领域知识:
markdown1❌ 一般:"写一篇关于糖尿病的文章" 2 3✅ 优化:"你是一位内分泌科主任医师,拥有20年临床经验。请用通俗语言向糖尿病患者解释血糖控制的重要性,包括: 41. 血糖失控的危害 52. 日常监测要点 63. 饮食控制原则 7要求:专业准确但易懂,语气亲切关怀。"
2. 思维链(Chain-of-Thought)
引导模型展示推理过程,提升复杂任务准确率:
markdown1请解答以下数学问题,并展示详细的推理步骤: 2 3问题:一个水箱有2个进水管和1个排水管。A管单独注满需要6小时,B管单独注满需要4小时,排水管单独排空需要8小时。如果三管同时打开,需要多久注满水箱? 4 5思考过程: 61. 首先,我需要计算每个管子的工作效率... 72. 然后,计算三管同时工作时的净效率... 83. 最后,根据净效率计算注满时间... 9 10请按以上思路详细解答。
3. 少样本学习(Few-Shot Learning)
通过示例教模型理解任务模式:
json1将以下用户评论转换为结构化数据。 2 3示例1: 4输入:"这款耳机音质很好,但是佩戴不舒服,戴久了耳朵疼。价格299有点贵。" 5输出: 6{ 7 "sentiment": "mixed", 8 "pros": ["音质好"], 9 "cons": ["佩戴不舒适", "价格高"], 10 "price_mentioned": 299, 11 "purchase_intent": "neutral" 12} 13 14示例2: 15输入:"太棒了!物流超快,昨天买今天到。手机拍照效果惊艳,完全超出预期!" 16输出: 17{ 18 "sentiment": "positive", 19 "pros": ["物流快", "拍照效果好"], 20 "cons": [], 21 "price_mentioned": null, 22 "purchase_intent": "high" 23} 24 25现在请处理: 26输入:"用了三天就坏了,客服态度还差,退款流程繁琐。再也不买了。" 27输出:
4. 输出格式控制
使用结构化格式规范输出:
json1# JSON 格式 2请以JSON格式返回,包含以下字段: 3{ 4 "title": "文章标题(字符串)", 5 "summary": "摘要(50字以内)", 6 "keywords": ["关键词数组"], 7 "content": "正文内容(Markdown格式)", 8 "confidence": 置信度(0-1浮点数) 9} 10 11# Markdown 表格 12请以表格形式对比以下方案: 13| 方案 | 优点 | 缺点 | 适用场景 | 成本 | 14|------|------|------|----------|------| 15| ... | ... | ... | ... | ... | 16 17# 代码格式 18请提供Python代码实现,要求: 191. 包含类型注解 202. 添加docstring 213. 包含3个unittest测试用例
高级技巧
1. 自我一致性(Self-Consistency)
对同一问题多次采样,选择最一致的答案:
python1from collections import Counter 2 3def self_consistency_prompt(question, n_samples=5): 4 answers = [] 5 for _ in range(n_samples): 6 response = llm.generate( 7 f"{question}\n请一步步思考并给出答案。", 8 temperature=0.7 9 ) 10 answers.append(extract_answer(response)) 11 12 # 投票选择最常见的答案 13 return Counter(answers).most_common(1)[0][0]
2. 递归提示(Recursive Prompting)
将复杂任务分解为子任务:
markdown1# 主任务:撰写技术文档 2步骤1:请先列出本文档应该包含的章节大纲 3步骤2:针对每个章节,简要说明应该覆盖的核心内容 4步骤3:基于以上大纲,撰写第一章的详细内容 5步骤4:检查第一章内容,确保包含所有要点 6步骤5:继续撰写下一章... 7 8当前执行:步骤1
3. 对抗性提示(Adversarial Prompting)
让模型自我检查和改进:
markdown1请完成以下翻译任务: 2 3原文:The quick brown fox jumps over the lazy dog. 4 5步骤1:直接翻译 6步骤2:检查翻译的准确性、流畅度 7步骤3:识别可能的问题 8步骤4:基于检查改进翻译 9步骤5:输出最终版本 10 11请按以上步骤执行。
4. 多模态提示
结合文本和图像的提示:
markdown1分析以下UI设计图,并给出改进建议: 2 3[图片] 4 5请从以下维度分析: 61. 视觉层次:信息层级是否清晰? 72. 色彩运用:配色是否协调?是否符合品牌调性? 83. 布局合理性:元素间距、对齐方式 94. 可用性:交互元素是否易于识别和操作? 105. 改进建议:给出3-5条具体优化建议 11 12输出格式: 13## 整体评价 14[总体评价] 15 16## 详细分析 17### 1. 视觉层次 18[分析内容] 19 20### 2. 色彩运用 21[分析内容] 22... 23 24## 改进建议 251. [建议1] 262. [建议2] 27...
场景化模板
场景1:代码生成
markdown1你是一位{语言}开发专家。请编写代码实现以下功能: 2 3功能描述: 4{功能详细描述} 5 6要求: 7- 遵循{代码规范} 8- 包含完整的错误处理 9- 添加详细的注释 10- 时间复杂度控制在{要求} 11- 提供3个测试用例 12 13输入示例: 14{示例输入} 15 16预期输出: 17{示例输出} 18 19请只返回代码,不要包含解释。
场景2:数据分析报告
markdown1你是一位数据分析师。请基于以下数据生成分析报告。 2 3数据: 4{数据内容} 5 6分析维度: 71. 趋势分析:关键指标的变化趋势 82. 异常检测:指出异常数据点及可能原因 93. 相关性分析:各指标间的关联关系 104. 业务洞察:3-5条可落地的业务建议 11 12输出要求: 13- 使用专业但易懂的语言 14- 关键数据需要标注 15- 适当使用图表描述(以Markdown表格呈现) 16- 报告控制在1000字以内
场景3:客户服务回复
markdown1你是一位客服专员,负责处理客户咨询。请根据以下信息回复客户。 2 3客户信息: 4- 姓名:{客户名} 5- 会员等级:{等级} 6- 历史订单:{订单数}笔 7 8客户问题: 9{问题内容} 10 11相关知识: 12{知识库内容} 13 14回复要求: 151. 称呼客户姓名 162. 先表达理解和共情 173. 清晰解答问题 184. 如涉及问题,提供解决方案 195. 结尾询问是否还有其他需要帮助 206. 整体语气:{语气要求} 21 22回复字数:150-200字
调试与优化
1. A/B 测试框架
python1def test_prompt_variants(task, variants, eval_criteria): 2 results = [] 3 for name, prompt in variants.items(): 4 output = llm.generate(prompt.format(task=task)) 5 score = eval_criteria(output) 6 results.append({ 7 "variant": name, 8 "output": output, 9 "score": score 10 }) 11 return sorted(results, key=lambda x: x["score"], reverse=True) 12 13# 使用示例 14variants = { 15 "v1": "翻译以下内容为中文:{task}", 16 "v2": "你是专业翻译,请将以下内容翻译成地道的中文:{task}", 17 "v3": "请将以下英文翻译成中文,要求:\n1. 准确传达原意\n2. 符合中文表达习惯\n3. 保持专业术语一致\n\n内容:{task}" 18} 19 20def eval_translation(output): 21 # 使用BLEU score或其他指标评估 22 pass 23 24best = test_prompt_variants("Hello world", variants, eval_translation)
2. 提示词版本管理
yaml1# prompts.yaml 2version: "1.2.0" 3prompts: 4 customer_service: 5 name: "客户服务回复" 6 template: | 7 你是一位{role}... 8 parameters: 9 role: 10 type: string 11 default: "资深客服专员" 12 examples: 13 - input: "我想退货" 14 expected_output: "..." 15 metrics: 16 - response_time 17 - satisfaction_score
3. 常见错误与解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 输出过长 | 未限制长度 | 明确指定字数限制 |
| 格式不符 | 格式描述不清 | 提供输出示例 |
| 回答偏离 | 任务描述模糊 | 细化任务要求 |
| 创意不足 | 温度设置过低 | 提高 temperature |
| 出现幻觉 | 缺乏约束 | 增加"基于提供信息"等约束 |
工具推荐
提示词开发工具
- LangSmith: OpenAI 出品的提示词调试平台
- PromptLayer: 提示词版本管理与性能追踪
- Weight & Biases: 机器学习实验追踪,支持提示词优化
- Pezzo: 开源提示词管理和优化平台
提示词库
- Prompt Engineering Guide: https://www.promptingguide.ai/
- Awesome ChatGPT Prompts: GitHub 上的提示词合集
- FlowGPT: 社区驱动的提示词分享平台
安全与伦理
1. 提示注入防护
python1def sanitize_input(user_input): 2 # 移除潜在的注入指令 3 dangerous_patterns = [ 4 r"ignore previous instructions", 5 r"disregard (the|your) (prompt|instructions)", 6 r"system prompt", 7 r"you are now", 8 ] 9 10 for pattern in dangerous_patterns: 11 if re.search(pattern, user_input, re.IGNORECASE): 12 raise ValueError("Potential prompt injection detected") 13 14 return user_input
2. 输出过滤
python1from transformers import pipeline 2 3# 内容安全检查 4safety_checker = pipeline("text-classification", model="distilbert-base-unsafe") 5 6def check_safety(text): 7 result = safety_checker(text)[0] 8 if result["label"] == "UNSAFE" and result["score"] > 0.8: 9 return False, "Content flagged as potentially unsafe" 10 return True, text
总结
提示词工程是一门结合语言学、心理学和工程学的艺术。核心原则:
- 清晰明确: 避免模糊表述,使用具体指令
- 结构完整: 包含角色、任务、约束、格式等要素
- 迭代优化: 基于反馈持续改进
- 安全可控: 防范提示注入,确保输出合规
掌握这些技巧,可以显著提升 AI 应用的效果和用户体验。
如需专业支持,请联系我们:
- 邮箱:c@m9ai.work
- 官网:https://m9ai.work