OpenAI SDK 怎么接入 OfoxAI?Python、TypeScript 与框架迁移

迁移到 OfoxAI,需要核对 base URL、API Key 和模型 ID。本文给出 Python、TypeScript、流式输出示例,以及 LangChain、LlamaIndex、Vercel AI SDK 的接入检查项。

OpenAI SDK 怎么接入 OfoxAI?Python、TypeScript 与框架迁移

用 OpenAI SDK 接入 OfoxAI,需要把 base URL 设为 https://api.ofox.run/v1,换成 OfoxAI 的 API Key,并核对当前目录中的模型 ID。SDK 可以保留,但业务用到的端点和参数仍要验证。本文示例使用 Chat Completions,不能据此推断其他接口都能直接迁移。

从 OpenAI 或 OpenRouter 迁移,需要改哪些配置?

核对网关地址、密钥和模型 ID 三项。修改 URL 不会让 OpenAI 或 OpenRouter 的密钥变成 OfoxAI 密钥。

配置OpenAI 直连OpenRouterOfoxAI
Base URLSDK 默认值https://openrouter.ai/api/v1https://api.ofox.run/v1
API KeyOpenAI 密钥OpenRouter 密钥OfoxAI 密钥
modelOpenAI 模型 IDOpenRouter 目录 IDOfoxAI 目录 ID

地址和参数名可查 OfoxAI SDK 接入文档OpenRouter quickstart。从 OpenRouter 迁移时,还要单独检查原有路由参数和模型别名;命名格式相同,不代表行为一致。

Python 怎么配置?

创建客户端时设置 base_urlapi_key,请求时通过 model 指定模型。在项目虚拟环境中运行 python -m pip install openai 安装官方包;Python 版本要求见 SDK 安装说明

通过环境变量或密钥管理工具设置 OFOX_API_KEY。可选的 OFOX_MODEL 用于指定模型,下面默认使用 openai/gpt-4o,该 ID 出现在 2026 年 9 月 9 日检查的公开目录中。不要把密钥提交到代码库;仅新建 .env 文件不会自动让 Python 读取它,还需要相应的加载方式。

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.ofox.run/v1",
    api_key=os.environ["OFOX_API_KEY"],
)
model_id = os.environ.get("OFOX_MODEL", "openai/gpt-4o")

