阿里云百炼的通义千问系列模型支持 Anthropic API 兼容接口。通过修改以下参数,即可将原有的 Anthropic 应用迁移至阿里云百炼。
ANTHROPIC_API_KEY(或 ANTHROPIC_AUTH_TOKEN):替换为百炼 API Key。
ANTHROPIC_BASE_URL:替换为百炼的兼容端点地址 https://dashscope.aliyuncs.com/apps/anthropic。
模型名称(model):替换为百炼支持的模型名称(例如
qwen-plus),详情请参考支持的模型。
本文档仅适用于中国大陆版(北京地域)。
快速接入
文本对话
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("ANTHROPIC_API_KEY"),
base_url=os.getenv("ANTHROPIC_BASE_URL"),
)
# 迁移至百炼:需配置环境变量 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL,并修改下方的 model 参数。
# 参数兼容性请参考 Anthropic API 兼容性详情
message = client.messages.create(
model="qwen-plus", # 设置模型为 qwen-plus
max_tokens=1024,
# 深度思考,仅支持部分模型,请参阅支持的模型列表
thinking={
"type": "enabled",
"budget_tokens": 1024
},
# 流式输出
stream=True,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "你是谁?"
}
]
}
]
)
print("=== 思考过程 ===")
first_text = True
for chunk in message:
if chunk.type == "content_block_delta":
if hasattr(chunk.delta, 'thinking'):
print(chunk.delta.thinking, end="", flush=True)
elif hasattr(chunk.delta, 'text'):
if first_text:
print("\n\n=== 回答 ===")
first_text = False
print(chunk.delta.text, end="", flush=True)
图片解析
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("ANTHROPIC_API_KEY"),
base_url=os.getenv("ANTHROPIC_BASE_URL"),
)
# 迁移至百炼:需配置环境变量 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL,并修改下方的 model 参数。
# 使用 qwen-vl-plus 模型进行多模态调用
message = client.messages.create(
model="qwen-vl-plus", # 确保使用支持多模态的模型
max_tokens=1024,
# 流式输出
stream=True,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://data-generator-idst.oss-cn-shanghai.aliyuncs.com/dashscope/image/animal_01.jpg",
},
},
{
"type": "text",
"text": "描述这张图片的内容。"
},
],
}
],
)
for chunk in message:
if chunk.type == "content_block_delta":
if hasattr(chunk.delta, 'text'):
print(chunk.delta.text, end="", flush=True)视频解析
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.getenv("ANTHROPIC_API_KEY"),
base_url=os.getenv("ANTHROPIC_BASE_URL"),
)
# 迁移至百炼:需配置环境变量 ANTHROPIC_API_KEY (或 ANTHROPIC_AUTH_TOKEN) 和 ANTHROPIC_BASE_URL。
# 修改下方的 model 参数,使用视觉模型(如 qwen-vl-plus)进行多模态调用
message = client.messages.create(
model="qwen-vl-plus", # 确保使用支持多模态的模型
max_tokens=1024,
# 流式输出
stream=True,
messages=[
{
"role": "user",
"content": [
{
"type": "video",
"source": {
"type": "url",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251208/zpupby/3e81ef38-98f0-4d55-bbb6-259334ca18d0.mp4",
},
},
{
"type": "text",
"text": "描述这段视频的内容。"
},
],
}
],
)
for chunk in message:
if chunk.type == "content_block_delta":
if hasattr(chunk.delta, 'text'):
print(chunk.delta.text, end="", flush=True)
支持的模型
百炼提供的 Anthropic API 兼容服务支持以下通义千问系列模型:
模型系列 | 支持的模型名称(model) |
通义千问Max (仅 qwen3-max-preview 支持思考模式) | qwen3-max、qwen3-max-2025-09-23、qwen3-max-preview 查看更多 |
通义千问Plus | qwen-plus、qwen-plus-latest、qwen-plus-2025-09-11 查看更多 |
通义千问Flash | qwen-flash、qwen-flash-2025-07-28 查看更多 |
通义千问Turbo | qwen-turbo、qwen-turbo-latest 查看更多 |
通义千问Coder (不支持思考模式) | qwen3-coder-plus、qwen3-coder-plus-2025-09-23、qwen3-coder-flash 查看更多 |
通义千问VL (不支持思考模式) | qwen-vl-max、qwen-vl-plus |
模型参数及计费规则请参考模型列表。
详细步骤
开通阿里云百炼
如果您是首次访问阿里云百炼服务平台,请按照以下步骤进行开通。
登录阿里云百炼控制台。
若页面顶部显示
,需开通阿里云百炼的模型服务,并获得免费额度。如果未显示该消息,则表示您已经开通。
首次开通百炼后,您可领取新人免费额度(有效期:百炼开通后90天内),用于模型推理服务。免费额度领取方法和详情,请查看新人免费额度页面。
超出额度或期限将产生费用,开启免费额度用完即停功能将避免此情况下产生费用,具体费用请以控制台的实际报价和最终账单为准。
配置环境变量
要通过兼容 Anthropic API 的方式,来接入阿里云百炼的模型服务,需要配置以下两个环境变量。
ANTHROPIC_BASE_URL:设置为 https://dashscope.aliyuncs.com/apps/anthropic。ANTHROPIC_API_KEY或ANTHROPIC_AUTH_TOKEN:设置为阿里云百炼 API Key。ANTHROPIC_API_KEY或ANTHROPIC_AUTH_TOKEN均可作为接入认证,只需要设置其一即可。本文以ANTHROPIC_API_KEY为例。
macOS
在终端中执行以下命令,查看默认 Shell 类型。
echo $SHELL根据 Shell 类型设置环境变量,命令如下:
Zsh
# 用百炼 API KEY 替换 YOUR_DASHSCOPE_API_KEY echo 'export ANTHROPIC_BASE_URL="https://dashscope.aliyuncs.com/apps/anthropic"' >> ~/.zshrc echo 'export ANTHROPIC_API_KEY="YOUR_DASHSCOPE_API_KEY"' >> ~/.zshrcBash
# 用百炼 API Key 替换 YOUR_DASHSCOPE_API_KEY echo 'export ANTHROPIC_BASE_URL="https://dashscope.aliyuncs.com/apps/anthropic"' >> ~/.bash_profile echo 'export ANTHROPIC_API_KEY="YOUR_DASHSCOPE_API_KEY"' >> ~/.bash_profile在终端中执行下列命令,使环境变量生效。
Zsh
source ~/.zshrcBash
source ~/.bash_profile打开一个新的终端,执行下列命令,查看环境变量是否生效。
echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY
Windows
在 Windows 中,可以通过 CMD 或 PowerShell 将阿里云百炼提供的 Base URL 和API Key设置为环境变量。
CMD
在 CMD 中运行以下命令,设置环境变量。
# 用百炼 API Key 替换 YOUR_DASHSCOPE_API_KEY setx ANTHROPIC_API_KEY "YOUR_DASHSCOPE_API_KEY" setx ANTHROPIC_BASE_URL "https://dashscope.aliyuncs.com/apps/anthropic"打开一个新的 CMD 窗口,运行以下命令,检查环境变量是否生效。
echo %ANTHROPIC_API_KEY% echo %ANTHROPIC_BASE_URL%
PowerShell
在 PowerShell 中运行以下命令,设置环境变量。
# 用百炼 API Key 替换 YOUR_DASHSCOPE_API_KEY [Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "YOUR_DASHSCOPE_API_KEY", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://dashscope.aliyuncs.com/apps/anthropic", [EnvironmentVariableTarget]::User)打开一个新的 PowerShell 窗口,运行以下命令,检查环境变量是否生效。
echo $env:ANTHROPIC_API_KEY echo $env:ANTHROPIC_BASE_URL
API 调用-文本对话
cURL
curl -X POST "https://dashscope.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "x-api-key: ${ANTHROPIC_API_KEY}" \
-d '{
"model": "qwen-plus",
"max_tokens": 1024,
"stream": true,
"thinking": {
"type": "enabled",
"budget_tokens": 1024
},
"system": "You are a helpful assistant",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "你是谁?"
}
]
}
]
}'Python
安装 Anthropic SDK
pip install anthropic代码示例
import anthropic import os client = anthropic.Anthropic( api_key=os.getenv("ANTHROPIC_API_KEY"), base_url=os.getenv("ANTHROPIC_BASE_URL"), ) message = client.messages.create( model="qwen-plus", max_tokens=1024, stream=True, system="you are a helpful assistant", # 深度思考,仅支持部分模型,请参阅支持的模型列表 thinking={ "type": "enabled", "budget_tokens": 1024 }, messages=[ { "role": "user", "content": [ { "type": "text", "text": "你是谁?" } ] } ] ) print("=== 思考过程 ===") first_text = True for chunk in message: if chunk.type == "content_block_delta": if hasattr(chunk.delta, 'thinking'): print(chunk.delta.thinking, end="", flush=True) elif hasattr(chunk.delta, 'text'): if first_text: print("\n\n=== 回答 ===") first_text = False print(chunk.delta.text, end="", flush=True)
TypeScript
安装 Anthropic TypeScript SDK
npm install @anthropic-ai/sdk代码示例
import Anthropic from "@anthropic-ai/sdk"; async function main() { const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY, baseURL: process.env.ANTHROPIC_BASE_URL, }); const stream = await anthropic.messages.create({ model: "qwen-plus", max_tokens: 1024, stream: true, // 深度思考,仅支持部分模型,请参阅支持的模型列表 thinking: { type: "enabled", budget_tokens: 1024 }, system: "You are a helpful assistant", messages: [{ role: "user", content: [ { type: "text", text: "你是谁?" } ] }] }); console.log("=== 思考过程 ==="); let firstText = true; for await (const chunk of stream) { if (chunk.type === "content_block_delta") { if ('thinking' in chunk.delta) { process.stdout.write(chunk.delta.thinking); } else if ('text' in chunk.delta) { if (firstText) { console.log("\n\n=== 回答 ==="); firstText = false; } process.stdout.write(chunk.delta.text); } } } console.log(); } main().catch(console.error);
API 调用-图片解析
cURL
cURL 调用需要手动拼接完整的请求路径,即在 ANTHROPIC_BASE_URL 后加上 API 端点 /v1/messages。
curl -X POST "https://dashscope.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ANTHROPIC_API_KEY}" \
-d '{
"model": "qwen-vl-plus",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://data-generator-idst.oss-cn-shanghai.aliyuncs.com/dashscope/image/animal_01.jpg"
}
},
{
"type": "text",
"text": "描述这张图片的内容。"
}
]
}
]
}'Python
安装 Anthropic SDK
pip install anthropic代码示例
import anthropic import os client = anthropic.Anthropic( api_key=os.getenv("ANTHROPIC_API_KEY"), base_url=os.getenv("ANTHROPIC_BASE_URL"), ) # 迁移至百炼:需配置环境变量 ANTHROPIC_API_KEY (或 ANTHROPIC_AUTH_TOKEN) 和 ANTHROPIC_BASE_URL。 # 修改下方的 model 参数,使用视觉模型(如 qwen-vl-plus)进行多模态调用 message = client.messages.create( model="qwen-vl-plus", # 确保使用支持多模态的模型 max_tokens=1024, # 流式输出 stream=True, messages=[ { "role": "user", "content": [ { "type": "image", "source": { "type": "url", "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250414/mqqmiy/animal_01.jpg", }, }, { "type": "text", "text": "描述这张图片的内容。" }, ], } ], ) for chunk in message: if chunk.type == "content_block_delta": if hasattr(chunk.delta, 'text'): print(chunk.delta.text, end="", flush=True)
TypeScript
安装 Anthropic TypeScript SDK
npm install @anthropic-ai/sdk代码示例
import Anthropic from "@anthropic-ai/sdk"; async function main() { const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY, baseURL: process.env.ANTHROPIC_BASE_URL, }); // 使用 qwen-vl-plus 模型进行多模态调用 const stream = await anthropic.messages.create({ model: "qwen-vl-plus", max_tokens: 1024, // 流式输出 stream: true, messages: [ { role: "user", content: [ { type: "image", source: { type: "url", url: "https://data-generator-idst.oss-cn-shanghai.aliyuncs.com/dashscope/image/animal_01.jpg", }, }, { type: "text", text: "描述这张图片的内容。", }, ], }, ], }); for await (const chunk of stream) { if (chunk.type === "content_block_delta") { if ('text' in chunk.delta) { process.stdout.write(chunk.delta.text); } } } console.log(); } main().catch(console.error);
API 调用-视频解析
cURL
cURL 调用需要手动拼接完整的请求路径,即在 ANTHROPIC_BASE_URL 后加上 API 端点 /v1/messages。
curl -X POST "https://dashscope.aliyuncs.com/apps/anthropic/v1/messages" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ANTHROPIC_API_KEY}" \
-d '{
"model": "qwen-vl-plus",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": [
{
"type": "video",
"source": {
"type": "url",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251208/zpupby/3e81ef38-98f0-4d55-bbb6-259334ca18d0.mp4"
}
},
{
"type": "text",
"text": "描述这段视频的内容。"
}
]
}
]
}'Python
安装 Anthropic SDK
pip install anthropic代码示例
import anthropic import os client = anthropic.Anthropic( api_key=os.getenv("ANTHROPIC_API_KEY"), base_url=os.getenv("ANTHROPIC_BASE_URL"), ) # 迁移至百炼:需配置环境变量 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL,并修改下方的 model 参数。 # 使用 qwen-vl-plus 模型进行多模态调用 message = client.messages.create( model="qwen-vl-plus", # 确保使用支持多模态的模型 max_tokens=1024, # 流式输出 stream=True, messages=[ { "role": "user", "content": [ { "type": "video", "source": { "type": "url", "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251208/zpupby/3e81ef38-98f0-4d55-bbb6-259334ca18d0.mp4", }, }, { "type": "text", "text": "描述这段视频的内容。" }, ], } ], ) for chunk in message: if chunk.type == "content_block_delta": if hasattr(chunk.delta, 'text'): print(chunk.delta.text, end="", flush=True)
TypeScript
安装 Anthropic TypeScript SDK
npm install @anthropic-ai/sdk代码示例
import Anthropic from "@anthropic-ai/sdk"; async function main() { const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY, baseURL: process.env.ANTHROPIC_BASE_URL, }); // 使用 qwen-vl-plus 模型进行多模态调用 const stream = await anthropic.messages.create({ model: "qwen-vl-plus", max_tokens: 1024, // 流式输出 stream: true, messages: [ { role: "user", content: [ { type: "video", source: { type: "url", url: "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251208/zpupby/3e81ef38-98f0-4d55-bbb6-259334ca18d0.mp4", }, }, { type: "text", text: "描述这段视频的内容。", }, ], }, ], }); for await (const chunk of stream) { if (chunk.type === "content_block_delta") { if ('text' in chunk.delta) { process.stdout.write(chunk.delta.text); } } } console.log(); } main().catch(console.error);
Anthropic API 兼容性详情
HTTP Header
字段 | 是否支持 |
x-api-key | |
Authorization Bearer | |
anthropic-beta/anthropic-version |
基础字段
字段 | 是否支持 | 说明 | 示例值 |
model | 模型名称,支持范围见支持的模型 | qwen-plus | |
max_tokens | 生成 token 的最大数量 | 1024 | |
container | - | - | |
mcp_servers | - | - | |
metadata | - | - | |
service_tier | - | - | |
stop_sequences | 会引发模型停止生成的自定义文本序列 | ["}"] | |
stream | 流式输出 | True | |
system | 系统提示词 | You are a helpful assistant | |
temperature | 温度系数,用于控制模型生成文本的多样性 | 1.0 | |
thinking | 思考模式(Qwen-max、Qwen-Coder 系列模型不支持思考模式) | {"type": "enabled", "budget_tokens": 1024} | |
top_k | 生成过程中采样候选集的大小 | 10 | |
top_p | 核采样的概率阈值,控制模型生成文本的多样性 | 0.1 |
由于 temperature 与 top_p 均可以控制生成文本的多样性,因此建议只设置其中一个值。更多说明,请参见文本生成模型概述。
Tool 字段
tools
字段 | 是否支持 |
name | |
input_schema | |
description | |
cache_control |
tool_choice
值 | 是否支持 |
none | |
auto | |
any | |
tool |
Message 字段
字段 | 类型 | 子字段 | 是否支持 | 说明 |
content | string | - | 纯文本内容。 | |
array, type="text" | text | 文本块的内容。 | ||
cache_control | 用于控制该文本块的缓存行为。 | |||
citations | - | |||
array, type="image" | source.type | 指定图片来源的类型。有效值为 | ||
source.media_type | 当 | |||
source.data | 当 | |||
source.url | 当 | |||
array, type="video" | source.type | 指定视频来源的类型。有效值为 | ||
source.media_type | 当 | |||
source.data | 当 | |||
source.url | 当 | |||
array, type="document" | - | - | ||
array, type="search_result" | - | - | ||
array, type="thinking" | - | - | ||
array, type="redacted_thinking" | - | - | ||
array, type="tool_use" | id | 工具调用的唯一标识符。 | ||
input | 调用工具时传入的参数对象。 | |||
name | 被调用的工具名称。 | |||
cache_control | 用于控制该工具调用缓存行为。 | |||
array, type="tool_result" | tool_use_id | 与本次结果对应的 | ||
content | 工具执行后返回的结果,通常为字符串或 JSON 字符串。 | |||
cache_control | 用于控制该工具结果的缓存行为。 | |||
is_error | - | |||
array, type="server_tool_use" | - | - | ||
array, type="web_search_tool_result" | - | - | ||
array, type="code_execution_tool_result" | - | - | ||
array, type="mcp_tool_use" | - | - | ||
array, type="mcp_tool_result" | - | - | ||
array, type="container_upload" | - | - |
错误码
HTTP状态码 | 错误类型 | 说明 |
400 | invalid_request_error | 请求格式或内容存在问题。具体原因可能包括:缺少必要的请求参数、参数值的数据类型不正确等。 |
403 | authentication_error | API Key 存在问题。具体原因可能包括:请求头中未提供 API Key、提供的 API Key 不正确等。 |
404 | not_found_error | 未找到请求的资源。具体原因可能包括:兼容接口拼写有误、请求头中的模型不存在等。 |
429 | rate_limit_error | 账户达到了速率限制,建议降低请求频率。 |
500 | api_error | 发生了一个通用的服务器内部错误,建议稍后重试。 |
529 | overloaded_error | API 服务器当前负载过高,暂时无法处理新的请求。 |