第一次用大模型做一个小工具,很容易把接口理解成这样:输入一个问题,得到一个答案。可一旦把它接进产品,就会遇到更多问题:同一个问题为什么有不同回答?为什么加一个例子,输出格式就稳定了?为什么它能把不存在的细节说得很自然?
理解这些现象,可以先从生成文本的过程入手。下面讨论的是常见的自回归文本语言模型,不代表所有 AI 系统都以相同方式工作。
文本先被拆成 token
模型处理的基本单位通常是 token。它可能对应一个词、一个字,也可能只是词的一部分。具体怎样切分,取决于所用的 tokenizer。
因此,不能简单把 token 数当成字数。对于中文、英文和代码,同样长度的内容可能对应不同数量的 token。做产品时,应使用对应模型的计数方式估计输入量,而不是给字符数乘一个固定系数。
自回归生成可以粗略理解成一个循环:根据当前上下文,计算下一个 token 的概率分布,按生成策略选出 token,再把它接到上下文后继续。这个过程描述了生成方式,却不能单独解释模型能力的全部来源。
注意力帮助模型利用上下文
Transformer 的一个核心机制是注意力:在处理序列时,模型可以根据内容,对其他位置的信息分配不同权重。原始论文展示了以注意力为核心的编码器—解码器结构及其机器翻译实验;后来许多文本模型采用了不同的 Transformer 变体。Attention Is All You Need
从使用者的角度看,一个直接启发是:输入里要有完成任务所需的关系和约束。
“帮我写个介绍”留下了大量空白。“为一个面向个人开发者的中文博客写介绍,控制在八十字内,不虚构工作经历”就给出了对象、语言、长度和事实边界。
这里的例子是提示词设计建议,并不是注意力论文对写作效果的实验结论。
示例改变输出,不等于重新训练
上下文学习指的是通过输入里的说明或示例,让模型适应眼前的任务,而不必因此更新模型参数。早期大模型研究已经系统探索过少样本设置:任务描述和演示直接放入文本上下文,评估时不进行梯度更新。Language Models are Few-Shot Learners
例如,想从笔记里提取标签,可以把期望的格式说清楚,再给一个简短样例:
任务:为开发笔记提取最多三个标签。
格式:只输出一个 JSON 字符串数组。
约束:标签必须来自正文主题,不添加人物或公司信息。
示例输入:记录如何为静态博客添加关键词搜索。
示例输出:["博客", "搜索", "前端"]
现在处理:这里放待分析的正文。
即使给出了格式要求,应用仍应解析结果、检查类型,并为不符合格式的返回准备处理逻辑。
流畅的回答还需要事实检查
生成出合理的句子,并不意味着每一个事实都经过了查询。模型可能给出不存在的引用、混淆版本,或在资料不足时补全细节。涉及日期、来源和具体接口时,最好让答案与可以核对的材料一起出现。
对个人项目而言,可以把一次调用拆成几个明确步骤:准备必要材料,写清任务与输出格式,检查结构,再核对影响结果的关键事实。
不要只问“提示词够不够好”。也问问:输入是否缺少信息?输出能否被程序验证?如果模型不知道,产品是否允许它明确说不知道?这些问题,往往比继续润色一句指令更接近实际问题。