一文吃透 Prompt:定义、设计与调优全指南(附流程图+实战代码)
想让大模型输出高质量结果,Prompt 才是真正的“隐藏技能”。本文从零讲起,涵盖 Prompt 的核心要素、设计原则、调优方法,并给出可直接复用的代码与模板。
1. 什么是 Prompt?
Prompt(提示词)是用户输入给大语言模型(LLM)的自然语言指令,用于引导模型生成特定格式、风格和内容的回答。
简单理解:Prompt 就是你与大模型沟通的语言——你问得越清晰、越有结构,模型回答就越精准。
1.1 Prompt 的组成要素
一个完整的 Prompt 通常包含以下几个部分(可灵活组合):
| 要素 | 说明 | 示例 |
|---|---|---|
| 指令 | 明确要求模型做什么 | “翻译成英文”、“总结下面这段话” |
| 上下文 | 提供背景信息或参考内容 | “用户昨天买了iPhone,今天问退货政策…” |
| 输入数据 | 需要模型处理的具体内容 | 一段长文本、一个表格、一组数字 |
| 输出格式 | 指定回答的结构 | “用JSON格式输出”、“分三步列出” |
| 示例(Few-shot) | 给 1~3 个输入输出对,让模型模仿 | 用户:“天气如何?” 助手:“今天晴天,25℃。” |
| 约束 | 限制行为 | “如果不知道答案,请说‘无法确定’,不要编造” |
1.2 Prompt 的作用
- 控制输出质量:好的 Prompt 大幅降低幻觉,提升准确性。
- 塑造风格与角色:让模型扮演“老师”、“律师”、“幽默的朋友”。
- 实现复杂任务:链式推理(CoT)、代码生成、数据提取等。
2. Prompt 设计:从“能跑”到“优秀”的 6 条黄金法则
2.1 设计流程概览
2.2 六大设计原则
① 指令清晰、避免歧义
- ❌ “写一段关于AI的文字” → 太宽泛。
- ✅ “用 50 字解释什么是监督学习,面向初中生读者,举一个猫分类的例子。”
② 使用分隔符明确边界
建议使用###、"""、<tag>等将指令、上下文、输入隔开。
### 指令 ### 将下面的英文翻译成中文,并保持专业术语准确。 ### 输入 ### The prompt design is crucial for large language models. ### 输出 ###③ 提供示例(Few-shot)提升稳定性
示例能让模型学会“输出格式”和“推理方式”。
请仿照以下示例,将问题分类为【技术】/【产品】/【其他】。 示例1: 问题:OpenAI GPT-4 有多少参数? 分类:技术 示例2: 问题:ChatGPT Plus 每月费用多少? 分类:产品 真实问题: 问题:DALL·E 3 和 Midjourney 哪个更擅长画人像? 分类:④ 指定输出格式
直接要求 JSON、Markdown、列表、代码块等。
请列出三个提高睡眠质量的建议。以JSON数组格式输出,每个元素包含“title”和“description”。⑤ 引导模型“思考” – 思维链(Chain-of-Thought, CoT)
对于复杂推理,强制模型输出中间步骤。
问题:小明有 5 个苹果,给了小红 2 个,然后又买了 3 倍于现在数量的苹果。请问他现在有多少个苹果? 请一步一步推理,最后输出答案。⑥ 处理不确定性 – 设置“拒绝回答”机制
防止幻觉。
如果下面提供的信息不足以回答问题,请直接回复“根据现有信息无法回答”。不要编造任何内容。3. Prompt 调优:如何系统性地提升效果?
调优是一个实验→评估→修正的闭环过程。
3.1 调优的核心维度
| 维度 | 调优方法 |
|---|---|
| 指令精确性 | 去掉模糊词(“大概”、“一些”);改用具体数字或条件 |
| 示例选择 | 选择边缘案例、代表性案例;示例数量一般 2~5 个 |
| 角色设定 | 增加“你是一名资深架构师”、“请用冷静客观的语气” |
| 负向约束 | “不要列出超过 3 条”、“禁止使用专业术语” |
| 模型参数 | 降低temperature(0~0.3)提高稳定性;top_p可配合调整 |
3.2 实战技巧:从差到好的例子对比
场景:从简历中提取技能列表(输出 JSON)
差 Prompt:
提取技能。
中等 Prompt:
从下面的简历文本中提取所有技能,用 JSON 数组输出。
优秀 Prompt:
### 角色 ### 你是一名资深的 HR 助理。 ### 任务 ### 从简历中提取【专业技能】和【软技能】两类。 ### 输出格式 ### {"hard_skills": [...], "soft_skills": [...]} ### 约束 ### - 每个技能用 2-4 个字的短语 - 不重复提取 - 如果没有某类技能,输出空数组 ### 简历文本 ### {resume_content}3.3 自动调优工具推荐
- LangSmith:追踪 Prompt 版本,对比输出。
- PromptPerfect:自动优化 Prompt 文本。
- DSPy:用编程方式声明 Prompt 并自动调优。
- 简单的本地脚本:保留测试集,批量运行,计算准确率。
3.4 评估指标
| 指标 | 说明 | 适用场景 |
|---|---|---|
| 准确性 | 答案是否与标准答案一致 | 分类、提取 |
| 格式符合度 | JSON/列表格式正确 | 所有结构化输出 |
| 幻觉率 | 编造不存在的信息 | 知识问答 |
| 一致性 | 多次运行结果稳定 | 所有场景 |
4. 代码实战:使用 OpenAI API 对比不同 Prompt 的效果
importopenai openai.api_key="your-key"defask(prompt,temperature=0.0):response=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":prompt}],temperature=temperature)returnresponse.choices[0].message.content# 测试 Prompt 1:简单指令prompt_bad="介绍一下 Python 中的装饰器。"print("【简单Prompt输出】\n",ask(prompt_bad))# 测试 Prompt 2:结构化 + 格式约束prompt_good=""" ### 角色 ### 你是一位 Python 高级讲师。 ### 任务 ### 用三个要点解释“装饰器”,并给出一段示例代码。要求: 1. 每个要点不超过 30 字。 2. 代码需要包含 `@` 语法的实际示例。 3. 最后用一句话说明装饰器的常见应用场景。 ### 输出格式 ### **要点:** 1. ... 2. ... 3. ... **代码:** ... **应用场景:** ... """print("\n【结构化Prompt输出】\n",ask(prompt_good))💡 实际运行你会发现:结构化 Prompt 输出更一致、更易解析,且不产生冗余内容。
5. 常见误区与避坑指南
| 误区 | 正确做法 |
|---|---|
| Prompt 越短越好 | 长度不是关键,信息密度和清晰度才重要 |
| 一次性给出完美 Prompt | 接受迭代优化,逐步改进 |
| 忽略模型版本差异 | GPT-4 与 GPT-3.5 对同样 Prompt 反应不同;建议分别调优 |
| 不用测试集 | 主观判断往往有偏差,必须用固定测试集评估 |
| 把所有指令塞进一个 Prompt | 复杂任务可拆分为多步(如先提取再分类) |
6. 总结与思维导图
核心要点回顾
- Prompt = 控制 LLM 的“编程语言”,好坏直接决定输出质量。
- 设计阶段:明确指令 → 提供示例 → 约束格式 → 拒绝幻觉。
- 调优阶段:建立测试集 → 对比实验 → 调整指令/参数 → 评估迭代。
- 终极心法:没有“万能 Prompt”,只有“最适合你的任务 + 模型版本”的 Prompt。