最后更新:

AI 提示词字数设计 - 高效提示词工程实践指南

6 分钟阅读

生成式 AI 的输出质量在很大程度上取决于提示词的设计。然而,盲目地编写冗长的提示词并不能带来更好的结果。理解各模型的 Token 限制,并在有限的字数内最大化效果,才是提示词工程的核心。本文将从 Tokenizer 的工作原理到实用的提示词模板,结合其他地方难以获得的技术深度进行全面解析。

Token 的工作原理 - BPE 算法与字数的非线性关系

要有效设计提示词,首先需要了解 Token 是如何生成的。当前主流模型采用基于 BPE (Byte Pair Encoding) 算法的 Tokenizer。BPE 通过反复合并训练数据中最频繁出现的字节对来构建词汇表。

这种机制意味着 Token 数与字符数之间的关系是非线性的。高频出现的短词往往能收进 1 个 Token,而出现频率低的长词则会被拆分成好几个 Token。中日韩文字的情况更为复杂:没有收录进词汇表的低频汉字会被一路分解到字节层面,因此在 UTF-8 中占 3 个字节的汉字,仅这一个字就可能消耗 3 个 Token。也就是说,相同的字符数会因文本内容不同而产生截然不同的 Token 消耗量。某个词究竟被切成几个 Token,是由各模型自带的 Tokenizer 决定的,因此在实务中,与其去记具体数值,不如把"无法用字符数衡量 Token 数"这一性质记牢,更能派上用场。

中日韩文字 Token 效率较低的技术背景

中日韩 (CJK) 文本与英语相比,Token 效率较低,表达相同语义需要消耗明显更多的 Token。造成这种差异的原因有三个。

第一,BPE Tokenizer 的训练数据中英语占比远高于 CJK 语言。训练数据中占比越高的语言,其 Token 合并越高效,因此英语能用更少的 Token 表达更多含义。第二,日语使用汉字、平假名、片假名和拉丁字母的多文字体系,字符种类的多样性降低了 Token 分割效率。第三,日语没有像英语那样的空格分词,Tokenizer 难以找到最优的分割点。

深入了解多字节编码如何影响 Token 效率,请参阅我们关于字符数与字节数的区别的指南。不过,"每个字符折合多少 Token"这类固定换算比,每逢 Tokenizer 更新换代就会发生变化。把记住的比率从一个模型套用到另一个模型,正是估算失准的根源,因此当成本或硬性上限成为关键时,请用实际调用的那个模型自带的 Tokenizer 去实测文本。

上下文窗口与字符数估算的思考方式

模型一次能够接收的 Token 数量,也就是上下文窗口,跨度相当大:截至 2026 年,从十几万 Token 的规模一直延伸到百万 Token 的规模。这些数字每逢模型更新换代都会被改写,因此逐个模型去背记并不现实。更可靠的做法是在流程里固定加入一个步骤,在动手设计提示词之前,先到即将使用的模型的官方文档中查清当前的上限。

字符数估算也是同理。即使 Token 数相同,能装进去的文本量也会随文体大幅变化:日常对话文本每个 Token 容纳的字符数,多于专业术语密集的技术文档。套用固定的换算比会让估算失准,因此对于重要的提示词,请事先用模型的实际 Tokenizer 验证长度。

设计阶段还有一点容易被漏掉。可用于输入的上下文窗口,与单次响应能够生成的最大输出 Token 数,是两份彼此独立的额度。即便输入侧还留有充裕空间,回复也可能因为撞上输出上限而中途断掉。对于要求生成长篇文本的任务,请先确认输出上限,再把提示词设计成按章节分批生成的形式,这样更为稳妥。

Lost in the Middle 问题 - 长上下文中的注意力分布

即使是拥有大上下文窗口的模型,也不会对输入文本的所有部分给予同等的"注意力"。2023 年发表的研究 "Lost in the Middle" 表明,放置在长上下文中间部分的信息,比放在开头或结尾的信息更不容易被引用。

这一现象对提示词设计有直接影响。例如,在编写 10,000 Token 的提示词时,最重要的指令和约束条件应放在提示词的开头或结尾。中间部分用于放置补充信息和优先级较低的参考数据。

一个实用的对策是"三明治结构":在开头声明重要指令,然后在结尾再次提醒。此外,把输入一直塞到上下文窗口的上限,输出质量往往会下降,因此设计时应以对上限留出余量为前提,并把冗长的参考资料先做摘要再放进去,这样更为稳妥。

