中文 ▾
立即开始
每 1M 输入 token
$0.15
输出 token / 1M
$0.50
token 上下文
100,000
试用额度
$0.50
每分钟请求数
300

OpenAI API 替换:迁移清单

OpenAI API 替换只有在先检查三件事时才能顺利运行:你的代码调用了哪些接口、依赖哪些功能,以及新模型在你的提示词上的表现。此清单涵盖所有这三项,并附带你今天即可运行的命令。

最后更新于

玻璃管道在两个阀门之间重新连接,旁边是亮灯和未亮灯的状态面板

总结

  • 更改 Base URL 后,标准 OpenAI SDK 支持聊天补全、响应、流式输出、工具和 JSON 模式。
  • 嵌入、图像、音频和微调接口不可用。请将这些保留在当前的提供商处。
  • 模型不同,因此在切换前请测试提示词。保留一个切换回退的开关。
  • 计费为预付且按 token 计费:每 1M 输入 token $0.15,每 1M 输出 token $0.50。

步骤 1:清点你的代码调用了什么

在更改任何内容之前,列出你实际使用的 OpenAI 功能。大多数项目使用的功能少于预期,该列表决定了这次替换是只需五分钟的工作还是部分替换。从项目根目录运行以下命令:

# New values you will point the project at:
export OPENAI_BASE_URL="https://api.alternativeapiopenai.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"
export MODEL="uncensored"

# What does the code call today?
grep -rnE "embeddings|images\.|audio\.|fine_tuning|moderations|assistants|batches" --include="*.py" --include="*.js" --include="*.ts" .
grep -rnE "model *[=:] *['\"]" --include="*.py" --include="*.js" --include="*.ts" .

第一个 grep 找出该 API 未提供的接口。第二个列出所有硬编码的模型名称,你需要更改它们。将结果放入一个简短的表格中,每行一个功能:已使用、未使用,以及如何处理。

步骤 2:与支持的项对比

OpenAI 功能在此处备注
聊天补全是POST /v1/chat/completions
响应 API是POST /v1/responses
列出模型是GET /v1/models 返回 uncensored
流式输出是SSE,末尾包含使用情况
函数调用是tools、tool_choice、流式 tool_calls、role: "tool" 结果
JSON 模式是response_format: {"type":"json_object"}
采样参数是temperature、top_p、stop、seed、penalties
嵌入否不提供
图像、音频、视频生成否仅文本
微调否不提供

此表支持侧之外的任何内容都应视为不可用,直到你在 文档中确认。这包括受模式约束的输出:JSON 模式使模型返回有效的 JSON,但它不强制执行你自己的模式,因此保留你的验证代码。聊天消息中的图像输入也未列出,因此计划仅使用文本提示词。

该模型是一个由独立提供商运行的单一开放权重模型。它不是 OpenAI 的模型,也不是任何供应商的官方 API,也不在供应商之间路由。预期会有不同的风格、不同的优势和不同的故障模式。

步骤 3:进行替换

使用官方 Python SDK,需要更改三个值:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.alternativeapiopenai.com/v1",  # was the default OpenAI URL
    api_key="YOUR_API_KEY",                               # was your old key
)

resp = client.chat.completions.create(
    model="uncensored",                                   # was your old model name
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)

更好的做法是将基础 URL、密钥和模型名称保留在配置中,以便同一构建可以指向任一提供商。一种简单的模式是使用三个环境变量:LLM_BASE_URL、LLM_API_KEY 和 LLM_MODEL。然后回滚意味着更改三个值并重启,而不是发布新版本。

如果你的代码使用响应 API,同样的三个值适用。对于 LangChain 或 LlamaIndex 等框架,查找 OpenAI 兼容连接器并传递相同的 Base URL 和模型名称。

步骤 4:在生产前测试

