Anthropic SDK 调用
CloudBase AI 同时兼容 OpenAI Chat Completions 和 Anthropic Messages API 协议,可直接使用 Anthropic SDK 调用,只需将 authToken 和 baseURL 替换为云开发配置即可。
认证方式
CloudBase 使用 Authorization: Bearer <token> 进行认证,对应 Anthropic SDK 的 authToken 参数,不是 apiKey。
准备工作
安装
# Node.js
npm install @anthropic-ai/sdk
# Python
pip install anthropic
配置
初始化时,将 authToken 和 baseURL 传给 SDK:
| 参数 | 值 |
|---|---|
| authToken | 云开发 API Key |
| baseURL | https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase |
将 <ENV_ID> 替换为实际的云开发环境 ID,<YOUR_CLOUDBASE_API_KEY> 替换为实际的 API Key。
Node.js 示例
非流式调用
const Anthropic = require("@anthropic-ai/sdk");
const client = new Anthropic({
authToken: "<YOUR_CLOUDBASE_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
async function main() {
const message = await client.messages.create({
model: "hy3",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }]
});
console.log(message.content[0].text);
}
main();
流式调用
const Anthropic = require("@anthropic-ai/sdk");
const client = new Anthropic({
authToken: "<YOUR_CLOUDBASE_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
async function main() {
const stream = await client.messages.stream({
model: "hy3",
max_tokens: 1024,
messages: [{ role: "user", content: "介绍一下你自己" }]
});
for await (const chunk of stream) {
if (
chunk.type === "content_block_delta" &&
chunk.delta.type === "text_delta"
) {
process.stdout.write(chunk.delta.text);
}
}
}
main();
Python 示例
非流式调用
import anthropic
client = anthropic.Anthropic(
auth_token="<YOUR_CLOUDBASE_API_KEY>",
base_url="https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
)
message = client.messages.create(
model="hy3",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}]
)
print(message.content[0].text)
流式调用
import anthropic
client = anthropic.Anthropic(
auth_token="<YOUR_CLOUDBASE_API_KEY>",
base_url="https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
)
with client.messages.stream(
model="hy3",
max_tokens=1024,
messages=[{"role": "user", "content": "介绍一下你自己"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
多轮对话
多轮对话需要在每次请求中维护完整的 messages 数组,详见多轮对话文档。
从 Anthropic 迁移
如果你的项目原本使用 Anthropic SDK,迁移到 CloudBase 需要修改客户端初始化部分:
// 原 Anthropic 配置
const client = new Anthropic({
apiKey: "<ANTHROPIC_API_KEY>"
});
// 改为 CloudBase 配置
const client = new Anthropic({
authToken: "<YOUR_CLOUDBASE_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
同时将模型名称替换为云开发中已开启的模型(如 hy3),其余业务代码无需改动。
错误处理
const Anthropic = require("@anthropic-ai/sdk");
const client = new Anthropic({
authToken: "<YOUR_CLOUDBASE_API_KEY>",
baseURL: "https://<ENV_ID>.api.tcloudbasegateway.com/v1/ai/cloudbase"
});
try {
const message = await client.messages.create({
model: "hy3",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }]
});
console.log(message.content[0].text);
} catch (error) {
if (error instanceof Anthropic.APIError) {
console.error("API 错误:", error.status, error.message);
} else {
throw error;
}
}
支持的参数
| 参数 | 类型 | 说明 |
|---|---|---|
| model | string | 模型名称 |
| messages | array | 消息列表 |
| system | string | 系统提示词 |
| max_tokens | number | 最大生成 token 数(必填) |
| stream | boolean | 是否流式返回 |
| temperature | number | 采样温度 (0-1) |
| top_p | number | 核采样 (0-1) |