当前位置:首页>python>调用阿里大模型的Python代码解析

调用阿里大模型的Python代码解析

  • 2026-09-09 04:28:06
调用阿里大模型的Python代码解析
昨天我们利用两种方式,成功调用了阿里千问大模型。一种是使用DashScope SDK(更原生),一种是使用OpenAI兼容接口(便于迁移)。
我对Python几乎是零基础,准备趁构建这个AI应用的同时,学些一下。
今天主要任务是逐行解析这两种调用方式的代码。
(一)DashScope SDK
import osimport dashscope# 如果你的环境变量没设好,可以在这里直接赋值(不推荐):# dashscope.api_key = "你的API-Key"# 注意:这里的base_url可能因为地域而异,请根据你的业务空间调整[citation:2][citation:5]# dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'messages = [    {'role': 'system', 'content': '你是一个严谨的合规审查员。'},    {'role': 'user', 'content': '请简单介绍下你自己。'}]response = dashscope.Generation.call(    model="qwen-plus",  # 也可以尝试 "qwen-max", "qwen-turbo" 等    messages=messages,    result_format='message',  # 以消息格式返回    # api_key=os.getenv('DASHSCOPE_API_KEY') # 如果没设环境变量,可以在这里指定)if response.status_code == 200:    print(response.output.choices[0].message.content)else:    print(f"调用失败,错误码:{response.status_code},信息:{response.message}")

逐行详解:

第1行:import os

  • 含义:导入 Python 的 os 模块

  • 作用:os 是"操作系统(Operating System)"的缩写,提供与操作系统交互的函数

  • 在这段代码中的用途:后面会用 os.getenv() 读取环境变量(虽然被注释掉了)

  • Python 基础概念:import 是引入别人写好的代码库的关键字,就像你去工具间借一把扳手


第2行:import dashscope

  • 含义:导入阿里云百炼的官方 SDK(软件开发工具包)

  • 作用:让你能用 Python 代码调用阿里云的大模型 API

  • 在这段代码中的用途:后续的 dashscope.Generation.call() 就用到了它

  • Python 基础概念:dashscope 是我们用 pip install dashscope 安装的第三方库


第3行:空行

  • 含义:纯粹为了代码可读性,把不同功能块分开

  • Python 基础概念:空行不影响代码运行,是良好的编码习惯


第4行:# 如果你的环境变量没设好,可以在这里直接赋值(不推荐):

  • 含义:这是一个单行注释

  • 作用:# 后面的文字是给程序员看的说明,Python 解释器会完全忽略它

  • Python 基础概念:注释用来解释代码意图,方便自己和他人理解


