阿里云通义千问API接口调用方法

阿里云通义千问API接口调用方法

  • admin admin
  • 2026-09-12
  • 2739
  • 0

调用阿里云通义千问API,只需在阿里云DashScope控制台开通服务并获取API Key,然后向https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions发送一个包含模型名称和me...

优惠价格:¥ 0.00
当前位置:首页 > 阿里云高防服务器 > 阿里云通义千问API接口调用方法
详情介绍

调用阿里云通义千问API,只需在阿里云DashScope控制台开通服务并获取API Key,然后向https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions发送一个包含模型名称和messages数组的HTTP POST请求即可。

开通服务与获取API Key

使用通义千问API之前,需要先在阿里云平台完成开通与密钥获取,具体步骤如下:

阿里云通义千问API接口调用方法  第1张

  1. 注册并登录阿里云账号,完成实名认证。

  2. 进入阿里云DashScope控制台,网址为https://dashscope.console.aliyun.com/

  3. 在控制台中开通通义千问模型服务,开通时通常需要同意相关服务协议。

  4. 进入“API-KEY管理”页面,点击“创建API Key”。

  5. 为密钥设置名称,创建后系统会生成一串以sk-开头的密钥。

  6. 立即复制并妥善保存API Key,该密钥只显示一次,后续无法在控制台再次查看。

API Key是调用接口的唯一身份凭证,不能泄露,建议将密钥保存在环境变量或安全的配置文件中,不要硬编码在客户端代码或公开仓库中。

接口地址与认证方式

阿里云通义千问目前提供两套HTTP接口风格,一套是DashScope原生接口,另一套是兼容OpenAI的接口,推荐使用兼容OpenAI的接口,原因在于它可以复用大量已有的OpenAI生态工具和SDK。

兼容OpenAI的对话接口地址为:

https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

原生DashScope对话接口地址为:

https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation

无论使用哪套接口,都需要在HTTP请求头中携带认证信息,兼容OpenAI接口的认证方式如下:

Authorization:Bearer你的APIKey
Content-Type:application/json

请求必须使用HTTPS协议,不能使用HTTP明文传输。

请求参数说明

以兼容OpenAI接口为例,请求体是一个JSON对象,核心字段如下。

model

指定要调用的通义千问模型,常用模型包括:

  • qwen-turbo:速度快、成本低,适合简单任务。

  • qwen-plus:效果、速度与成本均衡,适合大多数日常任务。

  • qwen-max:能力最强,适合复杂推理和高要求任务。

  • qwen-long:支持超长上下文,适合长文档处理。

模型名称需要与实际开通的模型一致,否则会返回模型不存在错误。

messages

messages是一个数组,表示对话上下文,每个元素是一个对象,包含两个字段:

  • role:角色,可选值为systemuserassistant

  • content,为字符串。

system角色用于设定助手的行为和身份,你是一个专业的法律助手”。user表示用户输入,assistant表示模型的历史回复,多轮对话时,需要将前几轮的userassistant消息按顺序放入数组中。

temperature

控制生成结果的随机性,取值范围通常为0到2,值越低,输出越确定;值越高,输出越发散,默认值一般为0.7到1.0,需要稳定、可复现的结果时,可将该值设为0。

top_p

核采样参数,取值范围为0到1,模型会从累计概率达到top_p的候选词中采样,该参数与temperature建议不要同时大幅调整。

max_tokens

限制模型生成的最大token数量,token可以粗略理解为文字片段,一个汉字通常对应1到2个token,设置过小会导致回复被截断,设置过大可能增加调用成本。

stream

是否使用流式输出,设为true时,模型会以SSE(Server-Sent Events)方式逐段返回内容,适合需要实时显示回复的场景,设为false时,接口会等待完整结果生成后一次性返回。

使用curl调用

以下是一个使用curl调用通义千问的完整示例:

curl-XPOSThttps://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\
-H"Authorization:Bearer你的APIKey"\
-H"Content-Type:application/json"\
-d'{
"model":"qwen-plus",
"messages":[
{"role":"system","content":"你是一个简洁的助手"},
{"role":"user","content":"请用一句话介绍杭州"}
],
"temperature":0.7,
"max_tokens":200
}'

