1. 官方提示词指南


本节依据 Google 官方的提示工程文档编写:https://ai.google.dev/gemini-api/docs/prompting-strategies?hl=zh-cn

清晰具体的指令

定制模型行为最有效的方式,就是给它清晰、具体的指令。指令的形式可以是一个问题、一组分步任务,也可以复杂到描绘整个用户体验和心智模型。

四种输入类型

提示词中的"输入"指希望模型回应的核心内容。Google 把它分成四类:

输入类型含义示例
问题型(Question)让模型回答一个问题"什么是适合干花专卖店的店名?给我 5 个选项。"
任务型(Task)让模型执行一项任务"列出露营必带的 5 样东西。"
实体型(Entity)让模型对某个具体对象进行操作"把以下物品分类为 [大、小]:大象、老鼠、蜗牛"
补全型(Completion)提供部分内容让模型续写(见下一节)

补全策略

生成式语言模型本质上像一个高级的"自动补全"工具。当提供部分内容时,模型会接着补全后面的内容。

普通写法(依赖模型理解自然语言指令):

对于以下订单,返回一个 JSON 对象,包含字段 cheeseburger、hamburger、fries、drink,
值为数量。
订单:一个汉堡和一杯饮料。

模型会返回所有字段,包括数量为 0 的项。

补全策略写法(用一个示例 + 输出前缀引导):

有效字段:cheeseburger、hamburger、fries、drink。
订单:给我一个芝士汉堡和薯条
输出:
{
  "cheeseburger": 1,
  "fries": 1
}
订单:我要两个汉堡、一杯饮料和薯条。
输出:

模型会只输出存在的字段,自动省略数量为 0 的项。

关键洞察:当自然语言难以表达精确要求时,给一个示例 + 一个未完成的开头,比写一大段说明更有效。

添加约束

明确告诉模型该做什么、不该做什么。约束可以是长度、风格、内容范围等。

示例:

用一句话总结这段文字。
回答不要超过 100 字。
只用提供的文本回答,不要引入额外知识。

指定响应格式

可以要求模型以特定格式回复:表格、项目符号列表、电梯演讲、关键词、句子、段落、JSON 等。

通过系统指令(System Instruction)控制整体行为也是一种常见做法,例如:

所有问题都应详细全面地回答,除非用户特别要求简洁回复。

用补全策略控制格式

如果希望输出符合特定结构,最有效的方式是直接写出开头让模型续写。

含糊的写法:

为一篇关于蜂鸟的文章写一个大纲。

模型会自己决定用什么格式。

用补全策略锁定格式:

为一篇关于蜂鸟的文章写一个大纲。
I. 引言
   *

模型会按照给定的格式(罗马数字 + 星号缩进)继续填充。

零样本与少样本提示词

核心概念

  • 零样本(Zero-shot):不提供任何示例,直接让模型完成任务。
  • 少样本(Few-shot):在提示词中提供几个示例,让模型识别其中的模式并应用到新输入上。

少样本示例的实战应用

假设希望模型在多个解释中选择更简洁的那个。

零样本提示词(模型可能选择详细的那个):

请为以下问题选择最佳解释:
问题:雪是怎么形成的?
解释1:雪是空气中的水蒸气在大气层中冻结成冰晶……(详细)
解释2:水蒸气冻结成冰晶形成雪。
答案:

少样本提示词(用示例展示自己偏好简洁):

以下是一些"问题—解释—答案"格式的示例:

问题:天空为什么是蓝色?
解释1:天空看起来是蓝色因为瑞利散射,使较短的蓝色波长……(详细)
解释2:因为瑞利散射效应。
答案:解释2

问题:地震的原因是什么?
解释1:地壳中能量的突然释放。
解释2:地震发生在构造板块突然滑动或断裂时……(详细)
答案:解释1

现在按上述格式回答以下问题:
问题:雪是怎么形成的?
解释1:……(详细)
解释2:水蒸气冻结成冰晶形成雪。
答案:

第二个版本会让模型选择简洁的"解释2"。

关于示例数量

模型通常能从少量示例中识别模式,但具体数量需要实验。要注意:

  • 太少:模型可能识别不出想要的模式。
  • 太多:模型可能"过拟合"到这些示例,丧失泛化能力。

通常 2–5 个示例是合理的起点。

保持格式一致

少样本示例的核心目的之一就是向模型展示输出格式。因此所有示例必须保持严格一致的格式,特别注意:

  • XML 标签
  • 空格
  • 换行
  • 示例之间的分隔符

任何不一致都可能让模型输出不可预期的格式。

添加上下文

不要假设模型自带所有需要的信息。把约束、规则、参考资料等上下文信息一并放进提示词,能显著提升回答的相关性和准确性。

对比案例

没有上下文:

我的 WiFi 断开了怎么办?路由器的灯黄色慢闪。

模型只能给出通用的故障排查建议,不针对特定路由器。

带上下文:

请使用以下文本回答问题。只用提供的文本回答。
问题:我的 WiFi 断开了怎么办?我的 Google Wifi 路由器的灯黄色慢闪。

文本:
颜色:缓慢脉动黄色
含义:网络错误。
解决方法:检查以太网线是否连接到路由器和调制解调器,确认两个设备都已开机……

颜色:快速闪烁黄色
含义:你正在按住重置按钮进行恢复出厂设置……

颜色:纯红色
含义:出现严重故障……

模型会直接给出与"黄色慢闪"对应的精确答案。

核心原则:当希望模型基于特定信息回答时,把那些信息放进提示词里,并明确告诉它"只用提供的文本回答"。

拆解复杂提示词

复杂任务不要塞进一个超长的提示词里。推荐三种拆解方式:

拆解指令

不要把多个指令塞进一个提示词,每个指令写成一个独立的提示词。然后根据用户输入选择调用哪一个。

串联提示词

对于多步骤任务,每一步做成一个提示词,前一步的输出作为下一步的输入。例如:

  1. 第一步提示词:把长文档总结成 5 个要点
  2. 第二步提示词:把这 5 个要点改写成正式商务邮件
  3. 第三步提示词:根据邮件生成 3 个标题候选

聚合响应

对数据的不同部分并行执行不同任务,再聚合结果。例如:分析一份会议纪要时,先抽取行动项,再抽取决策点,再抽取风险点,最后合并成一份结构化总结。

提示词迭代策略

当输出与预期存在偏差时,与其反复微调同一句话,不如系统性地从以下三个维度进行迭代:

换一种说法

同一个意思用不同措辞,效果可能差很多。

  • 版本 1:"怎么烤派?"
  • 版本 2:"推荐一个派的食谱。"
  • 版本 3:"有什么好的派食谱?"

如果第一版不行,重写一次,别死磕。

切换到类似任务

当模型持续无法按指定格式输出时,问题往往不在指令本身,而在任务的表达形式。此时应将任务改写为一个语义等价、但结构更利于约束输出的表达方式。

原问题:

《奥德赛》属于哪个类别:
惊悚 / 科幻 / 神话 / 传记

模型可能用一整段话解释,而不是只给出选项。

改写成多选题:

多选题:以下哪个选项描述了《奥德赛》这本书?
选项:
- 惊悚
- 科幻
- 神话
- 传记

这样模型会直接回答"神话"。

调整内容顺序

提示词中各部分的排列顺序会影响结果。尝试不同组合:

版本 1:

[示例] [上下文] [输入]

版本 2:

[输入] [示例] [上下文]

版本 3:

[示例] [输入] [上下文]

评论

0
还没有评论,来写第一条吧