第5行:# dashscope.api_key = "你的API-Key"

  • 含义:被注释掉的代码,不会执行

  • 作用:如果取消注释(删掉 #),就直接在代码里写了 API Key

  • 为什么不推荐:API Key 写在代码里,如果上传到 GitHub 就泄露了,不安全


第6行:空行


第7行:# 注意:这里的base_url可能因为地域而异,请根据你的业务空间调整

  • 含义:注释,提醒开发者注意地域配置


第8行:# dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'

  • 含义:被注释掉的代码,用于设置 API 请求地址

  • 什么时候需要:当你使用专属地域服务时,需要取消注释并填入你的 WorkspaceId

  • Python 基础概念:字符串用单引号 ' 或双引号 " 包裹

base_http_api_url这个变量在阿里云百炼(DashScope)SDK 中的正式名称叫做 API Base URL,也就是API 基础地址或API 端点地址。

它指的是所有 API 请求都会发往的那个根路径(根 URL),SDK 会把具体的接口路径(比如 /services/aigc/text-generation/generation)拼接到这个基础地址后面,形成完整的请求 URL。


第9行:空行


第10行:messages = [

  • 含义:定义一个名为 messages 的列表(List)

  • 作用:准备要发送给大模型的消息内容

  • Python 基础概念:

    • messages 是变量名,你可以随意命名,但要有意义

    • = 是赋值操作符,把右边的值赋给左边的变量

    • [ 是列表的开始,列表用方括号表示,可以装多个元素


第11行:{'role': 'system', 'content': '你是一个严谨的合规审查员。'},

  • 含义:列表中的第一个元素,是一个字典(Dictionary)

  • 作用:设置大模型的系统角色(System Role),告诉模型"你是谁"

  • Python 基础概念:

    • 字典用花括号 {} 表示,由键值对组成

    • 'role': 'system' 中,'role' 是键(Key),'system' 是值(Value)

    • 键值对之间用冒号 : 分隔

    • 每行开头的缩进(4个空格)表示这个元素属于 messages 这个列表


第12行:{'role': 'user', 'content': '请简单介绍下你自己。'}

  • 含义:列表中的第二个元素,也是一个字典

  • 作用:设置用户角色(User Role)的输入内容,也就是你问模型的问题

  • Python 基础概念:字典可以包含多个键值对,这里的两个键是 role 和 content


第13行:]

  • 含义:列表的结束符

  • 作用:表示 messages 这个列表定义完了


第14行:空行


第15行:response = dashscope.Generation.call(

  • 含义:调用 dashscope 库中的 Generation.call 方法,并把返回结果赋值给 response 变量

  • 作用:真正地发送请求给大模型,获取回答

  • Python 基础概念:

    • 方法调用:库名.模块名.函数名() 的格式

    • 函数:就是一段写好的功能代码,我们直接调用它就能用

    • 这里的 ( 表示函数调用的开始,后面的参数会接着写


第16行:model="qwen-plus", # 也可以尝试 "qwen-max", "qwen-turbo" 等

  • 含义:传入参数,指定使用哪个模型

  • 作用:告诉 API 用 qwen-plus 模型来回答

  • Python 基础概念:

    • 参数:函数调用时传入的具体值,用 参数名=值 的格式

    • 关键字参数:model="qwen-plus" 就是关键字参数,好处是顺序不重要

    • 缩进表示这行是上面函数调用的一部分


第17行:messages=messages,

  • 含义:传入参数,指定要发送的消息内容

  • 作用:把第10-13行定义的 messages 列表传给模型

  • Python 基础概念:这里 messages=messages 中,= 左边的 messages 是参数名,右边的 messages 是变量名(我们之前定义的列表)


第18行:result_format='message', # 以消息格式返回

  • 含义:传入参数,指定返回结果的格式

  • 作用:告诉 API 以"消息格式"返回结果,这样容易提取 content 内容


第19行:# api_key=os.getenv('DASHSCOPE_API_KEY') # 如果没设环境变量,可以在这里指定

  • 含义:被注释掉的代码

  • 作用:如果启用,会从环境变量读取 API Key 并传入


第20行:)

  • 含义:函数调用的结束符

  • 作用:表示 dashscope.Generation.call() 的所有参数都传完了


第21行:空行


第22行:if response.status_code == 200:

  • 含义:条件判断语句

  • 作用:检查 API 调用是否成功,200 是 HTTP 状态码,表示"成功"

  • Python 基础概念:

    • if 是条件判断关键字

    • response.status_code 是访问 response 对象的 status_code 属性

    • == 是比较运算符,判断两边的值是否相等

    • 结尾的冒号 : 表示接下来是满足条件时要执行的代码块


第23行:print(response.output.choices[0].message.content)

  • 含义:打印模型的回答内容

  • 作用:在控制台输出大模型生成的文本

  • Python 基础概念:

    • response → 响应对象

    • .output → 输出部分

    • .choices → 候选回答列表

    • [0] → 取列表中的第一个元素(Python 列表索引从 0 开始)

    • .message → 消息对象

    • .content → 消息的文本内容

    • 缩进(4个空格)表示这行属于 if 条件成立时要执行的代码块

    • print() 是 Python 内置的输出函数,把内容打印到控制台

    • response.output.choices[0].message.content 是层层访问对象的属性:


第24行:else:

  • 含义:else 是 if 的配套关键字

  • 作用:当 if 条件不成立时,执行 else 下面的代码块

  • Python 基础概念:if-else 是二选一的分支结构


第25行:print(f"调用失败,错误码:{response.status_code},信息:{response.message}")

  • 含义:打印错误信息

  • 作用:当 API 调用失败时,输出错误码和错误详情,方便排查问题

  • Python 基础概念:

    • f"..." 是 f-string(格式化字符串),Python 3.6 引入的语法

    • {response.status_code} 会被替换成实际的错误码值

    • {response.message} 会被替换成实际的错误信息

    • 比如最终输出可能是:调用失败,错误码:401,信息:Invalid API Key


未完,明天研究第二种调用方式的代码。

最新文章

随机文章