推广 热搜: 采购方式  甲带  滤芯  气动隔膜泵  带式称重给煤机  减速机型号  无级变速机  链式给煤机  履带  减速机 

解读 Google 提示词工程最佳实践白皮书

   日期:2026-03-11 10:44:31     来源:网络整理    作者:本站编辑    评论:0    
解读 Google 提示词工程最佳实践白皮书

Prompt Engineering(提示词工程)

现在大多数 LLM 都是一个基于 Transformer Decoder-Only 架构的自回归 Token 预测引擎,它通过输入 Prompt(提示词)来触发开始进行预测。而 Prompt Engineering(提示词工程)则是设计和优化出高质量 Prompt 的一个过程,用来引导 LLM 预测出符合预期的结果。

感性的认识上,Prompt Engineering 能够让 LLM 更清晰理解用户的意图,并且返回更符合预期的结果。因此,Prompt Engineering 常被人称之为 “魔法咒语”,它是一种将人类意图转化为 LLM 执行指令的翻译艺术。

在 ChatGPT 刚发布的一年里,Prompt Engineering(提示词工程)甚至被认为是一个职业。GitHub 和各大论坛上涌现了大量的 Awesome Prompts 项目。

现如今,Prompt Engineering 已经是一个体系化的工程技术,包括以下核心技术。

LLM 输出配置

大多数 LLM API(例如 OpenAI API)都会提供各种控制 LLM 输出的配置选项,包括:输出长度控制、输出采样控制等。