任何模型替换中的风险在于行为,而非连接。按以下顺序测试:

  1. 连接。 使用 curl 发送一个请求。如果返回回复,则密钥和 URL 正确。
  2. 你的真实提示词。 重放至少二十个生产提示词并检查结果。检查语气、长度和指令遵循情况。
  3. 工具调用。 运行你的每个工具并检查模型生成的参数。确认你的循环处理流式响应中的 tool_calls。
  4. JSON 输出。 运行一百次 JSON 模式调用,并统计有多少次未能通过你的解析器或模式检查。
  5. 长输入。 上下文窗口为 100,000 个 token(提示词加补全)。测试一次大提示词,以了解所需时间。
  6. 限制。 完整密钥允许 8 个并发请求和每分钟 300 个请求。在你的真实峰值进行负载测试。

Token 计数会有所不同

如果你的代码使用为其他模型构建的分词器库来估算 token,请将结果视为近似值。使用每次响应中的 usage 对象进行计费和预算,并在修剪历史记录以适配 100,000-token 上下文窗口时留出安全余量。此处设置 max_tokens 是可选的,但合理的上限可防止失控的回复花费超出你计划的费用。

错误的外观

超过限制时,API 返回 HTTP 429 状态码,错误代码为 rate_limited(每分钟请求数)或 concurrency(同时请求过多)。临时过载也会返回 429,并附带 Retry-After: 5 头。流式输出请求会占用其并发槽位,直到流结束,因此慢速客户端会占用你的配额。失败或被拒绝的请求不会计费。

步骤 5:检查成本

价格为每 1M 输入 token $0.15,每 1M 输出 token $0.50,从预付额度中扣除。要与你的当前账单进行比较,请使用 usage 字段中的你自己的 token 计数,并应用公式:cost = input_tokens x 0.15 / 1,000,000 + output_tokens x 0.50 / 1,000,000。对于其他提供商,请查看其当前定价并填入相同的计数。

工作示例:一个支持工具每月处理 30,000 个请求,每个请求有 1,200 个输入 token 和 250 个输出 token。输入为 36M token,成本为 $5.40。输出为 7.5M token,成本为 $3.75。月度总计为 $9.15。如果相同的工作量填满上下文窗口,即每个请求 100,000 个输入 token,则仅输入成本为 $0.015,因此提示词大小是需要关注的数字。

定价页面列出了充值金额。金额范围为 $20 至 $500,其中 $50 起 +5%,$100 起 +10%,$200 起 +15%,仅支持加密货币支付(TRC20 上的 USDT 或 Base 上的 USDC)。额度永不失效,且无订阅制。相关指南无审查模型的 API 定价更详细地解释了成本结构。

第 6 步:部署并保留回退方案

首先将少量流量发送到新端点。记录 X-Request-Id 响应头中的请求 ID,以便追踪错误回答,并在调用后记录 X-Balance-USD,以防额度在不知情的情况下耗尽。当余额低于几天的消耗量时发出警报。

当影子流量表现良好时,逐步增加流量比例,并保留旧提供商的密钥一周有效。对于涉及成人内容的情况,该模型适用于合法的成人用途,且涉及未成年人的性内容始终会被拒绝。提示词不会用于训练。

新账户可在 API 密钥页面 一键领取 $0.50 的试用额度,有效期 7 天,足以在您的流量样本上运行整个检查清单。

常见问题

我现有的 OpenAI SDK 代码能工作吗?

对于聊天完成和响应,是的。更改基础 URL、密钥和模型名称。对嵌入、图像、音频或微调的调用将不起作用。

回答质量与 OpenAI 的模型相同吗?

不,这是一个不同的开放权重模型。测试你自己的提示词,而不是假设两者在任何方向上都具有对等性。

如果出现问题,我该如何回退?

在配置中保留基础 URL、密钥和模型,并保持旧提供商的密钥处于活动状态。然后只需更改配置即可切换回来。

支持函数调用吗?

是的。使用工具并设置 tool_choice,并以 role tool 的消息形式返回结果。支持流式输出的 tool_calls。

生成密钥仅需填写表单

注册,复制你的密钥,并更新你的基础 URL。这就是所需的全部配置。