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 兼容端点。您提交作业并轮询结果。详见下文。 |
其中几个端点需要更仔细地查看。
-
聊天补全详情:工具支持取决于所使用的模型和 API 界面,且不同的接口不能互换。OpenAI 和 Anthropic 模型可通过聊天补全和响应 API 使用,但各模型支持的 API 界面有所不同。某些 OpenAI 模型仅在无服务器推理时支持响应 API,而不支持聊天补全;因此在假设聊天补全可用之前,请先在 Model Catalog 中查看每个模型支持的 API 界面。Anthropic 模型还提供一个独立的 Anthropic 原生 Messages API(
client.messages.create()),用于暴露其自身的工具使用模式。DigitalOcean 的服务器端工具(如网页搜索、知识库检索和 MCP)可与聊天补全和响应 API 配合使用。另一项功能——工具搜索,使模型只加载所需的工具定义,而非一次性加载全部;该功能适用于 Anthropic 模型的 Messages API 以及受支持的 OpenAI 模型的响应 API。 -
Responses API 详情:支持的功能包括文本响应、多模态响应、提示词缓存,以及在某些配置下的推理。在假设某项功能与 OpenAI 上的表现相同之前,请先检查工具支持、推理以及多模态输入处理。
-
Batch inference 详情:Batch inference 是一个独立的异步工作流,而非即插即用的实时端点。其 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?
这些 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,确认您的应用依赖的特定参数、工具和端点受支持,并在迁移生产流量之前查看模型目录和推理限制。