收益:
- 解释令牌、输入/输出令牌区别和令牌化的概念。
- 可以根据代币数量和单价计算出一次请求的成本和每月的工作量
- 可以比较模型选择和提示长度对成本的影响
如果不了解 LLM API 的经济性,您就无法大规模构建解决方案。演示运行一次;最主要的是能够预测每月拨打数千个电话时的账单金额。在本单元中,我们设置了货币方面的内容:什么是代币、为什么输入和输出的定价不同、如何计算请求的成本以及如何预算每月的工作负载。此信息允许您衡量后续单元中优化技术(缓存、模型选择、批量)的回报。
什么是代币?
Token是模型处理文本的最小单位。一个词并不总是一个象征;标记通常是单词的一部分。粗略地说,在英语中,1 个 token 约等于 4 个字符约 0.75 个单词。在土耳其语和代码中,比例有所不同:由于其后缀结构和字母表,土耳其语单词通常比英语单词被划分为更多的标记。因此,需要使用提供商的代币计数工具来测量代币数量,而不是通过肉眼猜测。
每个模型的标记化(将文本分割为标记的过程)可能有所不同。这有两个实际后果:(1)相同的文本在不同的模型中可能会产生不同数量的标记; (2) 对于 Claude 来说,使用其他提供商的标记器(例如 OpenAI 的 tiktoken 库)进行的预测将不准确 - 请使用您正在使用的模型的标记计数提示。
提示:“大约有多少代币?”不要盲目回答问题。通过令牌计数 API 传递代表性文本;预算决策以衡量为基础。
输入和输出令牌
发票由两项组成:
- 输入令牌:您发送到模型的任何内容 - 系统提示、过去的游览、用户消息、文档(如果有)。这些都是一次性处理的。
- 输出标记:模型产生的响应。对于每个输出标记,模型逐步执行计算。
对于大多数提供商来说,输出比输入贵几倍。原因很简单:一次性读取所有输入比逐个生成输出要便宜。了解这种不对称性可以解释为什么像“需要简洁答案”这样的优化如此有效。
样本价格(每 100 万个代币,美元)
下表仅供参考;价格可能会随着时间的推移而变化,请确认您自己的提供商的当前列表。
模型类
样本模型
输入(美元/百万)
产出(美元/百万)
典型用法
快速/便宜
俳句 4.5
1.00
5.00
分类、标签、简单总结
平衡的
十四行诗 5
3.00
15:00
通用、编码、代理工作
强
作品 4.8
5.00
25:00
复杂推理、远程任务
每个类别的输出是输入的5倍;而且,即使是强大模型的输入也是廉价模型输入的 5 倍。这两个轴(输入↔输出和模型类)构成了成本决策的框架。
如何计算成本?
公式很简单:
成本 = (输入代币 / 1,000,000) × 输入价格 + (输出代币 / 1,000,000) × 输出价格
示例帐户。 Sonnet 5 的请求:1,500 个输入标记,400 个输出标记。
输入 = 1,500 / 1,000,000 × 3.00 = $0.0045 输出 = 400 / 1,000,000 × 15.00 = $0.0060 总计 = $0.0105 (约 1 美分)
一个电话看起来很便宜。但乘以数量:每天 20,000 个呼叫 → 每天 210 美元,每月约 6,300 美元。这就是规模发挥作用的地方。
每月预算模板
要提取工作负载的每月成本,请使用以下模板:
1) 每个请求的平均输入代币:......2) 每个请求的平均输出代币:......3) 每天的请求数量:......4) 每月工作天数:......5) 每个请求的成本 = (1)/1M×input_price + (2)/1M×output_price6) 每月成本 = (5) × (3) × (4)
将此模式倒入电子表格中,并查看当您更改模型时总和如何体现模型选择(单元 5)和缓存(单元 6)决策。
使用可复制模板缩短提示
大部分成本来自不必要的长提示和浪费的输出。下面的模板可提供直接节省。
# 限制输出长度。最多回答 3 项。添加理由或介绍性句子。
# 仅返回请求的字段 仅返回以下 JSON,不添加任何其他文本:{"category": "...", "urgency": "low|medium|high"}
# 删除不必要的上下文仅删除以下文本中的日期和金额。不要重复整个文本。文本:"""{{text}}"""
# 总结长篇演讲(节省输入) 将这篇演讲总结为 5 项。我将在后续几轮中使用这个摘要而不是完整的过去。语音:“”“{{过去}}”“”
弱提示/强提示(就成本而言)
# 弱(发布输出,昂贵)分析此支持请求并给我写一份全面的评论。
# STRONG(限制输出、廉价且可预测)对此支持请求进行分类。只需返回以下 JSON:{"category":"invoice|technical|refund|other","urgency":"low|medium|high"} 不写描述。
弱版本可能产生 500 个输出令牌;强版~15。由于输出成本高昂,因此每次调用都会产生显着差异,并且会与数量相乘。
三个迷你箱
案例 1——长提示的隐性成本。当会计自动化对每张发票进行排序时,它添加了一本 40 页的“规则手册”作为每个请求的输入:每个请求约 12,000 个输入令牌。刚刚输入 Sonnet 5 12,000/1M×3 = 0.036 美元。每天 5,000 张账单 → 每天 180 美元。通过缓存规则手册(第 6 单元),输入成本下降了约 90%。
案例 2 — 缩小模型规模的回报。一个团队正在使用 Opus 4.8 进行简单的“正面/负面”情绪标记:300 个输入 + 10 个输出标记。作品成本 300/1M×5 + 10/1M×25 = 0.00175 美元。切换到俳句,300/1M×1 + 10/1M×5 = 0.00035 美元 — 便宜 5 倍,准确度的差异是不可估量的。每月 300 万次调用,差异为 5,250 美元 → 1,050 美元。
情况 3 — 释放输出。当营销团队制作产品描述时,它不会对输出设置任何限制;该模型有时会显示 1,500 个代币。当我添加“最多 60 个字”指令时,平均输出从 900 个令牌下降到 90 个令牌。由于印刷费用昂贵,每月的账单减少了三分之一,文本变得更有用。
常见错误
- 通过眼睛猜测标记:您可能会出错,尤其是在土耳其语和代码中。措施。
- 假设输入和输出相同: 输出通常要昂贵得多;大多数优化来自于缩短输出。
- 不要被一次通话的廉价所迷惑:决定是根据数量做出的。 0.01 美元 × 百万 = 10,000 美元。
- 使用其他提供商的标记器进行预测:给出不正确的结果;使用模型的标记计数工具。
- 无限放大对话历史记录:每轮都添加到词条中;在长对话中总结。
- 将“max_tokens”保持不必要的高:隐藏预算计划和被削减的风险;给出一个现实的价值。
更深入:上下文窗口和长输入成本
重要的是要了解“整个对话”中的价格如何叠加,而不仅仅是“每个请求”。模型可以处理的文本总量称为上下文窗口;输入和输出的总和必须适合该窗口。现代模型提供了非常大的窗口(数十万,甚至数百万个令牌),但这并不意味着您可以“无限地填充它”——您放入窗口的任何内容都将作为输入计费。
长对话中的陷阱是这样的:在每一轮新的对话中,你都会再次发送整个历史记录(单元 1 中的无状态)。在 20 轮对话中,第 20 个请求携带整个前 19 轮作为输入。因此,随着对话时间的延长,每个请求的成本会累积增长,而不是线性增长。与座席助理进行 50 轮对话所产生的投入成本是第一轮的数十倍。
有两种方法可以管理这个问题。第一个是回顾:将较旧的回合压缩到单个回顾块中,仅保留最后几轮原始数据。第二个是即时缓存(单元 6):以十分之一的价格读取固定上下文,而不是以全价重复处理它。它们共同显着减少了长时间、上下文密集型工作负载的费用。所以代币经济学是关于整个会话的设计,而不是单个请求。
综上所述
Token是处理文本的最小单位;输入和输出是分开定价的,输出通常要贵得多。成本是代币数量乘以单价,真正决定的是数量。缩短提示、限制产量、选择完成任务的最轻模型,是成倍降低成本的最直接杠杆。
应用任务
选择你自己的任务。 (1) 确定代表性提示的输入和估计输出标记的数量(如果可能,使用标记计数工具进行测量)。 (2) 计算三个模型类的每个请求的成本。 (3) 估算您每天的请求数量并得出三种模型的每月预算。 (4) 添加缩短输出的指令并记下预期的节省。
清单
- [ ] 我可以解释令牌的概念,并且令牌化根据模型的不同而变化。
- [ ] 我知道为什么输入和输出代币的定价不同。
- [ ] 我可以用公式计算一个请求的成本。
- [ ] 我可以使用模板为工作负载创建每月预算。
- [ ] 我可以用一个例子来展示缩短输出和减少模型的好处。