响应是一个JSON对象,其中choices数组包含模型输出,第一个元素的message.content字段就是模型回复的文本。

使用Python SDK调用

阿里云官方提供了DashScope Python SDK,安装命令为:

pipinstalldashscope

使用SDK调用的示例代码如下:

importdashscope
fromdashscopeimportGeneration
dashscope.api_key="你的APIKey"
response=Generation.call(
model="qwen-plus",
messages=[
{"role":"system","content":"你是一个简洁的助手"},
{"role":"user","content":"请用一句话介绍杭州"}
],
temperature=0.7,
max_tokens=200
)
ifresponse.status_code==200:
print(response.output.text)
else:
print(response.code,response.message)

response.output.text是模型生成的完整文本,如果请求失败,response.status_code不为200,可以从response.coderesponse.message查看错误信息。

使用OpenAI SDK调用

由于兼容OpenAI接口,可以直接使用OpenAI官方SDK调用通义千问,安装命令为:

pipinstallopenai

示例代码如下:

fromopenaiimportOpenAI
client=OpenAI(
api_key="你的APIKey",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
completion=client.chat.completions.create(
model="qwen-plus",
messages=[
{"role":"system","content":"你是一个简洁的助手"},
{"role":"user","content":"请用一句话介绍杭州"}
],
temperature=0.7,
max_tokens=200
)
print(completion.choices[0].message.content)

这种方式适合已经使用OpenAI SDK的项目快速迁移到通义千问。

流式输出调用

在需要实时显示回复、提升用户体验的场景中,可以使用流式输出,Python示例代码如下:

fromopenaiimportOpenAI
client=OpenAI(
api_key="你的APIKey",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
stream=client.chat.completions.create(
model="qwen-plus",
messages=[
{"role":"user","content":"写一首关于春天的短诗"}
],
stream=True
)
forchunkinstream:
ifchunk.choices[0].delta.content:
print(chunk.choices[0].delta.content,end="")

流式输出时,每个chunkdelta.content是增量文本,需要自行拼接,当流结束时,会收到一个finish_reasonstop的片段。

多轮对话

多轮对话的关键在于维护messages数组,每一轮请求都要把之前的用户输入和模型回复一并发送,示例:

messages=[
{"role":"system","content":"你是一个客服助手"}
]
whileTrue:
user_input=input("用户:")
messages.append({"role":"user","content":user_input})
completion=client.chat.completions.create(
model="qwen-plus",
messages=messages
)
answer=completion.choices[0].message.content
print("助手:",answer)
messages.append({"role":"assistant","content":answer})

这样模型就能记住上下文,做出连贯回复。

工具调用与函数调用

通义千问支持函数调用,允许模型根据用户输入返回结构化的工具调用请求,请求中需要传入tools字段,定义可用函数,模型返回的tool_calls中包含函数名和参数,开发者执行函数后再将结果作为tool角色消息追加到messages中继续对话。

这一功能适合构建Agent、查询外部数据、调用业务接口等复杂应用。

错误处理与常见问题

调用过程中可能遇到以下常见错误:

  • 401认证失败:API Key错误、已删除或未正确放入请求头。

  • 400参数错误:请求体格式不正确,或modelmessages等参数不符合要求。

  • 429限流:请求频率超过套餐或免费额度限制,需要降低频率或升级套餐。

  • 500服务错误:服务端暂时异常,可以重试。

建议在代码中对非200状态码进行统一捕获,记录错误码和错误信息,并根据错误类型决定是否重试,重试时可以采用指数退避策略,避免短时间内大量请求。

十一、计费与并发限制

通义千问API按token使用量计费,输入和输出分别计算,不同模型单价不同,qwen-turbo价格最低,qwen-max价格最高,超出免费额度后,需要购买资源包或按量付费。

每个模型还有并发数限制,例如同一时刻最多允许一定数量的请求,高并发场景需要提前评估并申请提高配额,调用前可以在控制台查看当前模型的免费额度、计费规则和并发限制。

通过合理选择模型、设置max_tokens和缓存常见回复,可以有效控制API调用成本。

0