卓普云

OpenAI API如何迁移到兼容平台?代码修改与功能差异详解

介绍如何将 OpenAI API 迁移至 DigitalOcean 无服务器推理,并说明兼容端点、代码修改与功能限制。

2026年7月30日
OpenAI API如何迁移到兼容平台?代码修改与功能差异详解

如果你的应用已经接入 OpenAI API,但又希望使用 Llama、OpenAI、Anthropic 等不同厂商的模型,或者不想让业务长期绑定在单一模型平台上,那么迁移成本往往是首先需要考虑的问题:现有代码要改多少?OpenAI SDK 能不能继续使用?流式输出、工具调用、Embeddings 和批量推理是否兼容?

DigitalOcean Serverless Inference 提供与 OpenAI 兼容的 API 接口。对于基础的 Chat Completions 调用,开发者可以继续使用 OpenAI Python SDK,通常只需修改基础 URL、API 凭证和模型 ID,就能将请求切换到 DigitalOcean 云平台的无服务器推理(Serverless Inference)

不过,“OpenAI 兼容”并不等于“OpenAI 的所有功能都能原样迁移”。不同模型支持的 API 接口、请求参数、工具调用方式和上下文限制可能并不相同,Assistants、Threads 等 API 也没有直接对应的兼容端点。

因此,本文不仅会给出一套可以直接运行的迁移代码,还会逐项说明 DigitalOcean Serverless Inference 支持哪些 OpenAI API、哪些功能需要调整,以及正式迁移生产业务前应重点验证哪些兼容性问题。

从 OpenAI 迁移到 DigitalOcean Serverless Inference:代码对比

以下是原始的 OpenAI 代码:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
)

resp = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Tell me a fun fact about octopuses."},
    ],
)

print(resp.choices[0].message.content)

下面是使用 DigitalOcean 云平台的无服务器推理(Serverless Inference) 发起相同调用的代码:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://inference.do-ai.run/v1",
    api_key=os.getenv("MODEL_ACCESS_KEY"),
)

resp = client.chat.completions.create(
    model="llama3.3-70b-instruct",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Tell me a fun fact about octopuses."},
    ],
)

print(resp.choices[0].message.content)

两个示例之间的变化如下:

项目OpenAIDigitalOcean Serverless Inference
base_url默认值(无需设置)https://inference.do-ai.run/v1
使用的凭证OpenAI API 密钥DigitalOcean 模型访问密钥
环境变量示例OPENAI_API_KEYMODEL_ACCESS_KEY
模型 IDgpt-4ollama3.3-70b-instruct(你也可以换成claude、Kimi K3、GLM或其他模型)
身份验证方案Bearer TokenBearer Token(不变)
使用的 SDK 方法client.chat.completions.create()client.chat.completions.create()(不变)
消息格式基于角色的列表基于角色的列表(不变)

如何获取凭证: 在 DigitalOcean 控制面板中依次进入 InferenceServerless Inference,然后创建一个 Model Access Key。该密钥与 OpenAI 控制台中的密钥并不相同。

HTTP 请求仍然使用 Bearer Token 进行身份验证,变化的是凭证本身:你需要将 OpenAI API 密钥替换为 DigitalOcean 模型访问密钥或受支持的 DigitalOcean 个人访问令牌。

模型 ID 由 DigitalOcean 单独定义。llama3.3-70b-instruct 是 DigitalOcean 模型目录中的 ID,并不是一个恰好也能在这里使用的 OpenAI 模型名称,而且模型目录会随时间变化。因此,应调用 GET /v1/models 或查看控制面板中的模型目录,而不要凭经验猜测模型名称。更换模型 ID 并不会改变 API 调用结构,但这不代表新模型的行为会与原模型完全一致。在迁移生产工作负载之前,应测试输出质量、上下文长度限制和工具支持情况。

不同模型和端点所支持的请求参数可能有所不同。不要想当然地认为每一个 OpenAI 参数在所有模型上都会以相同方式工作。在依赖高级参数之前,请查阅最新文档,或者直接咨询 DigitalOcean 中国区战略合作伙伴卓普云(aidroplet.com)。