OpenAI API 示例:

  response = client.chat.completions.create(      model="gpt-4",      messages=[{"role""user""content""Hello"}],      max_tokens=1000,        # 最大输出长度      temperature=0.7,        # 采样温度      top_p=1.0,              # 核采样      frequency_penalty=0,    # 频率惩罚      presence_penalty=0,     # 存在惩罚      stop=["\n""###"]      # 停止序列  )

输出长度控制

输出长度控制,即:LLM 在达到长度限制之后就会停止预测更多的 token。

这对 Agent 而言很重要,因为生成更多的 token 意味着更多的算力消耗、成本和生成时间,而且 LLM 生成有时候会特别的啰嗦,完全是无效的浪费。

长度控制参数:

  • Max Length / Max Tokens:限制生成的最大 token 数量。
  • Stop Sequences:遇到指定字符串时停止生成,如 "\n"、"###" 等。

输出采样控制

Decoder 的输出是一个基于词汇表的概率分布(Output Probabilities),表示词汇表中每个单词作为下一个输出单词的概率,并依据某种策略输出一个最可能的单词。

而这些可配置的策略就包括以下参数,它们控制如何对 Output Probabilities 进行采样,以确定下一个生成的 token 将是什么。

  1. Temperature:控制 token 选择中的随机程度,即:希望输出偏向随机性还是偏向创造性,范围在 0~10 不等。temperature 低值表示确定性高;而高值表示创造性高,可能导致更多样化或意外的结果。当 temperature==0 时,表示始终选择 Output Probabilities 最高的 token 输出。
  2. Nucleus sampling(核采样):目的与 temperature 一样,可以控制 token 选择中的随机性和多样性。区别在于 Sampling 用于将下一个 token 限制在具有最高预测概率的 tokens 当中。
    1. Top-K:采样 Output Probabilities 中最高的 K 个 tokens,范围在 1~50 不等。数值越高就越有创造性和多样性;而越低则相反。
    2. Top-P:采样累计概率不超过 top_p 数值的 tokens,范围在 0~1 不等。低值表示精确,高值表示多样。

应用场景参考

提示词的类型

根据目的和作用的不同,可以将 Prompt 分为以下几种类型,LLM API 可以认识这些 Prompt 的类型,并且执行相应的操作。

  • System Prompt:用于设置 LLM 的基本能力和总体目标,例如:翻译语言、代码编程等。这有助于 LLM 生成趋近于总体目标的内容。
  • Role Prompt:用于设置 LLM 的角色身份,例如:编程专家、医生专家等。这有助于 LLM 在特定的领域内,应用和生成与其角色领域相关的知识。
  • User Prompt:就是用户输入的原始 Prompt。
  • Context Prompt:用于携带 User 和 LLM 当前对话的上下文历史、特定细节或相关信息,让 LLM 了解对话的背景,避免 “失忆” 问题。

样本学习提示词的类型

零样本学习(Zero-shot Learning)提示词

零样本学习(Zero-shot Learning)提示词是最简单的 Prompt,日常的 ChatBot 应用场景中,默认采用的就是 Zero-shot Learning Prompt。我们只需要输入问题的描述和一些文本,供 LLM 开始处理,而不需要为一个问题附加特定的示例。

GPT-2 追求的就是 Zero-shot Learning(零样本学习),即:默认情况下不需要向 LLM 提供任何示例,仅靠指令和 LLM 预训练知识进行推理,就足以支撑通用任务处理能力。但实际上,GPT-2 已经证明了这种方式的局限性。

单样本或少样本学习(Few-shot Learning)提示词

当零样本的输出不及预期时,我们应该考虑在 Prompt 中附加 1 个或几个示例,即:单样本或少样本学习(Few-shot Learning)提示词,就是在 Prompt 中提供少量(e.g. 1~5 个)示例。

这些示例帮助 LLM 理解你的要求,并进行模仿,继而输出与示例相似的结果。当你想要引导 LLM 输出特定的数据结构或模式时,示例尤其有用。如果效果还是不及预期,那么可以考虑添加更多的示例看看。

负载推理提示词的类型

思维链提示词

一般来说,LLM 对复杂问题的理解有难度,比如需要多步推理才能解决的问题。

2022 年,Google Research 的 Jason Wei 等人发表了关于 Chain-of-Thought(CoT,思维链)的论文。研究发现,仅仅在 Prompt 里加上一句 Let's think step by step(让我们一步步思考),模型在逻辑推理任务上的表现就会暴涨(例如从 17% 的准确率飙升到 70%+)。如下图所示。

  • 论文:https://arxiv.org/pdf/2201.11903

如此简单的一句 CoT Prompt,实际上就触发了 LLM 的 “推理思考”。所以说,CoT 提示词是一种通过生成中间推理步骤来提高 LLM 推理能力的技术。但这样的步骤推理实际上还受到了采样控制参数的影响,可能表现出步骤推理的非一致性。

所以,更进一步的 CoT Prompt 是人为指定推理步骤。如下,此时由于步骤的约束可以保持更好的一致性。

  1. 原子化拆解:将复杂问题分解为不可再分的子步骤。例如 “请逐步推理:首先...其次...因此...”。
  2. 显式占位符:用占位符(例如:___)引导 LLM 思考作答。
预测未来 6 个月 AWS EC2 的 CPU/内存用量需求。基于历史数据制定扩容方案,执行以下步骤:3. **数据提取**:     - 来源:CloudWatch指标 → 关键指标名:`CPUUtilization``MemoryUsage`     - 时间范围:过去3个月,粒度:按周均值  4. **趋势计算**:     - CPU月均增长率:(本月均值 - 3月前均值)/ 3 = ___%     - 内存使用线性回归:`y = [斜率]x + [截距]` (x为月份)  5. **峰值预留**:     - 历史峰值CPU:___%(发生时间:___)→ 安全余量设置:___%     - 突发流量容忍:是否启用Auto Scaling? □是 □否  6. **实例选型**:     - 当前配置:m5.xlarge(4vCPU/16GB)     - 6个月后需求预测:CPU = __ vCPU, 内存 = __ GB → 建议型号:_____  7. **成本优化**:     - 预留实例覆盖率计算:___% → 建议新增预留实例数:___     - Spot实例适用场景:_____(如批处理任务)  

更进一步的,在复杂推理场景中,CoT + Few-shot 有助于 LLM 生成更准确的答案。 一个带有单样本学习的 CoT Prompt 如下:

# PromptQ: When my brother was 2 years old, I was double his age. Now I am 40 years old. How old is my brother? Let’s think step by step.A: When my brother was 2 years, I was 2 * 2 = 4 years old.That’s an age difference of 2 years and I am older. Now I am 40 years old, so my brother is 40 - 2 = 38 years old. The answer is 38.Q: When I was 3 years old, my partner was 3 times my age. Now,I am 20 years old. How old is my partner? Let’s think step by step.A:# OutputWhen I was 3 years old, my partner was 3 * 3 = 9 years old. That’s an age difference of 6 years and my partner is older. Now I am 20 years old, so my partner is 20 + 6 = 26 years old. The answer is 26.

小结使用 CoT Prompt 的优点如下:

  1. 适用于复杂推理场景。
  2. 可解释性:因为可以从 LLM 的 Step-by-Step 响应中查看推理步骤和每一步的执行结果。如果出现了非预期的输出,我们也能识别它。
  3. 可迁移性: CoT Prompt 对不同推理能力不同的 LLM 都适用。

另外,在一致性要求高的场景中,CoT Prompt 的 API 调用应该将 Temperature 设置为 0

思维树提示词

思维树(Tree of Thoughts,ToT)是 CoT 的变体。CoT 可以约束 LLM 的推理步骤,具有很好的输出一致性,但却缺少了多样性,ToT 则解决了这一点。

如下图所示,左边是 CoT,右边是 ToT。显然 ToT 会在每个 Step 中探索多个不同的推理路径(分支),而不仅仅是遵循单一的线性 CoT。这一特性使得 ToT 特别适合需要多样性探索的复杂任务。

推理模型(慢思考)中的提示词

慢思考,通常指类似 OpenAI o1 或 DeepSeek R1 中展现出的推理能力,让模型能够自主进行逻辑推演。所以此类模型也被称为 “推理模型(Reasoning)”。

  • 快思考/System 1:提示词不仅要告诉模型做什么,往往还要教模型怎么做(例如:“请一步步思考”、“先提取关键词再分类”)。这叫 Prompt Engineering。
  • 慢思考/System 2: 模型内部已经内置了 “一步步思考” 的强化学习路径。你不需要教它 “怎么思考”,但你必须极其精准地定义目标(Goal)和约束条件(Constraints)。

所以,针对具有慢思考能力的推理模型,提示词从侧重 “流程说明书” 变成了更侧重 “任务需求文档”,后者也是 Spec Coding 的思想。另外,慢思考模型的一个特点是它会花费更多的时间(Token)在内部进行自我辩论和验证。如果提示词不清晰,模型可能会陷入 “过度推理” 的陷阱。

综上,在使用不同的模型时,我们需要知道如何编写对应的提示词。

最佳实践

提供少量示例

尽可能的采用单样本或少样本学习提示词,GPT-3 已经证明了其有效性。它就像一个强大的教学工具,展示了用户预期的输出或类似的响应,使 LLM 能够从中学习并相应地调整其生成的内容。这就像为 LLM 提供一个参考点或目标,以提高其响应的准确性、风格和语气,从而更好地满足你的期望。

使用简洁的大白话

尽量不要使用复杂的术语和语句,也不要提供不必要的信息,它可能也会使 LLM 感到困惑。

# Good我现在正在纽约旅行,想听听更多关于好地方的信息。我带着两个 3 岁的孩子。我们假期应该去哪里?# Bad充当游客的旅行指南。描述一下在纽约曼哈顿与 3 岁儿童一起游览的好地方。

优先采用描述动作的动词。例如:充当、分析、分类、归类、对比、比较、创建、描述、定义、评估、提取、查找、生成、识别、列出、测量、组织、解析、选择、预测、提供、排序、推荐、返回、检索、重写、选择、显示、排序、总结、翻译、写作。

使用指令而不是约束

  • 指令:提供有关响应的所需格式、样式或内容的明确说明。它指导模型应该做什么或产生什么。
  • 约束:是对响应的一组限制或边界。它限制了模型不应该做什么或避免什么。

越来越多的研究表明,在 Prompt 中使用积极的指令可能比约束更有效。这种方法与人类喜欢积极的指令而不是约束相一致。指令直接传达期望的结果,而约束可能会让模型猜测允许做什么。

# Good生成一篇关于前 5 名视频游戏机的 1 段博客文章。只讨论游戏机、制造公司、年份和总销量。# Bad生成一篇关于前 5 名视频游戏机的 1 段博客文章。不要列出视频游戏名称。

通过约束来明确输出格式

在某些情况下,约束仍然有效,例如:幻觉抑制、防止生成有害或有偏见的内容,或者严格要求输出格式或样式时。

  1. 角色扮演:让 LLM 扮演特定角色,如:你是一位资深营养师,为健身人设计食谱。
  2. 输出样本学习:在 Prompt 中提供输入和输出的样本,如:根据以下合同条款回答问题:[示例]。
  3. 格式化输出:强制要求以 Markdown、JSON、YAML 等格式输出。
  4. 幻觉抑制:强制要求基于已知信息回答、不会就说不会,并标注不确定内容。

格式化输出示例:

请从以下会议记录中提取所有待办事项,要求: 1. 每条任务以 “负责人:任务内容(截止时间)” 格式输出 2. 仅输出事项,不添加解释。3. 若无明确时间则标注 “待确认”。会议记录:[粘贴记录文本]

使用提示词模版和变量嵌入

为了 Prompt 的可复用性,许多 Agent 框架都会提供 PromptTemplate 模版功能,支持形参变量的嵌入和实参的传递。

# PromptVARIABLES{city} = “Amsterdam”PROMPTYou are a travel guide. Tell me a fact about the city:# OutputAmsterdam is a beautiful city full of canals, bridges, and narrow streets. It’s a great place to visit for its rich history, culture, and nightlife.

在程序化场景中使用 JSON 格式输出

在 Agent 此类的程序化场景中,尽量使用统一的 JSON 格式输出。具有以下好处:

  1. 始终以相同的 JSON 格式返回。
  2. 方便程序使用 JSON Schema 进行数据解析和处理。
  3. 减少幻觉的可能性。

但需要注意的是,JSON 的冗长性很容易消耗掉整个输出窗口。由于 token 长度限制会让 JSON 数据结构被截断,进而造成程序化解析失败。对此可以使用 PyPI json-repair 库进行 JSON 格式修复。

自动提示词工程(APE)

自动提示词工程(APE)是一种通过 LLM 来自动化生成 Prompt,再有人类来进行评估的工程实践方法。

实际上,现在不仅仅是 Prompt,连 SFT 微调大模型的 Dataset 都可以采用自动化的方式进行生产。一个例子:

# PromptWe have a band merchandise t-shirt webshop, and to train a chatbot we need various ways to order: “One Metallica t-shirt size S”. Generate 10 variants, with the same semantics but keep the same meaning.# Output1. I’d like to purchase a Metallica t-shirt in size small.2. Can I order a small-sized Metallica t-shirt?3. I’d like to buy one Metallica t-shirt in small.4. One Metallica shirt, size small, please.5. I want one Metallica t-shirt in size small.6. I’d like to place an order for one Metallica t-shirt in small.7. Small Metallica t-shirt, one please.8. I’m looking for one Metallica t-shirt in small.9. Can you get me one Metallica t-shirt in small?10. One Metallica small t-shirt, please.

- END -

关于 “AI赛博空间” 微信公众号:

欢迎关注 “AI赛博空间” 微信公众号,我们专注于AI、大数据、云计算及网络技术的发展及应用。热爱开源,拥抱开源!

 
打赏
 
更多>同类资讯
0相关评论

推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  皖ICP备20008326号-18
Powered By DESTOON