卓普云
教程精选

用 OpenAI SDK 接入 DigitalOcean无服务器推理:一键调用 Claude、GPT 等多种模型

只需修改一行代码,就能用 OpenAI SDK 调用 Claude、GPT-4o 等十余种模型,无需管理基础设施。

2026年6月30日
用 OpenAI SDK 接入 DigitalOcean无服务器推理:一键调用 Claude、GPT 等多种模型

DigitalOcean AI推理云推出了无服务器推理(Serverless Inference)。它是一个托管 API,让你无需创建GPU云服务器、无需管理基础设施,即可运行 Claude、GPT-4o、DeepSeek、GLM、Qwen、Kimi 和 Mistral 等大语言模型。

它的设计初衷就是简单:无需配置 GPU、无需配置服务器,也无需管理扩缩容逻辑。 你只需要向一个端点(endpoint)发送请求即可。

该 API 支持来自 Anthropic、OpenAI、Meta、Mistral、DeepSeek 等大厂的模型——所有这些模型都统一在同一个 base URL 之后。

最方便的是,它与 OpenAI 的 API 完全兼容。

也就是说,如果你已经在使用 OpenAI Python SDKLangChain 或 LlamaIndex 这类工具,或者 任何受支持的模型,它们都能直接运行。你只需更换后端,无需重写你的应用。

同样的方法也适用于 DigitalOcean 智能代理(Agents)——即与你自己的文档或知识库连接的模型。

DigitalOcean 无服务器推理

为什么要用 DigitalOcean Inference?

这种方案有几个突出的优势——尤其是当你已经在 DigitalOcean 上构建应用,或者想要在大语言模型的使用上获得更多灵活性的时候。

  1. 一把钥匙开所有门:你不需要为 OpenAI、Anthropic、Mistral 等各自管理独立的密钥。一个 DigitalOcean API 密钥就能访问所有模型——Claude、GPT-4o、LLaMA 3、Mistral 等等。
  2. 更低的成本:对于很多任务来说,这比直接走模型厂商要划算得多。
  3. 统一计费:所有用量都体现在同一个账单里,和你的应用、Spaces、数据库以及你在 DO 上运行的其他一切一起出现在 DigitalOcean 的账单上。不同平台之间不会再出现意外费用。
  4. 开源模型的隐私保障:如果你使用的是开放权重模型(如 LLaMA 或 Mistral),你的提示词和补全内容不会被记录或用于训练。
  5. 无需改动 SDK:OpenAI SDK 直接就能用。你也可以用同样的方式使用 LangChain 或 LlamaIndex 等库——只需修改 base URL 即可。

无服务器推理的原理

底层一切操作都通过 OpenAI 的方法执行:

client.chat.completions.create()

你唯一需要更改的,是初始化客户端时的 base_url

  • 无服务器推理(通用模型):https://inference.do-ai.run/v1/
  • 智能代理(基于自有数据的上下文推理):https://<your-agent-id>.agents.do-ai.run/api/v1/

就这么简单——接下来看看实际中怎么操作。

安装 OpenAI SDK

运行以下命令在你的机器上安装 OpenAI SDK

pip install openai python-dotenv

示例 1:列出可用模型

这段代码会列出 DigitalOcean 无服务器推理的所有可用模型,跟你平时用 OpenAI 的代码完全一样——只是把目标地址指向了 DigitalOcean 的端点(base_url)。

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    base_url="https://inference.do-ai.run/v1/",  # DO's Inference endpoint
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

# List all available models
try:
    models = client.models.list()
    print("Available models:")
    for model in models.data:
        print(f"- {model.id}")
except Exception as e:
    print(f"Error listing models: {e}")

示例 2:运行一次简单的对话补全

我们用的还是同一个 .chat.completions.create() 方法,区别仅在于 base_url 不同。

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    base_url="https://inference.do-ai.run/v1/",  # DO's Inference endpoint
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

# Run a simple chat completion
try:
    response = client.chat.completions.create(
        model="llama3-8b-instruct",  # Swap in any supported model
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a fun fact about octopuses."}
        ]
    )
    print(response.choices[0].message.content)
except Exception as e:
    print(f"Error during completion: {e}")

示例 3:流式响应

想要逐 token 流式返回的响应?只需加上 stream=True,然后循环读取数据块即可。

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    base_url="https://inference.do-ai.run/v1/",  # DO's Inference endpoint
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

# Run a simple chat completion with streaming
try:
    stream = client.chat.completions.create(
        model="llama3-8b-instruct",  # Swap in any supported model
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a fun fact about octopuses."}
        ],
        stream=True
    )
    for event in stream:
        if event.choices[0].delta.content is not None:
            print(event.choices[0].delta.content, end='', flush=True)
    print()  # Add a newline at the end

except Exception as e:
    print(f"Error during completion: {e}")

那智能代理呢?

DigitalOcean 还提供了智能代理(AI Agents)——这些是搭配了自定义知识库的大语言模型。你可以上传文档、添加 URL、纳入结构化内容,甚至连接 DigitalOcean Spaces 对象存储桶或 Amazon S3 存储桶作为数据源。代理会结合这些上下文来给出回答。对于内部工具、文档机器人或特定领域的助手来说,非常实用。