注:这里我们是以llama3.3 作为示例。你也可以替换成其他模型,DigitalOcean 平台上还提供了Claude opus5GLM 5.2Kimi K3 等一系列商业模型与开源模型,详情请以DigitalOcean 云平台的无服务器推理(Serverless Inference) 页面信息为准。

以下是一个流式输出示例:

stream = client.chat.completions.create(
    model="llama3.3-70b-instruct",
    messages=[{"role": "user", "content": "Write a haiku about Kubernetes."}],
    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,也可以通过原始 HTTP 请求发起相同调用:

curl -X POST https://inference.do-ai.run/v1/chat/completions \
  -H "Authorization: Bearer $MODEL_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.3-70b-instruct",
    "messages": [{"role": "user", "content": "What is the capital of France?"}],
    "temperature": 0.7,
    "max_completion_tokens": 256
  }'

DigitalOcean Serverless Inference 支持哪些 OpenAI 兼容端点?

下表列出的是从 OpenAI 迁移时最相关的端点,并非 DigitalOcean API 的完整清单。

端点DigitalOcean 路径支持情况主要兼容性说明
Chat Completions/v1/chat/completions支持工具支持取决于具体模型和使用的 API 接口,详情见下文。
Responses API/v1/responses支持并非 OpenAI Responses API 的每一项功能都能在 DigitalOcean 中找到对应能力。
Embeddings/v1/embeddings支持适用于语义搜索和检索增强生成(RAG)。
图像生成/v1/images/generations支持base64 格式返回图像。请在模型目录中查看当前可用的图像模型。
批量推理/v1/batches支持,但采用独立工作流这是一个独立的异步工作流,并非实时的 OpenAI 兼容端点。提交任务后,需要轮询获取结果。详情见下文。

其中几个端点需要进一步说明。

  • Chat Completions 说明: 工具支持取决于具体模型和 API 接口,不同接口之间不能直接互换。OpenAI 和 Anthropic 模型可以通过 Chat Completions API 和 Responses API 使用,但每个模型所支持的 API 接口可能不同。部分 OpenAI 模型在 Serverless Inference 中仅支持 Responses API,不支持 Chat Completions。因此,在默认 Chat Completions 可用之前,应先到模型目录中查看每个模型支持的 API 接口。Anthropic 模型还提供独立的 Anthropic 原生 Messages API(client.messages.create()),用于调用 Anthropic 自己的工具使用规范。DigitalOcean 的服务端工具,例如网页搜索、知识库检索和 MCP,可以与 Chat Completions API 和 Responses API 配合使用。另一个独立功能 Tool Search 可以让模型只加载当前需要的工具定义,而不必一次加载全部工具;该功能可用于 Anthropic 模型的 Messages API,以及受支持 OpenAI 模型的 Responses API。

  • Responses API 说明: 支持的功能包括文本响应、多模态响应、提示缓存,以及部分配置下的推理能力。在认定某项功能与 OpenAI 上的行为一致之前,应先确认工具支持、推理能力和多模态输入的处理方式。

  • 批量推理说明: 批量推理是一个独立的异步工作流,并非可以直接替换的实时端点。它的 API 可以接收按照 OpenAI Batch API 或 Anthropic Message Batches API 格式准备的输入文件,并使用各提供商的原生格式,不会在两种格式之间进行转换。批量推理与实时 Serverless Inference 使用相同的基础 URL 和模型访问密钥,但采用独立的速率限制。如果你已经在运行 OpenAI 或 Anthropic 批处理任务,DigitalOcean 将迁移方式描述为更改端点和身份验证配置,而不是重写文件格式。其限制包括:仅支持商业 OpenAI 和 Anthropic 模型的文本提示,不支持开放权重模型、多模态输入或图像生成。OpenAI 批处理请求必须包含 endpoint 字段,并将其设置为 /v1/chat/completions/v1/responses,且必须与 JSONL 文件内容匹配;Anthropic 请求则无需该字段。在迁移任务之前,请先查阅批量推理文档。

DigitalOcean 不支持哪些 OpenAI API?

