← 返回
IT技术

如何将 OpenAI API 迁移到 DigitalOcean 无服务器推理服务的完整步骤

✍️ zhirenhun 📅 2026/10/4 👁 172 阅读 ⏱ 18 分钟
如何将 OpenAI API 迁移到 DigitalOcean 无服务器推理服务的完整步骤

DigitalOcean Serverless Inference 提供 OpenAI 兼容的 API 端点,因此许多现有的 OpenAI SDK 工作流只需少量配置更改即可迁移。对于基本的 Chat Completions 调用,您可以继续使用 OpenAI Python SDK,仅需修改基础 URL、API 凭据和模型 ID。某些 OpenAI API 不受支持,且一些看起来相同的功能在不同模型下表现不同。本指南先展示可运行代码,然后列出受支持端点、不足之处以及无法迁移内容。

OpenAI to 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)

以下是两个示例的变化:

项目 OpenAI DigitalOcean 无服务器推理
base_url 默认(未设置) https://inference.do-ai.run/v1
使用的凭据 OpenAI API 密钥 DigitalOcean 模型访问密钥
示例环境变量 OPENAI_API_KEY MODEL_ACCESS_KEY
模型 ID gpt-4o llama3.3-70b-instruct
认证方案 Bearer token Bearer token(不变)
使用的 SDK 方法 client.chat.completions.create() client.chat.completions.create()(不变)
消息格式 基于角色的列表 基于角色的列表(不变)

凭据获取位置: 在 DigitalOcean 控制面板中,前往 Inference,然后 Serverless Inference,然后创建 Model Access Key。这不是您的 OpenAI 面板密钥。

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

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 无服务器推理支持哪些 OpenAI 兼容端点?

此部分列出了从 OpenAI 迁移最相关的端点,而非 DigitalOcean 完整的 API 列表。

端点 DigitalOcean 路径 支持级别 关键兼容性说明
聊天补全 /v1/chat/completions 支持 工具支持取决于所使用的模型和 API 界面。详见下文。
响应 API /v1/responses 支持 不是每个 OpenAI Responses 功能都有对应的 DigitalOcean 功能。
嵌入 /v1/embeddings 支持 适用于语义搜索和检索增强生成。
图像生成 /v1/images/generations 支持 返回的图像采用 base64 编码。请查看 Model Catalog 了解当前可用的图像模型。
批量推理 /v1/batches 支持,但独立 这是一个独立的异步工作流,而非实时的 OpenAI 兼容端点。您提交作业并轮询结果。详见下文。

其中几个端点需要更仔细地查看。

DigitalOcean 不支持哪些 OpenAI API?

这些 OpenAI 端点在文档化的 Serverless Inference API 中没有 OpenAI 兼容的等价物。API 参考中缺失表明这是关于 API 兼容性的声明,而不一定适用于每个 DigitalOcean 产品。

OpenAI API DigitalOcean 状态 说明
Assistants API 不支持 没有 /v1/assistants 端点。
Threads API 不支持 没有 /v1/threads 端点。对话历史记录不在服务器端存储;您的应用程序仍需负责。
Fine-tuning 不支持 没有 /v1/fine_tuning/jobs 端点。
Moderation 不支持 没有 /v1/moderations 端点。

DigitalOcean 拥有自己的智能体构建工具,包括一个 Agent Development Kit,但它们是独立产品,不是 OpenAI Assistants 代码的直接替代。

DigitalOcean Serverless Inference 能否作为 OpenAI 的即插即用替代?

简答:它可以基本上作为基本 Chat Completions 调用的即插即用替代。除此之外,它并不是 OpenAI API 的完整即插即用替代。

变更项 OpenAI DigitalOcean Serverless Inference
模型 ID OpenAI 模型名称(例如 gpt-4o) DigitalOcean 目录 ID(例如 llama3.3-70b-instruct),可通过 GET /v1/models 列出
凭证 OpenAI sk- 密钥 DigitalOcean 模型访问密钥或个人访问令牌(作为 Bearer 令牌发送)
速率和使用限制 由 OpenAI 账户等级设定 由 DigitalOcean 设定;可能随账户等级、模型和推理模式而变化
商业模型访问 取决于 OpenAI 套餐 新账户(Tier 1 和 Tier 2)从开放权重模型开始(openai-gpt-oss-120b、openai-gpt-oss-20b);在更高等级时解锁商业模型。请参阅 推理限制。
“OpenAI 兼容” 的含义 N/A 描述请求/响应格式,但不保证所有 OpenAI 工具、API 功能或 SDK 行为完全一致

要查看完整的端点列表以及请求和响应详情,请参阅 无服务器推理 API 端点 和 API 参考。

结论

对于基本的 Chat Completions 调用,切换到 DigitalOcean Serverless Inference 只需改动三行:基础 URL、凭证和模型 ID。除此之外,将其视为格式上兼容 OpenAI,而非功能完全一致。请根据 GET /v1/models 确认模型 ID,确认您的应用依赖的特定参数、工具和端点受支持,并在迁移生产流量之前查看模型目录和推理限制。

——

广告 广告
🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。