Skip to main content

OpenAI SDK 调用

CloudBase AI 兼容 OpenAI API 协议,可直接使用 OpenAI SDK 调用,方便项目迁移和多模型切换。

前置条件

  1. 已开通云开发环境
  2. 已配置大模型(见 大模型配置指南
  3. 已创建 API Key(获取地址

安装

# Node.js
npm install openai

# Python
pip install openai

配置

将 OpenAI SDK 的 baseURLapiKey 替换为 CloudBase 的配置:

配置项
baseURLhttps://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/<PROVIDER>/v1
apiKey你的 CloudBase API Key

支持的 Provider

Provider说明
hunyuan腾讯混元
deepseekDeepSeek

Node.js 示例

非流式调用

const OpenAI = require("openai");

const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
});

async function main() {
const completion = await client.chat.completions.create({
model: "deepseek-r1-0528",
messages: [{ role: "user", content: "你好" }],
temperature: 0.7
});

console.log(completion.choices[0].message.content);
}

main();

流式调用

const OpenAI = require("openai");

const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
});

async function main() {
const stream = await client.chat.completions.create({
model: "deepseek-r1-0528",
messages: [{ role: "user", content: "介绍一下你自己" }],
stream: true
});

for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || "";
process.stdout.write(content);
}
}

main();

Python 示例

非流式调用

from openai import OpenAI

client = OpenAI(
api_key="<YOUR_API_KEY>",
base_url="https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
)

completion = client.chat.completions.create(
model="deepseek-r1-0528",
messages=[{"role": "user", "content": "你好"}],
temperature=0.7
)

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

流式调用

from openai import OpenAI

client = OpenAI(
api_key="<YOUR_API_KEY>",
base_url="https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
)

stream = client.chat.completions.create(
model="deepseek-r1-0528",
messages=[{"role": "user", "content": "介绍一下你自己"}],
stream=True
)

for chunk in stream:
content = chunk.choices[0].delta.content or ""
print(content, end="", flush=True)

多轮对话

const OpenAI = require("openai");

const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/hunyuan/v1"
});

const messages = [
{ role: "system", content: "你是一个诗词专家" }
];

async function chat(userMessage) {
messages.push({ role: "user", content: userMessage });

const completion = await client.chat.completions.create({
model: "hunyuan-turbos-latest",
messages
});

const assistantMessage = completion.choices[0].message;
messages.push(assistantMessage);

return assistantMessage.content;
}

// 使用示例
await chat("李白最著名的诗是什么?");
await chat("这首诗的创作背景是什么?");

切换模型

只需修改 baseURL 中的 provider 和 model 参数即可切换不同模型:

// 使用混元
const hunyuanClient = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/hunyuan/v1"
});

await hunyuanClient.chat.completions.create({
model: "hunyuan-turbos-latest",
messages: [{ role: "user", content: "你好" }]
});

// 使用 DeepSeek
const deepseekClient = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
});

await deepseekClient.chat.completions.create({
model: "deepseek-r1-0528",
messages: [{ role: "user", content: "你好" }]
});

支持的参数

参数类型说明
modelstring模型名称
messagesarray消息列表
streamboolean是否流式返回
temperaturenumber采样温度 (0-2)
top_pnumber核采样 (0-1)
max_tokensnumber最大生成 token 数
presence_penaltynumber存在惩罚
frequency_penaltynumber频率惩罚

从 OpenAI 迁移

如果你的项目原本使用 OpenAI,迁移到 CloudBase 只需两步:

  1. 修改配置
// 原 OpenAI 配置
const client = new OpenAI({
apiKey: "sk-xxx" // OpenAI API Key
});

// 改为 CloudBase 配置
const client = new OpenAI({
apiKey: "<YOUR_CLOUDBASE_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
});
  1. 修改模型名称
// 原 OpenAI 模型
model: "gpt-4"

// 改为 CloudBase 支持的模型
model: "deepseek-r1-0528" // 或 hunyuan-turbos-latest 等

错误处理

const OpenAI = require("openai");

const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/deepseek/v1"
});

try {
const completion = await client.chat.completions.create({
model: "deepseek-r1-0528",
messages: [{ role: "user", content: "你好" }]
});
console.log(completion.choices[0].message.content);
} catch (error) {
if (error instanceof OpenAI.APIError) {
console.error("API 错误:", error.status, error.message);
} else {
throw error;
}
}

相关文档