OpenAI API 定价:常见误区及如何避免
OpenAI API 定价常令开发者感到意外,因为输入和输出令牌分别计费,且如果未仔细跟踪,流式响应可能会增加成本。了解这些机制有助于避免意外费用,并为您的预算选择合适的模型配置。
摘要
- 输入 token 每百万个收费 $0.15,输出 token 每百万个收费 $0.50,使用我们的 uncensored 模型。
- 流式响应仍将所有生成的令牌计入你的预付费余额。
- 上下文窗口限制影响输入和输出 token 的计算。
- 预存额度永久有效,仅对实际用量(包括错误请求)收费。
理解令牌成本:输入与输出
OpenAI API 定价对输入和输出令牌分别计费。这意味着您的总成本取决于您发送的数据量以及模型生成的数据量。输入令牌涵盖您的提示词以及任何对话历史。输出令牌涵盖模型的响应文本。
我们的无审查模型对每百万输入令牌收取 $0.15,对每百万输出令牌收取 $0.50。较高的输出成本反映了生成文本所需的计算资源。较短的响应成本更低,但仍会消耗您的预付信用额度。
- 输入 token 包含您的提示词和对话历史
- 输出 token 涵盖模型的完整响应
- 两种令牌类型均计入您的预付费余额
- 错误和拒绝消耗零令牌
curl https://api.mistralopenaicompatibleapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "list top 5 linux commands for disk cleanup"}]
}'
上下文窗口限制和意外费用
上下文窗口限制直接影响你的 token 成本,因为更长的对话会消耗更多输入 token。我们的无审查模型支持 100,000 个 token 的上下文窗口,涵盖提示词和补全部分。每次请求最多可生成 16,000 个 token。如果省略 max_tokens,限制将降至 2,048 个 token。
较长的上下文窗口意味着更高的输入令牌成本,但也支持更复杂的推理。精简对话历史可降低输入成本,但可能会降低响应质量。找到适合你用例的平衡点。
- 输入加输出的 100,000 总上下文窗口
- 每次请求最多1.6万输出令牌
- 如果省略 max_tokens,默认输出 token 为 2,048
- 上下文窗口既影响成本也影响响应质量
from openai import OpenAI
client = OpenAI(base_url="https://api.mistralopenaicompatibleapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
流式与非流式令牌计算
流式响应的 Token 计算方式与非流式请求相同。无论采用何种交付方式,发送给客户端的每个 Token 都会计入您的预付费余额。流式传输只是将 Token 增量发送,而非一次性全部发送。
在需要实时反馈但需仔细追踪令牌使用情况时使用流式传输。最后一个数据块包含输入和输出的总令牌计数。监控这些计数以确保在预算范围内。
- 流式传输和非流式传输使用相同的 Token 计数
- 发送到客户端的每个令牌都会消耗信用额
- 最终块包括总输入和输出 token 计数
- 在您的流式实现中追踪令牌使用情况
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
常见的 SDK 配置错误
SDK 配置错误会导致意外费用,例如发送过多令牌或发出冗余请求。开发者经常忘记设置 max_tokens,导致响应意外过长。其他人则忽略了流式传输实现,导致在响应完成后继续发送令牌。
使用显式参数配置您的 SDK。设置 max_tokens 以控制输出长度。仅在需要实时反馈时启用流式传输。在您的应用程序日志中监控 token 使用情况。
- 设置显式的 max_tokens 以控制输出长度
- 仅在需要实时反馈时启用流式传输
- 在应用程序日志中监控 token 计数
- 配置超时值以防止请求挂起
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.mistralopenaicompatibleapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
为什么预付费信用额度能帮你省钱
预付费信用额度通过仅按实际 token 使用情况收费来消除订阅浪费。我们的系统按每百万输入 token $0.15 和每百万输出 token $0.50 收费。错误和拒绝请求消耗零 token,因此您永远不会为失败的请求付费。
使用加密货币充值 $20 至 $500,支持 TRC20 上的 USDT 或 Base 上的 USDC。充值 $50 及以上可获得额外信用额度。信用额度永不过期,您可随时使用。无月费意味着您只需为实际消耗付费。
- 预付费信用额度仅按实际 token 使用情况收费
- 错误和拒绝消耗零令牌
- 充值 $20 至 $500 的加密货币
- 积分永不过期,且享有奖励积分
避免速率限制惩罚
速率限制可防止滥用,但如果配置不当,可能会中断您的应用。我们的 API 允许每个密钥每分钟 300 次请求,每个密钥 8 个并发请求。请求体必须保持在 8 MB 以下,以避免被拒绝。
在达到速率限制时使用指数退避实现重试逻辑。监控您每分钟的请求数以保持在限制内。为不同的应用程序组件使用单独的密钥以分配负载。每个账户一个活动密钥意味着您必须仔细管理密钥轮换。
- 每个 API 密钥每分钟 300 次请求
- 8 concurrent requests allowed per key
- 请求体必须小于 8 MB
- 每个账户一个活跃密钥,支持替换功能
对比无审查模型成本
无限制模型通常比标准模型成本更高,因为需要专门的训练和推理要求。我们的模型每百万输入 token 收费 $0.15,每百万输出 token 收费 $0.50。此定价反映了无限制生成所需的计算资源。
标准模型可能成本较低,但包含影响回复质量的内容限制。无审查模型为合法的成人内容、虚构作品和研究提供不受限制的回答。根据你的内容需求而非仅凭价格进行选择。
- 无审查模型需要专门的训练和推理
- 我们的定价反映了无限制生成的计算成本
- 内容限制影响响应质量和成本
- 根据内容需求而非仅根据价格进行选择
跟踪使用情况与账单警报
Token 使用跟踪可帮助您监控成本并防止预算超支。我们的 API 会在每个响应(包括流式响应)中返回 token 数量。请在您的应用程序日志和仪表板中跟踪这些数量。
当使用量达到特定阈值时设置警报。监控输入与输出 token 比率以优化提示。使用 token 计数计算实际成本,并与预付费余额进行比较。
- Token 计数出现在每次响应中,包括流式响应
- 监控输入与输出 token 的比例
- 设置使用量警报以防止预算超支
- 使用 token 数量计算实际成本
常见问题
我如何计算 API 费用?
将输入 token 数量乘以每百万 $0.15,将输出 token 数量乘以每百万 $0.50。将这些值相加,即可得到单次请求的总成本。在应用程序日志中跟踪 token 数量,以监控随时间推移的使用情况。
流式响应比非流式响应更贵吗?
否。流式传输和非流式响应使用相同的令牌计数。发送到客户端的每个令牌都计入您的预付费余额,无论交付方式如何。最终的流式传输块包含输入和输出的总令牌计数。
如果我触及我的速率限制会怎样?
请求超过每分钟 300 次或 8 个并发请求限制时将返回错误响应。这些错误不消耗 token,因此不会收费。实现带有指数退避的重试逻辑以优雅地处理速率限制。
预付费信用会过期吗?
否。预付额度永不过期,您可以随时使用它们。您只为实际的 Token 用量付费,包括错误和拒绝生成的请求,这些请求消耗零 Token。需要更多额度时,请使用加密货币充值。
获取您的 API 密钥
注册,获取密钥,更新端点基础 URL。就这样。