Prompt 最佳实践
提供示例
在提示词中提供单样本或少样本示例,通常能明显提升输出质量。示例会给模型一个参照:你希望它输出什么格式、什么风格、覆盖哪些信息。
好的示例比抽象描述更直接。与其说“写得自然一些”,可以给一段你认可的输出,让模型照着语气和结构生成。
简洁设计
提示词要简洁、清晰,读起来像正常任务说明。你读着费劲的提示词,模型也容易跑偏。
复杂背景可以拆成上下文、任务、输出格式几块写,避免把所有信息揉成一长句。
示例:
原始问题:
我现在正在纽约游玩,想多了解一些好地方。我带着两个 3 岁的孩子,假期里我们应该去哪里呢?
可以改成:
请扮演一名旅游向导,为游客介绍纽约曼哈顿适合带 3 岁幼儿游览的好去处。
尽量使用描述动作的动词,比如:
行动、分析、分类、归类、对比、比较、创造、描述、定义、评估、提取、查找、生成、识别、列举、测量、组织、解析、挑选、预测、提供、排序、推荐、返回、检索、重写、选择、展示、排序、总结、翻译、撰写。
明确输出内容
明确告诉模型你想要什么。简短指令有时会过于宽泛,模型会自己补全很多隐含条件。把主题、长度、格式、语气、受众写清楚,输出会稳定很多。
示例:
更好的写法:
写一篇三段的博客文章,介绍排名前五的视频游戏主机。文章要有信息量,语气自然,适合普通玩家阅读。
宽泛写法:
生成一篇关于视频游戏主机的博客文章。
使用指令而非约束条件
提示词里可以写指令,也可以写约束。指令说明模型应该生成什么,约束说明边界。
优先把目标写成正向指令。比如:
撰写一篇关于五大视频游戏主机的单段博客文章,只讨论主机、制造公司、推出年份和总销量。
约束适合放在最后,用来处理安全、格式和边界要求。约束太多时,模型容易在限制之间摇摆,输出也会变得僵硬。
控制最大令牌长度
要控制回复长度,可以在配置中设置最大 token,也可以直接在提示词里说明长度。比如:
用一条推文的长度解释量子物理学。
在提示词中使用变量
需要复用提示词时,可以把会变化的信息抽成变量。比如城市名、用户角色、输出语言、目标格式,都适合做成变量。
变量能减少重复修改,也方便把提示词接入应用。如果多条提示词共享同一段信息,把它保存成变量再引用,会比到处复制更稳定。
| Prompt | VARIABLES = “Amsterdam” PROMPT You are a travel guide. Tell me a fact about the city: |
|---|---|
| Output | Amsterdam 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. |
尝试不同的输入格式和写作风格
模型、采样配置、提示词格式和用词都会影响结果。同一件事可以写成问题、陈述或指令,输出会有差异。
比如要介绍世嘉 Dreamcast,可以这样写:
- 问题:世嘉 Dreamcast 是什么?它为什么是一款有代表性的游戏机?
- 指令:写一个段落,介绍世嘉 Dreamcast 游戏机,并说明它的创新点。
- 陈述:世嘉 Dreamcast 是一款有代表性的游戏机,请围绕它的硬件、发布时间和影响写一段介绍。
在分类任务的少样本提示中,混合不同的类别
分类任务里的少样本示例要混合不同类别。示例顺序过于整齐时,模型可能学到顺序模式,而不是类别特征。
一个实用做法是先准备 6 个左右的少样本示例,混合不同类别,再用测试集观察准确率。
适应模型更新
模型版本、上下文长度、工具调用能力和安全策略都会变化。提示词也要跟着更新。
可以用 Vertex AI Studio 这类工具保存、测试和记录不同版本的提示词,避免只凭感觉调参。
尝试输出格式
除了输入方式,也可以调整输出格式。对于提取、选择、解析、排序、排名或分类这类任务,可以要求模型返回 JSON 或 XML。
结构化输出的好处很直接:
- 返回格式更稳定
- 更容易拿到你真正需要的字段
- 更适合后续程序处理
- 能减少无关内容
- 日期、数字和枚举值更容易被校验
思维链最佳实践
使用思维链(CoT)或自一致性方法时,要让最终答案和推理过程分开,方便程序提取结果。
对于有明确答案的推理任务,可以把温度设为 0,让输出更稳定。推理过程会影响后续 token 的预测,输出格式越明确,结果越容易解析。
记录各种提示词尝试
记录每次提示词实验,包括模型版本、采样参数、提示词内容、输入样例和输出结果。
不同模型、不同采样设置,以及同一模型的不同版本,都会影响输出。即使输入完全相同,模型也可能在个别词句上出现差异。把实验记录下来,才能判断哪些改动真的有效。