标准答案
- Token 是模型处理文本时使用的离散单元,不等同于字符数或汉字数。一次调用通常同时消耗输入 Token 和输出 Token,供应商会据此计算上下文占用和费用。
- 上下文窗口是一次请求能够接收的输入与输出总容量上限。它包含系统指令、历史消息、检索片段、工具结果和本轮输出预留空间,不能把窗口大小理解成只可放用户问题。
- 最大生成长度只限制本次输出最多生成多少 Token,不会扩大上下文窗口。实际输出还会受停止词、模型提前结束、安全策略和供应商硬限制影响。工程上要在发送前估算输入,给输出留出空间,并在超限时裁剪或摘要。
题目解析
Token 化与语言、标点、代码和数字有关。同样长度的中文、英文和代码消耗可能不同,因此不能只用字符串长度精确估算费用。预算系统应使用对应模型的 tokenizer 或供应商返回的 usage 字段校准。
上下文窗口的消耗不只来自聊天历史。RAG 片段、工具返回的大 JSON、重复的系统 Prompt 都会挤占生成空间,最终表现为请求报上下文超限,或答案在关键步骤前被截断。
解决上下文压力通常按优先级处理:删除无价值历史,压缩对话摘要,限制检索 Top K,裁剪工具字段,最后才考虑更换更大窗口模型。盲目把窗口调大可能增加成本和延迟,也不保证模型能有效利用所有信息。
回答这题时应区分“容量”和“质量”:窗口更大解决的是可放入多少信息,不能自动解决信息冲突、召回错误或模型推理能力不足。
常见误区
- 把一个 Token 直接等同于一个汉字或一个英文单词。应说明 Token 是模型分词器的结果,实际数量需要按具体 tokenizer 计算。
- 认为 max output tokens 越大就一定能回答得更完整。它只是上限,过大的预留还会减少可放入的历史和检索内容。
- 只在模型返回超限后才处理上下文。生产服务应在调用前估算并设置预算,同时保留超限后的降级路径。