跳到正文

迁移指南从 直接使用 OpenAI 和 Anthropic SDK

从直接调用 SDK,到一个控制平面

大多数团队一开始都用厂商自己的 SDK 和环境变量中的密钥调用 OpenAI 或 Anthropic。这在服务、密钥都变多,并出现一张没人能归因的月度发票之前都行得通。本页介绍如何修改代码,在不更换 SDK、提供商账号或合同的前提下,把 INFRO 放在这些调用前面。

你自己的代码,用各家提供商的密钥调用各自的 SDK

INFRO 账号可自助开通。 模型目录、文档和 API 契约已公开,网关已部署,v1 之后的所有功能都标注为“后续”。 套餐与试用

现状

你现有的

提供商密钥存放在每个服务的环境中,重试和超时在每个代码库中各写一遍,成本只能在提供商的发票或用量页面上看到,最多按密钥或项目区分。

有哪些变化

每个客户端使用 INFRO 网关密钥指向 https://api.infro.io。你的提供商密钥作为连接迁入 INFRO,加密封存;你的提供商继续按你自己的价格直接向你收费。

哪些不变

SDK、请求和响应格式、流式传输、工具调用以及 chat completions 上的结构化输出。INFRO 支持 OpenAI 的 Chat Completions 和 Responses 格式,以及 Anthropic 的 Messages 格式。

网关意味着多一跳、多一家供应商。对某些架构来说,现在还不值得,这份列表就是对此的如实说明。

  • 一个服务、一家提供商、一个密钥,账单只有一个人看。网关在带来任何你需要的东西之前,先增加了一跳和一份订阅。
  • 你的工作负载主要是 Batch、微调、Files、向量存储或 Realtime API。INFRO 都不提供;这些调用本来也会保持直连。
  • 你依赖聊天格式无法承载的某个提供商功能,并且你只使用该提供商。INFRO 无法承载的调用,与其改一半,不如保持直连。
  • 你需要每个请求都留在同一个云区域内。INFRO 运行在 Cloudflare 的网络上,目前不提供区域固定。

需要的修改,每项一行。未在此列出的内容都保持不变。

 直接调用 SDKINFRO
基础 URLSDK 默认值:api.openai.com/v1、api.anthropic.com。OpenAI SDK 使用 https://api.infro.io/v1;Anthropic SDK 使用 https://api.infro.io(它会自动追加 /v1/messages)。
密钥每个服务中的 OPENAI_API_KEY、ANTHROPIC_API_KEY。一个 INFRO 网关密钥(Authorization: Bearer;也接受 Anthropic SDK 的 x-api-key)。提供商密钥只需在控制台中录入一次,作为连接保存。
模型 IDgpt-5.6-terra, claude-sonnet-5-5.chat completions 上使用 openai/gpt-5.6-terra,或路由规则名称。Anthropic SDK 可以继续使用 claude-sonnet-5-5:/v1/messages 识别 Anthropic 自己的 ID。
归因通常没有,或者是提供商的 user 字段。请求体中的 metadata.user_id、metadata.session_id、metadata.tags,或 X-INFRO-User-Id / X-INFRO-Feature 请求头。记录在请求上,绝不发送给提供商。

之前 · 提供商 SDK

import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";

const openai = new OpenAI(); // reads OPENAI_API_KEY
const anthropic = new Anthropic(); // reads ANTHROPIC_API_KEY

await openai.chat.completions.create({
  model: "gpt-5.6-terra",
  messages: [{ role: "user", content: "Hello" }],
});

await anthropic.messages.create({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});

之后 · INFRO

import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";

const openai = new OpenAI({
  baseURL: "https://api.infro.io/v1",
  apiKey: process.env.INFRO_API_KEY,
});
const anthropic = new Anthropic({
  baseURL: "https://api.infro.io",
  apiKey: process.env.INFRO_API_KEY,
});

await openai.chat.completions.create({
  model: "openai/gpt-5.6-terra",
  messages: [{ role: "user", content: "Hello" }],
});

await anthropic.messages.create({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});

无需新代码的故障转移

在 Anthropic 和 Vertex AI 上连接 Claude,或者连接两个 Anthropic 密钥,指定该模型的请求就会在它们之间故障转移。命名的路由规则在配置中设置顺序和按故障类型的规则(429、5xx、超时)。

调用之前执行预算

组织、项目、成员和密钥级别的预算会在调用提供商之前预留请求的最坏情况费用。达到上限时返回 402 budget_exceeded,使用该 API 自己的错误结构。

