从 0 到 1:用 Python 对接阿里云 DashScope,轻松实现 AI 对话功能

阿里云的DashScope平台提供了丰富的大模型服务,本文将以调用"qwen-plus"模型为例,详细介绍如何使用Python实现与大模型的对话交互。

准备工作

首先,我们需要准备好调用API的必要条件:

  1. 拥有阿里云账号并开通DashScope服务
  2. 获取API密钥(DASHSCOPE_API_KEY)
  3. 安装必要的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}")

代码解析

  1. API密钥获取与使用 :代码中通过os.getenv('DASHSCOPE_API_KEY')从环境变量获取API密钥,避免了将密钥硬编码在代码中带来的安全风险。

  2. 请求参数说明

    • model:指定要使用的模型,这里使用的是"qwen-plus"
    • temperature:控制生成内容的随机性,取值范围0-1,值越大生成内容越多样
    • frequency_penalty:控制重复内容的生成,值越大越不容易生成重复内容
    • messages:对话历史列表,包含system和user两种角色的消息
  3. 请求发送:使用requests库的post方法发送请求,需要指定正确的API地址和请求头。请求头中包含了身份验证信息和数据格式声明。

  4. 响应处理:根据HTTP状态码判断请求是否成功(200表示成功),成功时从响应JSON中提取回复内容,失败时打印错误状态码。

常见问题与解决

  1. 401错误:通常是API密钥不正确或未设置,请检查DASHSCOPE_API_KEY是否正确。

  2. 403错误:可能是没有开通对应模型的使用权限,需要在阿里云控制台进行配置。

  3. 429错误:请求过于频繁,超过了API的调用频率限制,可以考虑降低调用频率。

  4. 5xx错误:服务器端错误,通常是临时情况,可以稍后重试。

通过以上代码,我们可以快速实现与阿里云DashScope大模型的对话交互。根据实际需求,你可以修改messages中的内容来实现不同的对话场景,也可以调整其他参数来优化生成结果。

相关推荐
belldeep21 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手21 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
喵手21 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
B站_计算机毕业设计之家21 小时前
猫眼电影数据可视化与智能分析平台 | Python Flask框架 Echarts 推荐算法 爬虫 大数据 毕业设计源码
python·机器学习·信息可视化·flask·毕业设计·echarts·推荐算法
PPPPPaPeR.1 天前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
JaydenAI1 天前
[拆解LangChain执行引擎] ManagedValue——一种特殊的只读虚拟通道
python·langchain
骇城迷影1 天前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
长安牧笛1 天前
反传统学习APP,摒弃固定课程顺序,根据用户做题正确性,学习速度,动态调整课程难度,比如某知识点学不会,自动推荐基础讲解和练习题,学习后再进阶,不搞一刀切。
python·编程语言
打破砂锅问到底0071 天前
AI 驱动开发实战:10分钟从零构建「微信群相册」小程序
人工智能·微信·小程序·ai编程