「学习笔记」大模型提示工程(Prompt Engineering)

文章目录

1. 核心概念

  • 提示工程:通过精心设计输入文本(提示词)来引导大语言模型(LLM)产生期望输出的技术与实践。
  • 核心思想:将任务要求转化为LLM能理解的指令和上下文,引导模型的预测朝着我们期望的方向进行。

1.2 为什么需要提示工程?

  • LLM具有强大能力但需要正确引导
  • 同样的模型,不同的提示会产生截然不同的结果
  • 成本效益:好的提示可以减少API调用次数和token消耗
  • 可控性:使输出更符合业务需求和安全规范

2. 提示工程核心原则

2.1 清晰明确原则

指令必须直接、无歧义。避免模糊的表述。

  • 具体化:避免模糊描述,明确任务目标。
  • 结构化:使用清晰的格式(如列表、步骤)。
  • 示例:
    • :“写点关于AI的东西”
    • :“写一篇800字的科普文章,介绍生成式AI在医疗诊断中的应用,包括三个实际案例”

2.2 提供上下文原则

给予完成任务所需的背景信息。模型没有“常识”,你需要告诉它角色、目标、格式等。

  • 背景信息:提供必要的领域知识和约束条件
  • 角色设定:给模型分配特定角色(如专家、助手、创作者)
  • 格式要求:明确输出格式(JSON、Markdown、纯文本等)

2.3 迭代优化原则

提示工程是迭代过程

  • 基于模型反馈调整提示
  • A/B测试不同提示版本

2.4 分解复杂任务

将大任务拆解成模型易于处理的子步骤(即思维链)。

2.5 提供示例

少样本学习是强大的工具。通过给出1-3个输入-输出示例,能极大地校准模型的输出格式和风格。

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. 高级提示技术

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. 结构化提示模板

5.1 角色-任务-格式模板

[角色]
你是一位经验丰富的[领域]专家

[任务]
请完成以下任务:[具体任务描述]

[约束条件]
- 输出长度不超过500字
- 使用专业但易懂的语言
- 包含3个关键要点

[格式要求]
使用Markdown格式,包含标题和项目符号列表

5.2 CRISPE提示框架

  • Capacity and Role(能力和角色)
  • Insight(背景信息)
  • Statement(任务陈述)
  • Personality(风格个性)
  • Experiment(期望输出格式)

5.3 ELI5模板

请用简单的语言解释[复杂概念],就像向一个5岁孩子说明一样。使用类比和日常生活中的例子。

6. 领域特定提示技巧

6.1 创意写作

  • 提供风格参考(如模仿某作家)
  • 设定情感基调
  • 使用图像化语言提示
以海明威简洁有力的风格,写一段关于独自航海的故事。重点描写海上的孤独感和与大自然的对抗。

6.2 代码生成

  • 明确输入输出格式
  • 指定编程语言和版本
  • 包含边界条件处理
用Python编写一个函数,接收整数列表,返回所有偶数平方的和。如果列表为空,返回0。包含类型注释和测试用例。

6.3 数据分析

  • 明确分析目标
  • 指定数据格式
  • 要求可视化建议
分析以下销售数据,找出:
1. 月度增长趋势
2. 最畅销的产品类别
3. 客户购买模式

数据格式:CSV,包含日期、产品、数量、金额字段

6.4 学术研究

  • 要求引用格式
  • 区分事实和观点
  • 明确理论框架
以APA格式撰写关于机器学习公平性的文献综述,涵盖2018-2023年的关键研究。区分不同学派观点,最后提出研究空白。

7. 提示优化策略

  1. 分解复杂任务

    • 将大任务拆分为子任务
    • 使用多轮对话分步解决
    • 中间结果验证
  2. 控制输出长度

    • 明确token或字数限制
    • 使用"用一句话概括"等指令
    • 分点列举而非长篇大论
  3. 温度参数调整

    • 低温度(0.1-0.3):确定性高,适合事实性任务
    • 中等温度(0.5-0.7):平衡创意和一致性
    • 高温度(0.8-1.0):创意性强,适合头脑风暴
  4. 避免常见陷阱

    • 模棱两可:明确而非开放-ended
    • 过度约束:在指导性和灵活性间平衡
    • 假设共享知识:不要假设模型知道你的特定上下文

8. 评估提示效果

  1. 定量指标

    • 任务完成度
    • 输出相关性
    • 事实准确性
    • 响应时间/token消耗
  2. 定性评估

    • 语言流畅性
    • 逻辑连贯性
    • 创意新颖性
    • 实用性
  3. A/B测试方法

    • 创建提示变体
    • 相同输入对比输出
    • 人工或自动化评估

9. 实用工具与资源

  1. 提示IDE/试验场
    • OpenAI Playground: 用于GPT系列模型的试验和测试。
    • Claude Console: 用于Anthropic模型的试验。
    • Prompt IDE: 一些第三方工具(如Cursor IDE内置的提示管理)。
  2. 提示模板库
    • OpenAI Cookbook: 丰富的官方示例和最佳实践。
    • LearnPrompting.org: 优秀的免费学习网站和课程。
    • Awesome-Prompt-Engineering: GitHub上的资源列表。
    • PromptPerfectPromptHero: 提示库和优化工具。
  3. 框架与库
    • LangChain / LlamaIndex: 用于构建复杂LLM应用的框架,内置许多提示模板和管理工具(包括提示管理和链式调用)。
    • Guidance / LMQL: 允许使用更编程化的方式控制LLM输出的语言。
  4. 学习与社区资源
    • Prompt Engineering Guide: 详细的提示工程指南。
    • Reddit r/PromptEngineering: 专门的提示工程讨论社区。
    • Discord AI社区: 各类AI相关的讨论群组。

总结

  • 根本目标最大限度地激发和利用大模型已有的知识与能力,而不是教它新东西。
  • 核心过程明确任务 -> 设计初始提示 -> 测试评估 -> 分析迭代 -> 固化模板
  • 心态: 像在指导一位极其聪明但需要明确指引、且偶尔会“自由发挥”的实习生或专家。你需要清晰地交代背景、任务、格式,并检查其工作。
  • 未来趋势: 随着模型本身越来越智能和遵循指令,基础提示工程的重要性可能会下降,但对于构建可靠、可控、高性能的生产级应用,精细化的提示设计、系统架构(如RAG、Agents)与工作流程管理将变得更加关键。

一句话概括提示工程:通过最有效的“沟通方式”,让AI理解你的意图,并发挥出它的最大潜力

END .

相关系列文章

×