在目前公开的 Serverless Inference API 文档中,以下 OpenAI 端点没有对应的 OpenAI 兼容接口。某个端点未出现在 API 参考文档中,只能说明它在 API 兼容层面不受支持,并不代表所有 DigitalOcean 产品都没有相应能力。

OpenAI APIDigitalOcean 支持情况说明
Assistants API不支持没有 /v1/assistants 端点。
Threads API不支持没有 /v1/threads 端点。对话历史不会存储在服务端,仍需由应用自行管理。
微调不支持没有 /v1/fine_tuning/jobs 端点。
内容审核不支持没有 /v1/moderations 端点。

DigitalOcean 提供了自己的 Agent 开发工具,包括 Agent Development Kit,但它们属于独立产品,并不能直接替换基于 OpenAI Assistants API 编写的代码。

DigitalOcean Serverless Inference 能否直接替代 OpenAI?

对于基础的 Chat Completions 调用,它基本可以做到直接替换。但如果使用范围超出基础调用,就不能将其视为 OpenAI API 的完整平替。

变化项OpenAIDigitalOcean Serverless Inference
模型 IDOpenAI 模型名称(例如 gpt-4oDigitalOcean 模型目录 ID(例如 llama3.3-70b-instruct),可通过 GET /v1/models 获取
凭证OpenAI sk- 密钥DigitalOcean 模型访问密钥或个人访问令牌(以 Bearer Token 形式发送)
速率和用量限制由 OpenAI 账户等级决定由 DigitalOcean 设置,可能因账户等级、模型和推理模式而异
商业模型访问权限取决于 OpenAI 套餐新账户(Tier 1 和 Tier 2)最初只能使用开放权重模型(openai-gpt-oss-120bopenai-gpt-oss-20b);升级到更高等级后才能解锁商业模型。详情请参阅 Inference Limits
“OpenAI 兼容”的含义不适用指请求和响应格式兼容,并不保证所有 OpenAI 工具、API 功能或 SDK 行为都完全一致

如需查看完整的端点列表以及请求和响应详情,请参阅 Serverless Inference API 端点文档API 参考文档

总结

对于基础的 Chat Completions 调用,切换到 DigitalOcean Serverless Inference 只需修改三处:基础 URL、凭证和模型 ID。除此之外,应将它理解为格式兼容 OpenAI,而非与 OpenAI 功能完全对等。迁移生产流量之前,请通过 GET /v1/models 确认模型 ID,核实应用依赖的具体参数、工具和端点是否受支持,并查看模型目录及推理服务限制。

相关产品与选型

把教程落到可用的云资源上

相关标签

相关文章

AI 推理服务迁移指南:从 OpenAI、Anthropic 切换到多模型推理云
教程

AI 推理服务迁移指南:从 OpenAI、Anthropic 切换到多模型推理云

介绍如何将 AI 推理从 OpenAI、Anthropic 迁移至多模型云,涵盖接口修改、兼容性测试与上线流程。

2026年7月29日
DeepSeek v4 Pro / GLM 5.2 / Kimi K2.6 / GPT 5.6 Sol:4 款大模型在 DigitalOcean 无服务器推理上的成本与能力对比
教程

DeepSeek v4 Pro / GLM 5.2 / Kimi K2.6 / GPT 5.6 Sol:4 款大模型在 DigitalOcean 无服务器推理上的成本与能力对比

Kimi K2.6、DeepSeek v4 Pro、GLM 5.2、GPT 5.6 Sol——四款模型在 DigitalOcean 无服务器推理上的定价分别为 $0.76/$1.39/$1.05/$5.00(输入,/M tokens)和 $3.20/$2.78/$4.40/$30.00(输出)。本文通过定价对比、TTFB 一致性和场景化成本测算,拆解哪个模型在什么场景下最划算,以及如何用 Inference Router 实现跨模型自动路由将总成本降低 70% 以上。

2026年7月22日
同一个大模型,为什么在不同云平台跑出来的推理效果完全不同?
教程

同一个大模型,为什么在不同云平台跑出来的推理效果完全不同?

同一模型在不同平台跑出来效果截然不同。根源不在模型本身,而在供应商对基础设施的隐性决策。选型前必须自己动手测。

2026年7月20日