「学习笔记」大模型提示工程(Prompt Engineering)
文章目录
一、核心概念
- 提示工程:通过精心设计输入文本(提示词)来引导大语言模型(LLM)产生期望输出的技术与实践
- 核心思想:将任务要求转化为 LLM 能理解的指令和上下文,引导模型的预测朝着期望的方向进行
1.1 为什么需要提示工程?
- LLM 具有强大能力但需要正确引导
- 同样的模型,不同的提示会产生截然不同的结果
- 成本效益:好的提示可以减少 API 调用次数和 token 消耗
- 可控性:使输出更符合业务需求和安全规范
二、提示工程核心原则
2.1 清晰明确原则
指令必须直接、无歧义,避免模糊表述:
- 具体化:避免模糊描述,明确任务目标
- 结构化:使用清晰的格式(如列表、步骤)
示例:
- 差:“写点关于 AI 的东西”
- 好:“写一篇 800 字的科普文章,介绍生成式 AI 在医疗诊断中的应用,包括三个实际案例”
2.2 提供上下文原则
给予完成任务所需的背景信息。模型没有“常识”,需要告诉它角色、目标、格式等:
- 背景信息:提供必要的领域知识和约束条件
- 角色设定:给模型分配特定角色(如专家、助手、创作者)
- 格式要求:明确输出格式(JSON、Markdown、纯文本等)
2.3 迭代优化原则
提示工程是迭代过程:
- 基于模型反馈调整提示
- A/B 测试不同提示版本
2.4 分解复杂任务
将大任务拆解成模型易于处理的子步骤(即思维链)
2.5 提供示例
少样本学习是强大的工具。通过给出 1-3 个输入-输出示例,能极大地校准模型的输出格式和风格
三、基本提示技术
3.1 零样本提示(Zero-Shot Prompting)
- 不提供示例,直接给出指令
- 适用于简单、通用任务
将这句话翻译成法语:'Hello, how are you?'
3.2 少样本提示(Few-Shot Prompting)
- 提供少量(通常 1-5 个)示例作为参考
- 适用于复杂或风格特定的任务
示例1:
输入:"这部电影令人失望"
输出:{"sentiment": "negative", "confidence": 0.9}
示例2:
输入:"水的化学式是什么?"
输出:"H₂O"
3.3 思维链提示(Chain-of-Thought, CoT)
- 引导模型展示推理过程
- 提高复杂问题的准确性
问题:小明有5个苹果,给了小红2个,又买了3个,现在有几个?请一步步思考。
让我们一步步思考:
1. 最初有5个苹果
2. 给小红2个后:5 - 2 = 3个
3. 买了3个后:3 + 3 = 6个
所以答案是:6
四、高级提示技术
4.1 自洽性(Self-Consistency)
- 对于需要高准确度的任务,让模型生成多个答案(或推理路径),然后选择其中最一致或最合理的那个
- 提高数学和逻辑问题的准确性
4.2 生成知识提示(Generated Knowledge Prompting)
- 先让模型生成相关知识,再基于这些知识回答问题
步骤1:列出关于气候变化对农业影响的5个关键点
步骤2:基于以上关键点,提出3项农业适应策略
4.3 定向刺激提示(Directional Stimulus Prompting)
- 提供关键词或短语引导模型思考方向
关键词:创新、可持续发展、技术融合
请基于这些关键词,写一段关于未来城市的描述。
4.4 ReAct 框架(Reason + Act)
- 结合推理和行动(如搜索、计算)
- 格式:Thought → Action → Observation → Answer
Thought: 我需要查找2023年诺贝尔经济学奖得主
Action: 搜索[2023诺贝尔经济学奖]
Observation: 克劳迪娅·戈尔丁获奖
Answer: 2023年诺贝尔经济学奖得主是克劳迪娅·戈尔丁
五、结构化提示模板
5.1 角色-任务-格式模板
[角色]
你是一位经验丰富的[领域]专家
[任务]
请完成以下任务:[具体任务描述]
[约束条件]
- 输出长度不超过 500 字
- 使用专业但易懂的语言
- 包含 3 个关键要点
[格式要求]
使用 Markdown 格式,包含标题和项目符号列表
5.2 CRISPE 提示框架
- Capacity and Role(能力和角色)
- Insight(背景信息)
- Statement(任务陈述)
- Personality(风格个性)
- Experiment(期望输出格式)
5.3 ELI5 模板
请用简单的语言解释[复杂概念],就像向一个 5 岁孩子说明一样。使用类比和日常生活中的例子。
六、领域特定提示技巧
6.1 创意写作
- 提供风格参考(如模仿某作家)
- 设定情感基调
- 使用图像化语言提示
以海明威简洁有力的风格,写一段关于独自航海的故事。重点描写海上的孤独感和与大自然的对抗。
6.2 代码生成
- 明确输入输出格式
- 指定编程语言和版本
- 包含边界条件处理
用 Python 编写一个函数,接收整数列表,返回所有偶数平方的和。如果列表为空,返回 0。包含类型注释和测试用例。
6.3 数据分析
- 明确分析目标
- 指定数据格式
- 要求可视化建议
分析以下销售数据,找出:
1. 月度增长趋势
2. 最畅销的产品类别
3. 客户购买模式
数据格式:CSV,包含日期、产品、数量、金额字段
6.4 学术研究
- 要求引用格式
- 区分事实和观点
- 明确理论框架
以 APA 格式撰写关于机器学习公平性的文献综述,涵盖 2018-2023 年的关键研究。区分不同学派观点,最后提出研究空白。
七、提示优化策略
7.1 分解复杂任务
- 将大任务拆分为子任务
- 使用多轮对话分步解决
- 中间结果验证
7.2 控制输出长度
- 明确 token 或字数限制
- 使用"用一句话概括"等指令
- 分点列举而非长篇大论
7.3 温度参数调整
- 低温度(0.1-0.3):确定性高,适合事实性任务
- 中等温度(0.5-0.7):平衡创意和一致性
- 高温度(0.8-1.0):创意性强,适合头脑风暴
7.4 避免常见陷阱
- 模棱两可:明确而非开放-ended
- 过度约束:在指导性和灵活性间平衡
- 假设共享知识:不要假设模型知道你的特定上下文
八、评估提示效果
8.1 定量指标
- 任务完成度
- 输出相关性
- 事实准确性
- 响应时间/token 消耗
8.2 定性评估
- 语言流畅性
- 逻辑连贯性
- 创意新颖性
- 实用性
8.3 A/B 测试方法
- 创建提示变体
- 相同输入对比输出
- 人工或自动化评估
九、实用工具与资源
9.1 提示 IDE/试验场
- OpenAI Playground:用于 GPT 系列模型的试验和测试
- Claude Console:用于 Anthropic 模型的试验
- Prompt IDE:一些第三方工具(如 Cursor IDE 内置的提示管理)
9.2 提示模板库
- OpenAI Cookbook:丰富的官方示例和最佳实践
- LearnPrompting.org:优秀的免费学习网站和课程
- Awesome-Prompt-Engineering:GitHub 上的资源列表
- PromptPerfect、PromptHero:提示库和优化工具
9.3 框架与库
- LangChain / LlamaIndex:用于构建复杂 LLM 应用的框架,内置许多提示模板和管理工具(包括提示管理和链式调用)
- Guidance / LMQL:允许使用更编程化的方式控制 LLM 输出的语言
9.4 学习与社区资源
- Prompt Engineering Guide:详细的提示工程指南
- Reddit r/PromptEngineering:专门的提示工程讨论社区
- Discord AI 社区:各类 AI 相关的讨论群组
总结
- 根本目标:最大限度地激发和利用大模型已有的知识与能力,而不是教它新东西
- 核心过程:明确任务 -> 设计初始提示 -> 测试评估 -> 分析迭代 -> 固化模板
- 心态:像在指导一位极其聪明但需要明确指引、且偶尔会“自由发挥”的实习生或专家。你需要清晰地交代背景、任务、格式,并检查其工作
- 未来趋势:随着模型本身越来越智能和遵循指令,基础提示工程的重要性可能会下降,但对于构建可靠、可控、高性能的生产级应用,精细化的提示设计、系统架构(如 RAG、Agents)与工作流程管理将变得更加关键
一句话概括提示工程:通过最有效的“沟通方式”,让 AI 理解你的意图,并发挥出它的最大潜力。
END .
相关系列文章
- 「工程实践」LangChain RAG + Agent 搭建多工具 AI 知识库问答助手系统
- 「工程实践」LangChain RAG 深度解析与实战
- 「工程实践」LangChain Agent 深度解析与实战
- 「工程实践」LangChain 入门与实战
- 「学习笔记」大模型NLP(自然语言处理)
- 「学习笔记」大模型GraphRAG(知识图谱增强检索)
- 「学习笔记」大模型 RAG(检索增强生成)
- 「学习笔记」开源向量数据库 Milvus 入门
- 「学习笔记」向量数据库(Vector Database)原理
- 「学习笔记」大模型嵌入模型(Embedding Models)
- 「学习笔记」大模型提示工程(Prompt Engineering)
- 「学习笔记」大语言模型(LLM)原理
- 「学习笔记」AI大模型基础
- 「工程实践」用 AI 编辑器(TRAE SOLO) 快速构建 3D 地球旅行足迹记录