OpenAI SDK 调用
CloudBase AI 兼容 OpenAI API 协议,可直接使用 OpenAI SDK 调用,方便项目迁移和多模型切换。
前置条件
安装
# Node.js
npm install openai
# Python
pip install openai
配置
将 OpenAI SDK 的 baseURL 和 apiKey 替换为 CloudBase 的配置:
| 配置项 | 值 |
|---|---|
| baseURL | https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/<PROVIDER>/v1 |
| apiKey | 你的 CloudBase API Key |
支持的 Provider
| Provider | 说明 |
|---|---|
| hunyuan | 腾讯混元 |
| deepseek | DeepSeek |
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: "你好" }]
});
支持的参数
| 参数 | 类型 | 说明 |
|---|---|---|
| model | string | 模型名称 |
| messages | array | 消息列表 |
| stream | boolean | 是否流式返回 |
| temperature | number | 采样温度 (0-2) |
| top_p | number | 核采样 (0-1) |
| max_tokens | number | 最大生成 token 数 |
| presence_penalty | number | 存在惩罚 |
| frequency_penalty | number | 频率惩罚 |
从 OpenAI 迁移
如果你的项目原本使用 OpenAI,迁移到 CloudBase 只需两步:
- 修改配置
// 原 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"
});
- 修改模型名称
// 原 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;
}
}