高效提示词的结构与适当长度

  1. 角色定义 (20-50 词):指定 AI 的角色,如"你是一位法律文书专家"
  2. 任务描述 (30-100 词):明确说明需要完成的任务
  3. 约束条件 (20-60 词):定义输出格式、长度、语气和限制
  4. 输入数据 (可变):提供需要处理的文本或参考资料

对于大多数任务,100 至 250 词的提示词文本即可获得良好效果。如果需要超过 300 词,建议考虑拆分任务。不过,这一指导原则取决于任务复杂度。代码生成和数据分析等任务可能需要 400 至 800 词的提示词文本。

系统提示词的设计与 Token 分配

通过 API 使用 AI 模型时,系统提示词的设计至关重要。系统提示词会包含在每次请求中,因此其长度直接影响大规模使用时的 Token 成本。

实践中的答案是为系统提示词的长度自行定下一个上限,并在这个范围内运作。当提示词有可能超出上限时,就不要再试图把所有内容都预先写进去,而应考虑采用 RAG (检索增强生成) 模式,只注入每次请求真正需要的信息。分配比例并没有唯一的正确答案,但把角色和指导方针压缩到数行,在输出格式规范以及约束条件和禁止事项上多花笔墨,再把 Few-shot 示例收窄到最具代表性的案例,提示词就会更容易掌控。由于这段文本会随每一次请求一起发送,它也是删掉一行就能不断累积效果的地方。

实用提示词模板

以下是一个即用型提示词模板。变量部分用 {{...}} 标记。

通用任务模板 (约 80 词):

你是{{领域}}方面的专家。
请对以下输入执行{{任务描述}}。

## 约束条件
- 输出格式:{{格式 (如:要点列表、表格、段落)}}
- 长度:最多 {{限制}} 词
- 语气:{{语气 (如:正式、随意)}}

## 输入
{{输入文本}}

这个模板的关键设计在于将角色定义压缩为一行,并以要点列表的形式明确约束条件。这比散文形式更节省 Token,也降低了 AI 忽略约束条件的风险。

优化技巧

由于 API 按 Token 计费,压缩提示词长度会直接转化为成本下降,而关键在于这种效果是相乘的。每次请求节省 500 个 Token,在每月 100 万次请求的规模下,就意味着有 5 亿 Token 的输入不再被发送出去。每 Token 的单价因模型和服务商而异,但在单次请求上看起来微不足道的削减,一旦放到规模化运营中就会直接反映到账单上。

温度参数与提示词长度的交互作用

在提示词设计中,一个常被忽视的因素是温度 (temperature) 参数与提示词长度之间的交互作用。温度控制输出的随机性--接近 0 时产生确定性输出,接近 1 时生成更多样化的响应。

短提示词配合高温度会放大歧义,导致输出大幅波动。相反,详细且结构良好的提示词即使在较高温度下也能保持稳定。实用的做法是,在提示词还很简短、指示还比较含糊的阶段先把温度压低,等指示和约束条件变得具体之后再逐步调高。按这个顺序推进,更容易判断输出的波动究竟来自提示词还是来自温度。此外,截至 2026 年,已经出现了不再接受温度参数的模型,因此请事先确认所调用的模型是否支持温度设定。

提示词的 A/B 测试方法论

提示词优化是一个迭代过程,而非一次性工作。以下是有效的 A/B 测试工作流程:

  1. 定义评估标准:准确性、风格一致性、指令遵循度--选择可量化衡量的指标
  2. 准备测试用例:收集 20 至 50 个代表性输入,包括边缘情况 (极短输入、术语密集输入、多语言输入)
  3. 控制变量:每次只更改一个提示词元素。同时修改角色定义和约束条件会导致无法归因效果
  4. 统计评估:每个变体至少运行 30 次试验,在宣布优胜者之前考虑输出方差

需要注意的是,即使将温度设为 0,模型输出也不是完全确定性的。相同的提示词可能在不同运行中产生略有不同的输出,因此跨多次试验的统计评估至关重要。

常见提示词错误与对策

总结

高效的提示词工程在于如何在有限的 Token 预算内传达精确的指令。理解 BPE Tokenizer 的机制,考虑不同语言的 Token 效率差异,并有意识地构建提示词结构,是其基础。将 Lost in the Middle 对策、温度与长度的交互作用意识,以及迭代式 A/B 测试相结合,即可同时实现输出质量和成本效率。使用字符计数器在发送前检查提示词长度,还有助于估算 Token 用量。

分享这篇文章