哪些不必动

Batch、Files、微调、向量存储、内容审核和 Realtime 保留各自的直连客户端。一个服务可以同时持有两个客户端:一个通过 INFRO,一个直连。嵌入可以迁移,但要严格保持构建索引时所用的模型:不同模型生成的向量无法比较。

你当前设置的功能与 INFRO 的对照,并已按网关实际实现的内容核对。 有一行显示 INFRO 没有对应项。

直接调用 SDK它在那里的作用在 INFRO 中
每个服务一个提供商密钥不同每个服务在其环境中持有提供商的密钥。密钥是一个连接,加密封存在 INFRO 中;服务持有限定范围的网关密钥,可限定提供商、模型、IP 范围和环境,可轮换或停用。
重试和超时不同SDK 自身的重试,加上每个代码库各自添加的逻辑。在你的连接之间设置按优先级或权重分配目标的路由规则,以及按故障类型的规则(429、5xx、超时)。SDK 自身的重试仍会叠加生效。
费用不同提供商的用量页面和发票,按密钥或项目区分。每个响应附带预估提供商费用(usage.cost、usage.price_source),可按项目、密钥、用户和标签查看;使用你添加的管理员密钥,每天与 OpenAI 和 Anthropic 自己的成本 API 对账。
支出限额不同提供商一侧的项目限额(如果提供商提供)。在达到上限时以 402 拒绝的预算,同时覆盖所有提供商,可设置在组织、项目、成员、密钥和终端客户级别。
Chat Completions 和 Responses形式相同OpenAI 的两个文本 API。两者都支持,位于 /v1/chat/completions 和 /v1/responses。previous_response_id 和 background 会被拒绝:INFRO 不保存响应,因此每一轮都要发送完整对话。
Anthropic Messages形式相同/v1/messages,支持 thinking、cache_control 和服务端工具。Anthropic 格式的 /v1/messages。在 Anthropic 连接或 Vertex AI 上的 Claude 中,请求体会原样到达提供商。
图像、语音、转写、视频形式相同提供商的媒体端点。/v1/images、/v1/audio、/v1/videos,使用异步任务,在提供各模型的提供商上运行。
Embeddings形式相同/v1/embeddings.在你的 OpenAI、Azure OpenAI 或 Mistral 连接上,以 OpenAI 格式提供 /v1/embeddings。只会故障转移到同一个模型,因此已存储的向量仍可比较。
Batch、Files、微调、Realtime无对应账号级别的提供商 API。不提供,也不计划作为网关功能。它们保留在提供商上。

INFRO 不做的事

  • Batch、Files、微调、向量存储、内容审核、Assistants 和 Realtime API。
  • 已存储的响应:/v1/responses 上的 previous_response_id、conversation 和 background: true 会以 400 拒绝。
  • 区域固定。INFRO 运行在 Cloudflare 的网络上;数据驻留在路线图上,目前不提供。
  • 没有企业协议的自托管部署。

哪些无法迁移过来

  • 切换之前的用量历史。提供商自己的仪表盘会保留它;INFRO 从它处理的第一个请求开始记录。
  • 提供商一侧的项目限额。改为设置 INFRO 预算;提供商的限额在其一侧仍然有效。

问题

我仍然直接向 OpenAI 和 Anthropic 付费吗?
是的。INFRO 用你的密钥调用你自己的提供商账号,因此你的提供商按你自己的价格向你收费。INFRO 收取订阅费,对模型支出加价 0%。
我需要更换 SDK 吗?
不需要。OpenAI SDK 的 baseURL 设为 https://api.infro.io/v1,Anthropic SDK 的 baseURL 设为 https://api.infro.io,两者都把 INFRO 密钥作为 API 密钥使用。
哪些必须继续直接使用提供商?
Batch、Files、微调、向量存储、内容审核和 Realtime。INFRO 不提供这些。嵌入可以迁移:/v1/embeddings 可在 OpenAI、Azure OpenAI 和 Mistral 连接上运行。

和我们一起迁移,或自行迁移

迁移计划会在一次通话中把你的 直接使用 OpenAI 和 Anthropic SDK 设置映射为 INFRO 的连接、路由规则和预算,并和你一起迁移第一个服务。你的提供商继续直接向你收费;INFRO 是一项订阅,对模型支出零加价。

来源

本页中关于 SDK 行为的内容来自以下来源,阅读于 2026年10月19日。