response = client.chat.completions.create(
    model=model_id,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(response.choices[0].message.content)

使用有余额的账户运行代码会产生生成费用。先核对模型价格和账户权限;模型列表请求成功,不代表已经验证生成权限或实际计费。

TypeScript 怎么配置?

TypeScript 使用 baseURLapiKey。安装官方 openai 包,在服务端 TypeScript 项目中运行;具体环境要求见 SDK 安装说明。密钥应保留在服务端。

import OpenAI from 'openai';

const apiKey = process.env.OFOX_API_KEY;
if (!apiKey) throw new Error('Set OFOX_API_KEY before running this example.');

const client = new OpenAI({
  baseURL: 'https://api.ofox.run/v1',
  apiKey,
});

async function main() {
  const response = await client.chat.completions.create({
    model: process.env.OFOX_MODEL ?? 'openai/gpt-4o',
    messages: [{ role: 'user', content: 'Say hello in one sentence.' }],
  });
  console.log(response.choices[0]?.message.content);
}

main().catch((error) => {
  console.error(error.message);
  process.exitCode = 1;
});

模型 ID 应该怎么填?

公开模型列表模型目录复制完整 ID。下表中的条目在 2026 年 9 月 9 日的公开列表中存在,且未标记弃用;后续可用性仍需核对。

想使用的模型OfoxAI ID
GPT-4oopenai/gpt-4o
GPT-4o miniopenai/gpt-4o-mini
GPT-5.2openai/gpt-5.2
Claude Sonnet 4.6anthropic/claude-sonnet-4.6

GPT-5.2 和 GPT-5.4 mini 是不同模型。从 gpt-5.2 改成 openai/gpt-5.4-mini 会切换模型,并非只加厂商前缀。Claude、Gemini、DeepSeek 等模型也要查当前目录,不能一律添加 openai/

共用客户端不代表所有模型能力相同。使用 OpenAI 端点时,核对 supported_endpointssupported_parameters 和输入输出模态;这些字段本身不能证明另一种原生协议是否受支持。

流式输出和工具调用要怎么验证?

流式响应要单独测试,不能用普通文本请求成功代替。沿用上面的 Python 客户端和 model_id,消费增量文本时要允许出现没有 choices 或文本内容的数据块:

stream = client.chat.completions.create(
    model=model_id,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
    stream=True,
)
try:
    for chunk in stream:
        if chunk.choices:
            text = chunk.choices[0].delta.content
            if text:
                print(text, end="", flush=True)
finally:
    stream.close()

工具调用要验证完整业务流程:提交工具定义、校验模型返回的参数、由应用执行工具,再把结果发回模型。模型返回工具调用,并不等于已经执行了函数。结构化输出也要用业务要求的 schema 校验,不能把 SDK 兼容当作输出正确的保证。

LangChain、LlamaIndex 和 Vercel AI SDK 要注意什么?

选择支持自定义 OpenAI 兼容端点的适配器,并明确业务需要的 API 类型。框架可能在 SDK 之上增加模型名校验、默认参数或厂商专有行为。LangChain 的 ChatOpenAI 以 OpenAI 标准响应字段为目标,不应假定它会保留网关额外返回的推理字段。

框架接入检查项
LangChain配置 ChatOpenAI 的地址、密钥和完整模型 ID,并核对启用功能所用的端点。见 ChatOpenAI 文档
LlamaIndex第三方兼容 API 可参考 OpenAILike 适配器,核对 api_base、模型和能力设置。
Vercel AI SDK为 OpenAI provider 配置 baseURLapiKey;需要 Chat Completions 时显式选择 .chat(modelId)。见 OpenAI provider 文档

Chat Completions 成功,不代表 Responses、嵌入或图片生成也通过了验证。应按项目实际安装的框架版本,分别测试用到的端点。

切换生产流量前,需要检查什么?

使用实际模型和业务请求测试,并保留经过验证的回滚配置。

  1. 核对密钥、账户权限、余额和完整模型 ID。
  2. 测试普通文本生成及业务中的错误处理。
  3. 按需测试流式输出、取消请求、工具调用和结构化输出。
  4. 核对请求大小、token 上限、超时和重试设置。
  5. 对照返回用量与账户账单,把重试请求也纳入检查。
  6. 先迁移少量流量,观察失败率与延迟,通过后再扩大范围。

首次开通与接入见 OfoxAI 快速开始。费用和团队功能可查 OfoxAI 与 OpenRouter 对比;选哪个网关,与应用能否安全迁移,需要分别评估。

常见问题

OpenAI SDK 接入 OfoxAI 应该填哪个 base URL?
填写 https://api.ofox.run/v1,并使用 OfoxAI 的 API Key。Python 参数名是 base_url,TypeScript 是 baseURL;model 则填写当前 OfoxAI 目录中的完整 ID。
迁移后需要改模型名称吗?
需要核对完整 ID。例如 gpt-5.2 对应 openai/gpt-5.2,而不是 openai/gpt-5.4-mini。换成另一款模型属于模型迁移,不能当作加前缀处理。
能用 OpenAI SDK 调用 Claude 吗?
如果所选 Claude 模型支持 OpenAI Chat Completions 端点,可以在同一客户端中使用其 OfoxAI 模型 ID。使用工具调用或结构化输出前,还需核对该模型支持的参数。
改完 base URL 就能直接切换生产服务吗?
不能据此保证迁移成功。应先在测试环境验证鉴权、模型 ID、参数、流式响应、错误处理和计费,并保留可回滚的配置。
这份教程适用于所有 OpenAI 接口吗?
本文示例使用 Chat Completions。Responses、嵌入、图片等接口需要根据所选模型和 SDK 版本分别验证。