Prompt Engineering:提示词工程
提示词(Prompt)是引导大模型按照特定意图生成输出的输入指令。提示词工程是通过设计和优化提示词,使大模型更准确、可控地产生所需输出的技术。
提示词的核心构成
系统提示词(System Prompt)
定义模型的身份、角色和行为准则,是 Agent 的"人格设定"。
你是一位专业的软件工程师助手。
- 回答要准确、简洁,优先给出可运行的代码
- 遇到不确定的问题要诚实说明
- 优先考虑代码质量和安全性
- 使用中文进行交流
系统提示词的作用:
- 设定角色与专业领域
- 定义输出格式与风格
- 建立行为边界与约束
- 注入领域知识与规则
用户提示词(User Prompt)
用户的具体任务指令,是 Agent 的"工作内容"。
帮我实现一个 Python 函数,输入是一个整数列表,返回列表中的所有偶数。
要求:
1. 使用列表推导式实现
2. 包含类型注解
3. 附上简单的使用示例
经典提示词结构模板
【角色设定】→ 明确身份与专业领域
【背景信息】→ 提供必要的上下文
【任务目标】→ 清晰说明要做什么
【输出要求】→ 格式、长度、风格约束
【示例参考】→ 给出期望的输出范例
提示词设计的核心原则
1. 明确性原则
❌ 不好的提示:
帮我优化一下这段代码。
✅ 好的提示:
帮我优化以下 Python 函数,目标是:
1. 提升运行性能(当前处理 100 万数据需要 5 秒)
2. 增加类型注解
3. 添加适当的错误处理
4. 保留原有的业务逻辑不变
函数代码:
[代码片段]
2. 结构化原则
使用清晰的层级和分隔,让模型更容易理解指令。
任务:分析用户反馈并生成回复
### 输入
用户反馈:[内容]
### 分析维度
1. 情感倾向(正面/中性/负面)
2. 核心问题点
3. 用户期望
### 回复要求
- 语气:专业、诚恳
- 长度:100-200 字
- 必须包含:致歉 + 解决方案 + 后续跟进
3. 渐进式原则
复杂任务分步骤引导,而不是一次性给出所有指令。
第一步:先理解这个需求的核心目标是什么?
第二步:分析可能的技术方案有哪些?
第三步:评估各方案的优缺点?
第四步:给出最终的实现建议。
4. 示例驱动原则
提供示例比抽象描述更有效。
将用户提问转换为数据库查询:
示例 1:
输入:上个月销售额最高的 5 个产品
输出:SELECT product, SUM(amount) as total
FROM sales
WHERE date >= '2024-04-01'
GROUP BY product
ORDER BY total DESC
LIMIT 5
示例 2:
输入:[用户新的查询]
输出:[模型生成的 SQL]
高级提示词技术
思维链(Chain-of-Thought, CoT)
引导模型"大声思考",逐步推理。
请一步步解决这个问题,先给出你的思考过程,再给出最终答案。
问题:一个水池有两个进水管 A 和 B,单开 A 管 6 小时可以注满,单开 B 管 8 小时可以注满。
如果同时打开两个水管,多长时间可以注满?
效果:
- 提升复杂推理任务的准确率
- 让模型的决策过程可解释
- 便于发现和修正错误
少样本学习(Few-Shot Learning)
在提示词中提供少量示例,让模型"看懂"任务要求。
Few-shot 的双重价值:在提示词中注入少量"答案的标准"示例,既能显著提升输出质量,又能有效约束模型按期望的格式输出。Few-shot 既是在教任务,更是在锁格式——这也是它在工程中被高频使用的原因。
将自然语言转换为正则表达式:
示例 1:
输 入:匹配邮箱地址
输出:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
示例 2:
输入:匹配中国大陆手机号
输出:^1[3-9]\d{9}$
输入:匹配 6-20 位的密码,包含字母和数字
输出:
自我一致性(Self-Consistency)
让模型多次回答同一问题,然后选择出现次数最多的答案。
对这个问题,从 3 个不同的角度分别思考,给出 3 个独立的分析过程,