你仍然使用 .chat.completions.create() —— 唯一不同的还是 base_url。不过现在,你的回答是基于自己的数据生成的。

注:使用DigitalOcean 无服务器推理时,base URL 是固定的。使用 Agents 时,它的 URL 取决于你的代理,并且需要追加 /api/v1。

python
client = OpenAI(
    base_url="https://your-agent-id.agents.do-ai.run/api/v1/",
    api_key=os.getenv("DIGITAL_OCEAN_MODEL_ACCESS_KEY")
)

Agent状态与endpoint接入

示例 4:使用智能代理(非流式)

这是一个标准的代理请求,用的还是 .chat.completions.create() ——跟之前的方法一样。

唯一的实际变化是 base_url,它指向你的代理专属端点(加上 /api/v1)。使用 Inference 时,base URL 是固定的;使用 Agents 时,它取决于你的代理,你只需在后面追加 /api/v1

这里我们在请求体中还加上了 include_retrieval_info=True。这会告诉 API 额外返回代理从知识库中检索了哪些内容来生成回答的元数据。

from openai import OpenAI
from dotenv import load_dotenv
import os
import json
load_dotenv()

try:
    # 创建一个指向智能代理端点的新客户端
    agents_client = OpenAI(
        base_url="https://rrp247s4dgv4xoexd2sk62yq.agents.do-ai.run/api/v1/",
        api_key=os.getenv("AJOT_AGENT_KEY")
    )
    
    # 通过智能代理端点发送一条简单的文本请求
    response = agents_client.chat.completions.create(
        model="openai-gpt-4o-mini",
        messages=[{
            "role": "user",
            "content": "你好!Amit 是谁?"
        }],
        extra_body = {"include_retrieval_info": True}
    )
    
    print(f"\n智能代理端点的响应:{response.choices[0].message.content}")
    
    response_dict = response.to_dict()
    print("\n完整的检索对象:")
    print(json.dumps(response_dict["retrieval"], indent=2))
    
except Exception as e:
    print(f"智能代理端点出错:{e}")

示例 5:使用智能代理(流式输出 + 检索信息)

这里唯一的改动是启用了 stream=True,让响应在生成的同时实时返回。其他一切不变。

from openai import OpenAI
from dotenv import load_dotenv
import os
import json
load_dotenv()

try:
    # 创建一个指向智能代理端点的新客户端
    agents_client = OpenAI(
        base_url="https://rrp247s4dgv4xoexd2sk62yq.agents.do-ai.run/api/v1/",
        api_key=os.getenv("AJOT_AGENT_KEY")
    )
    
    # 通过智能代理端点发送一条带流式的文本请求
    stream = agents_client.chat.completions.create(
        model="openai-gpt-4o-mini",
        messages=[{
            "role": "user",
            "content": "你好!Amit 是谁?"
        }],
        extra_body = {"include_retrieval_info": True},
        stream=True,
    )
    
    for event in stream:
        if event.choices[0].delta.content is not None:
            print(event.choices[0].delta.content, end='', flush=True)
    print()  # 末尾换行
    
except Exception as e:
    print(f"智能代理端点出错:{e}")

总结

回顾一下重点:

  • 你可以直接在 DigitalOcean 的无服务器推理和智能代理上使用 OpenAI SDK
  • 你唯一需要更改的只有 base_url——其他一切保持不变。
  • 使用 https://inference.do-ai.run/v1/ 访问 LLaMA 3、GPT-4o、Claude 等通用模型。
  • 使用你的代理专属 URL(加上 /api/v1)连接你自己的文档或知识库。
  • 全部通过 .chat.completions.create() 完成——无需学习新方法。
  • 可以用 stream=True 启用流式输出,用 include_retrieval_info=True 获取检索信息。

这样一来,你可以轻松测试多种模型、切换后端、或者将模型接入自己的内容——所有这一切都不需要改动现有代码。

更多资源

相关产品与选型

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

相关标签

相关文章

OpenCode AI编程实践:利用推理路由低成本开发游戏
教程

OpenCode AI编程实践:利用推理路由低成本开发游戏

本文通过OpenCode与推理路由无服务器大模型API编程实战,不仅成功落地游戏,更把成本直降93%,详解大模型选型避坑指南。

2026年7月1日
大模型 API 性能选型避坑指南:除了每秒 Token 数,项目上线更看重哪些指标?
教程

大模型 API 性能选型避坑指南:除了每秒 Token 数,项目上线更看重哪些指标?

大模型选型别只看每秒Token数。本文详解项目落地真正致命的8个性能指标(如TTFT稳定性、尾部延迟、有用答案成本、输出保真度等),助你摆脱跑分欺骗,精准匹配真实业务场景。

2026年6月30日
基于知识库 + MCP 构建零基础设施 RAG 智能体
教程

基于知识库 + MCP 构建零基础设施 RAG 智能体

本文介绍如何利用 DigitalOcean 原生服务(Knowledge Bases、MCP、Spaces)零基础设施构建 RAG 代理,实现文档检索与答案生成。

2026年6月29日