为什么价格表比较会误导
两个定价页面展示了四个数字:每个供应商的输入和输出费率。将它们并排对比,你会得到一个排名,但这仅适用于恰好一种工作负载,即没有特定用户拥有的那种。实际使用情况在三个方面有所不同。
- 相同的提示词在每个供应商处会变成不同数量的 token,因为每个供应商都有自己的分词器。
- 模型的回答长度不同。一个更健谈的模型即使在较低的费率下,输出成本也可能更高。
- 你的输入和输出比例决定了哪个费率更重要。摘要器主要支付输入费率,而故事生成器主要支付输出费率。
因此,方法是保持工作负载固定,在每个 API 上测量 token,并以每个供应商的当前费率对这些测量的 token 进行定价。我们不是引用 Anthropic 或 OpenAI 的数字,因为它们都会变化,等你读到这篇文章时我们的数据就不准确了。两家供应商的定价页面都是公开的。我们可以做的是用我们自己的费率作为工作参考来展示计算过程。
比较的四个步骤
- 选择一个代表性的工作负载。 来自你产品的 30 个真实请求,包括长请求。
- 在每个 API 上运行。 从使用记录块中记录每次调用的提示词 token 和完成 token。
- 计算成本。 成本 = 输入 token x 输入费率 / 1M + 输出 token x 输出费率 / 1M。
- 针对质量进行调整。 将成本除以你可以直接使用的回答比例。一个 90% 时间可用的模型,其每个可用回答的成本约为其原始价格的 1.11 倍。
为你自己的工作量填写此表。右侧的列才是重要的。
| 项目 | 供应商 A | 供应商 B | 此 API |
|---|---|---|---|
| 每 1M 个 token 的输入费率 | 查看他们的当前定价 | 查看他们的当前定价 | $0.25 |
| 每 1M 个 token 的输出费率 | 查看他们的当前定价 | 查看他们的当前定价 | $0.50 |
| 测量的输入 token,30 个请求 | 你的计数 | 你的计数 | 你的计数 |
| 测量的输出 token,30 个请求 | 你的计数 | 你的计数 | 你的计数 |
| 可用的回答 | 你的得分 | 你的得分 | 你的得分 |
一个经过计算的 1M token 示例
假设一个月的聊天流量总计 1M 输入 token 和 1M 输出 token。输入费率为 $0.15/1M,输出费率为 $0.50/1M 时,成本为 $0.15 + $0.50 = $0.65。如果另一家供应商的费率是我们的两倍,则相同流量的成本为 $1.30。如果它收取的费用是十倍,则为 $6.50。由于费率不由我们来公布,请使用你在其页面上找到的倍数。
现在看看比例的影响。保持总量为 1M token,并调整比例。
| 1M 总 token 的混合比例 | 输入成本 | 输出成本 | 总计 |
|---|---|---|---|
| 900,000 输入 / 100,000 输出(摘要、分类) | $0.135 | $0.05 | $0.185 |
| 500,000 输入 / 500,000 输出(聊天) | $0.075 | $0.25 | $0.325 |
| 200,000 输入 / 800,000 输出(长生成) | $0.03 | $0.40 | $0.43 |
同样一百万 token 的成本因方向而异,为 $0.185 或 $0.43,比率为 0.43 / 0.185,约为 2.3。如果供应商的输出费率远高于输入费率,那么以生成为主的产品比以摘要为主的产品成本高得多。使用你自己的比例对比供应商,绝不要使用平均值。
用一个脚本测量两个 API
此脚本运行提示词列表,并打印我们接口的测量 token 数和成本。对于另一家供应商,以相同方式使用他们的 SDK 和基础 URL,收集相同的两个计数器,并应用他们的费率。
from openai import OpenAI
client = OpenAI(
base_url="https://api.claudeapicosts.com/v1",
api_key="YOUR_KEY",
)
prompts = [
"Summarise in two sentences: The quarterly report shows revenue up and costs flat.",
"Draft a polite reply declining a meeting invitation.",
"Write a 150-word product description for a steel water bottle.",
]
tin = tout = 0
for p in prompts:
r = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": p}],
)
tin += r.usage.prompt_tokens
tout += r.usage.completion_tokens
print("input tokens:", tin, "output tokens:", tout)
print("cost at 0.15 / 0.50 per 1M: $%.6f" % (tin * 0.15 / 1e6 + tout * 0.50 / 1e6))
usage 块随每个非流式响应一起提供,流式输出时则在流结束时到达。在比较时,使用这些数字而不是离线 token 估计。
价格卡未显示的成本
- 重试和拒绝。 在该服务中,失败或拒绝的请求不收费。检查每个供应商如何处理它们。
- 缓存和批量折扣。 某些供应商对重复的提示词前缀或离线批量作业提供折扣。如果你的工作负载适合,有效费率可能低于列表费率。阅读他们的当前定价以获取规则。
- 最低充值额与过期时间。 在此,充值额从 $20 到 $500 不等,且额度永不过期。其他计划可能有所不同。
- 速率限制。 完整 API 密钥允许 8 个并发请求和每分钟 300 个请求。如果你的峰值流量超过此限制,较低的费率可能无法使用。
- 支付方式。 此处的充值仅支持加密货币,即 TRC20 链上的 USDT 或 Base 链上的 USDC。如果这不符合你的需求,节省的费用也就毫无意义。
导致供应商比较失真的错误
- 比较不同大小的模型。 小型快速模型与大型推理模型是不同的产品。请比较你真正会在两者之间进行选择的那些模型。
- 混淆每 1,000 个 token 与每 100 万 token 的费率。 每 1,000 个 token $0.00015 的费率相当于每 100 万 token $0.15。请先进行换算。
- 忽略上下文窗口限制。 此处的窗口为 100,000 tokens。如果任务需要更多,成本就不是问题了。
- 仅运行一次。 输出长度会有所不同。请对每个提示词运行几次并取平均值。
该 API 在比较中的定位
这既不是 Anthropic 的 API,也不是 OpenAI 的 API。它是一个独立的 OpenAI 兼容服务,提供单一开放权重模型,模型 ID 为 uncensored,经过调优可在合法成人用途下无内容审查地回答问题。该服务仅支持文本,拥有 100,000 个 token 的上下文窗口。其价值在于低 token 单价、无订阅费用以及标准接口。
公平地看待其劣势。如果你需要特定供应商的模型、图像或音频输入、嵌入或最强的推理能力,请首先根据这些需求进行比较,其次才是成本。如果你的工作负载是小说、角色扮演、陪伴应用或其他供应商拒绝的内容,价格和其不拒绝(内容)的特性共同可能成为决定因素。禁止涉及未成年人的性内容。
切换代码很简单。将 Base URL 更改为 https://api.claudeapicosts.com/v1,密钥和模型更改为 uncensored。文档涵盖了接口和参数,定价页面列出了费率和奖励:充值满 $50 起 +5%、满 $100 起 +10%、满 $200 起 +15%。如需更详细的成本背景,请参阅 我们对无审查 LLM 成本的分析。要免费运行上述脚本,请在 API 密钥页面领取 $0.50 试用额度。
