阿里云的DashScope平台提供了丰富的大模型服务,本文将以调用"qwen-plus"模型为例,详细介绍如何使用Python实现与大模型的对话交互。
准备工作
首先,我们需要准备好调用API的必要条件:
- 拥有阿里云账号并开通DashScope服务
- 获取API密钥(DASHSCOPE_API_KEY)
- 安装必要的Python库(requests)
可以通过pip安装requests库:
bash
pip install requests
完整代码实现
下面是调用DashScope API的完整代码示例:
python
import requests
import json
import os
# 从环境变量获取API密钥,避免硬编码密钥
DASHSCOPE_API_KEY = os.getenv('DASHSCOPE_API_KEY')
# 构建请求数据
json_data = {
"model": "qwen-plus", # 指定使用的模型
"temperature": 0.8, # 控制生成内容的随机性,值越大越随机
"frequency_penalty": 0.5, # 控制重复内容的惩罚力度
"max_tokens": 256, # 最大生成token数
"stream": False, # 是否流式返回
"messages": [
{
"role": "system", # 系统角色,用于设定助手行为
"content": "You are a helpful assistant."
},
{
"role": "user", # 用户角色,存放用户提问
"content": "介绍下颐和园"
}
]
}
# 发送POST请求调用API
resp = requests.post(
url='https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',
headers={
'Authorization': f'Bearer {DASHSCOPE_API_KEY}', # 身份验证头
'Content-Type': 'application/json', # 数据格式声明
'Accept': 'application/json' # 期望的响应格式
},
data=json.dumps(json_data, ensure_ascii=False) # 将字典转换为JSON字符串
)
# 处理响应结果
if resp.status_code == 200:
# 成功时提取并打印回复内容
print(resp.json()['choices'][0]['message']['content'])
else:
# 失败时打印状态码
print(f"请求失败,状态码:{resp.status_code}")
代码解析
-
API密钥获取与使用 :代码中通过
os.getenv('DASHSCOPE_API_KEY')从环境变量获取API密钥,避免了将密钥硬编码在代码中带来的安全风险。 -
请求参数说明:
model:指定要使用的模型,这里使用的是"qwen-plus"temperature:控制生成内容的随机性,取值范围0-1,值越大生成内容越多样frequency_penalty:控制重复内容的生成,值越大越不容易生成重复内容messages:对话历史列表,包含system和user两种角色的消息
-
请求发送:使用requests库的post方法发送请求,需要指定正确的API地址和请求头。请求头中包含了身份验证信息和数据格式声明。
-
响应处理:根据HTTP状态码判断请求是否成功(200表示成功),成功时从响应JSON中提取回复内容,失败时打印错误状态码。
常见问题与解决
-
401错误:通常是API密钥不正确或未设置,请检查DASHSCOPE_API_KEY是否正确。
-
403错误:可能是没有开通对应模型的使用权限,需要在阿里云控制台进行配置。
-
429错误:请求过于频繁,超过了API的调用频率限制,可以考虑降低调用频率。
-
5xx错误:服务器端错误,通常是临时情况,可以稍后重试。
通过以上代码,我们可以快速实现与阿里云DashScope大模型的对话交互。根据实际需求,你可以修改messages中的内容来实现不同的对话场景,也可以调整其他参数来优化生成结果。