
> 作者:李剑锋
3. 大模型调用实战
在中,我们已经完成了 VSCode、Miniconda、Python 环境以及第三方库安装方式的学习。也就是说,现在我们已经具备了编写和运行 Python 程序的基本能力。接下来,我们就可以正式进入大模型应用开发的第一步:通过 Python 代码调用大模型 API。
在实际开发中,我们并不一定需要把大模型下载到本地电脑上运行。很多时候,我们会直接调用大模型厂商提供的云端服务。例如阿里云百炼、OpenAI、智谱、百度、火山引擎等平台,都会提供可供开发者调用的大模型接口。我们只需要在本地编写 Python 代码,把用户的问题发送给平台,平台上的大模型完成推理后,再把生成结果返回给我们。
本章将以大模型 API 调用为核心,带大家完成从获取 API_KEY 到使用 openai 库调用大模型的完整过程。
3.1 大模型 API 调用基础
在正式编写代码之前,我们需要先理解一个基本问题:什么是 API?为什么调用大模型需要 API_KEY?本地 Python 代码又是如何和云端大模型服务连接起来的?
只有理解了这些基础概念,后面再看 openai 库的调用代码时,才不会觉得它只是几行“看不懂但能运行”的代码。
3.1.1 什么是 API
API 的全称是 Application Programming Interface,中文通常翻译为应用程序编程接口。简单来说,API 是不同软件、系统或服务之间进行交互的一种约定方式。一个程序如果想使用另一个程序或平台提供的功能,就可以通过 API 向对方发送请求,并接收对方返回的结果。
我们可以把 API 理解为一个“功能入口”。使用这个入口时,调用方不需要了解对方内部是如何实现的,只需要按照规定的格式提交请求,就可以获得对应的服务结果。例如,我们使用天气软件查看天气时,天气软件可能会通过天气平台的 API 获取实时天气数据;我们使用支付软件付款时,商家系统也可能会通过支付平台的 API 完成支付请求和结果确认。
也就是说,API 的核心作用不是让我们直接进入某个系统内部,而是让我们能够在不关心内部细节的情况下,按照统一规则调用它提供的能力。

如果用生活中的例子来理解,可以把 API 想象成餐厅里的“点餐窗口”。顾客不需要进入厨房,也不需要知道厨师具体是怎么洗菜、切菜、炒菜和装盘的,只需要按照菜单告诉服务员自己想要什么菜。服务员接收到需求后,会把点餐信息传递给后厨,后厨完成制作后,再通过服务员把菜品送回给顾客。
在这个过程中,顾客面对的是“点餐窗口”或“服务员”,而不是后厨内部的完整工作流程。点餐窗口规定了顾客应该如何提出需求,比如要说清楚菜名、数量、口味要求等;后厨则根据这些信息完成实际制作。API 的作用也是类似的:它向外提供一个标准化的调用入口,让外部程序可以按照规定格式提交需求,而不需要直接接触系统内部的复杂实现。

3.1.2 API 调用的基本流程
大模型 API 也是类似的道理。我们本地电脑上并没有真正运行一个庞大的大模型,而是通过 Python 代码向大模型平台发送请求。大模型平台收到请求后,会在云端服务器上调用模型进行推理,然后把生成的回答返回给我们的程序。
也就是说,API 帮我们完成了两件事:
第一,它提供了一个可以访问大模型服务的入口。
第二,它规定了我们应该用什么格式发送问题,以及平台会用什么格式返回结果。
例如,当我们在 Python 中调用大模型时,本质上就是把下面这些信息发送给大模型平台:
我们要调用哪个平台的接口; 我们是否有访问权限; 我们想调用哪个模型; 我们向模型提出了什么问题; 我们希望模型按照什么方式生成回答。
平台处理完成后,再把模型生成的内容返回给我们。这样,本地程序就可以借助云端大模型完成对话、问答、文本生成、代码生成等任务。
因此,大模型 API 可以简单理解为:
大模型平台提供给开发者的一种调用入口,开发者可以通过代码把问题发送给云端模型,并接收模型返回的结果。

这里需要特别注意一点:调用 API 并不等于在本地运行大模型。在 API 调用模式下,本地电脑主要负责编写代码、发送请求和接收结果;真正的大模型推理过程,是由大模型厂商部署在云端服务器上的模型服务完成的。
而所谓“本地运行大模型”,通常是指将模型权重文件下载到自己的电脑或服务器中,并在本地加载模型、执行推理。这种方式对硬件要求较高,尤其是对显存和算力资源有一定要求。因为大模型参数规模较大,在推理过程中需要占用较多显存,并依赖 GPU 等计算资源来完成文本生成。
因此,相比本地部署模型,API 调用对本地电脑的硬件要求要低得多。即使本地电脑没有高性能显卡,只要能够正常运行 Python 程序,并且可以连接网络,也可以通过 API 调用云端的大模型服务,完成对话问答、文本生成、代码生成等任务。
3.1.3 一次 API 调用通常包含哪些信息
在理解了大模型 API 调用的整体流程之后,我们还需要进一步了解:一次 API 调用中,程序到底向大模型平台发送了哪些信息?平台返回的结果又应该如何理解?
这些概念看起来比较零散,但它们后面都会直接出现在 openai 库的调用代码中。只有先理解这些关键要素,后续再看代码时,才能知道每一行配置到底在做什么。
一般来说,一次大模型 API 调用主要涉及以下几个核心要素:
API_KEY | |
base_url | |
model | |
messages | |
response |
其中,前四个要素主要属于请求信息,也就是本地程序发送给大模型平台的内容;response 则属于返回结果,也就是平台处理完成后返回给本地程序的数据。
(1)API_KEY
首先是 API_KEY。API_KEY 可以理解为访问大模型平台的“钥匙”或“身份凭证”。一般情况下,如果我们想调用某个大模型平台提供的云端模型服务,就需要先在对应平台中注册账号,并获取属于自己的 API_KEY。如果没有 API_KEY,平台就无法确认当前是谁在调用服务,也就不会允许程序正常访问模型接口。

平台需要通过 API_KEY 判断当前调用者是谁、是否具有调用权限,以及调用次数和费用应该记录到哪个账号下面。因此,在正式编写模型调用代码之前,获取并配置 API_KEY 是一个非常关键的前置步骤。
同时,API_KEY 也具有一定的敏感性,不能随便分享给别人,也不能上传到公开的代码仓库中。因为一旦别人拿到了你的 API_KEY,就可能使用你的账号额度调用模型服务,甚至产生额外费用。
(2)base_url
其次是 base_url。base_url 表示大模型 API 服务的基础访问地址,用来告诉程序:本次请求应该发送到哪个大模型平台的接口。
不同平台、不同地域、不同接口模式,可能会使用不同的 base_url。例如,如果我们使用阿里云百炼提供的 OpenAI 兼容接口,可以将 base_url 设置为:
https://dashscope.aliyuncs.com/compatible-mode/v1
这时,程序会把请求发送到阿里云百炼的大模型服务接口。
如果切换到其他大模型平台,就需要把 base_url 改成对应平台提供的接口地址。例如,如果要调用硅基流动平台的模型,就可以将 base_url 设置为:
https://api.siliconflow.cn/v1
因此,base_url 可以简单理解为大模型服务的“入口地址”。它决定了我们的请求要发送到哪里。不同平台的入口地址不同,代码中的 base_url 也需要随之调整。
(3)model
然后是 model。model 用来指定本次要调用的具体模型。一个大模型平台通常不只提供一个模型,而是会提供多个不同能力、不同速度和不同价格的模型。例如,有的模型适合日常问答,有的模型适合复杂推理,有的模型适合代码生成。我们在代码中填写不同的 model 名称,就代表调用不同的大模型。
比如在阿里云百炼大模型平台上有非常多可选择的模型进行使用,包括最传统的大语言模型、视觉大模型之外,还有很多图片生成以及视频生成等模型可以使用:

在下节课里我们也将会给大家介绍如何调用这些模型并构建一些简单的工作流来辅助我们的工作。
(4)messages
接着是 messages。messages 是发送给大模型的对话内容,它通常是一个列表,里面包含不同角色的消息。常见角色包括 system、user 和 assistant。
其中,system 通常用来设置模型的身份、规则和回答风格;user 表示用户提出的问题;assistant 表示模型之前给出的回答,常用于多轮对话场景。也就是说,大模型并不是只接收一句普通文本,而是接收一组带有角色信息的对话内容。
例如,在一次简单调用中,我们可能会向模型发送这样的内容:
messages= [
{"role":"system","content":"你是一名耐心的人工智能课程助教。"},
{"role":"user","content":"请用通俗的话解释什么是 API。"}
]
这段代码的含义是:我们先通过 system 告诉模型,它应该扮演“一名人工智能课程助教”的角色;然后再通过 user 提出具体问题。模型收到这些信息后,就会结合角色设定和用户问题生成 assistant 回答。

(5)response
最后是 response。response 表示大模型平台返回给本地程序的结果。需要注意的是,response 通常不是一句简单的文本,而是一个包含多种信息的结构化对象。它里面不仅包含模型生成的回答内容,还可能包含模型名称、生成结束原因、token 使用量等信息。
在一次普通的对话调用中,response 的结构大致可以理解为下面这样:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1710000000,
"model": "qwen3.6-plus",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "API 可以理解为不同程序之间进行交互的接口。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 18,
"total_tokens": 43
}
}
其中,最重要的是 choices 字段。它保存了模型生成的结果。一般情况下,我们最常用的是取出第一条生成结果中的回答内容,也就是:
response.choices[0].message.content
这行代码可以拆开理解:
response | |
choices | |
choices[0] | |
message | |
content |
所以,如果我们想把模型回答打印出来,可以这样写:
answer = response.choices[0].message.content
print(answer)
这样我们就能够把模型回复的信息以字符串的形式进行返回。当然我们也可以根据需要返回想要的信息,这里就不过多进行赘述了。
简单来说,大模型 API 调用可以先记住下面这句话:
API_KEY负责证明“我能不能调用”,base_url负责说明“我要调用哪个平台”,model负责指定“我要调用哪个模型”,messages负责告诉模型“我要问什么”,而response则保存了模型返回的结果。
掌握这些概念后,后面再学习 openai 库的调用代码就会清晰很多。因为代码中的大部分配置,其实都是围绕这些要素展开的。
3.2 大模型平台与 API_KEY 准备
3.2.1 常见大模型平台简介
前面我们已经了解了大模型 API 调用的基本原理:本地 Python 程序通过 API 把请求发送给大模型平台,平台在云端完成模型推理后,再把生成结果返回给本地程序。
那么接下来就会遇到一个很实际的问题:这些大模型 API 到底从哪里获取?我们应该选择哪个平台来调用模型?
目前,开发者可以选择的大模型平台非常多。不同平台在模型来源、接口形式、功能范围和适用场景上会有所不同。对于初学者来说,不需要一开始就掌握所有平台,而是先理解它们大致可以分为哪几类。
从使用角度看,常见的大模型平台可以先划分为三类:通用大模型聚合平台、云厂商大模型平台、模型官方平台。
(1)通用大模型聚合平台
第一类是通用大模型聚合平台。这类平台可以理解为“大模型超市”或“统一模型入口”。它们通常会接入多个不同来源的大模型,开发者可以在同一个平台中选择不同模型进行调用。
例如,硅基流动就是一个比较典型的通用大模型聚合平台。它提供开箱即用的大模型 API,覆盖语言、语音、图片、视频等多种场景,并支持按量计费,适合开发者快速接入不同类型的模型服务。硅基流动官方文档也将其定位为集合顶尖大模型的一站式云服务平台,面向开发者提供模型 API 能力。

另一个常见平台是 OpenRouter。OpenRouter 的定位是通过一个统一接口访问多个主流模型,它的官网明确说明可以通过一个统一 API 接入多种模型,并且支持 OpenAI SDK 调用方式。也就是说,开发者可以在同一个调用框架下切换不同模型,便于进行模型效果对比和成本对比。

这类平台的优势是模型选择灵活、接入方式统一、适合快速体验不同模型。例如,大家如果想比较不同模型在同一个问题上的回答效果,就可以通过这类平台快速切换模型,而不需要分别注册很多模型厂商的账号。
不过,这类平台也有一个特点:它们本身并不一定是某个模型的原始研发方,而是提供了一个统一的调用入口。因此,在正式项目中使用时,还需要关注模型来源、价格、稳定性、速度以及平台本身的服务能力。
(2)云厂商大模型平台
第二类是云厂商大模型平台。这类平台通常由大型云计算厂商提供,不仅支持模型 API 调用,还可能提供模型管理、应用构建、知识库、智能体、模型精调、模型评测、部署管理等完整能力。
例如,阿里云百炼就是阿里云提供的一站式大模型开发与应用平台。阿里云官方文档介绍,百炼集成了通义千问及主流第三方模型,并提供模型服务、应用构建等能力。同时,百炼也支持 OpenAI 兼容接口,开发者只需要调整 API Key、BASE_URL 和模型名称,就可以将原有 OpenAI 风格代码迁移到百炼服务中。

火山方舟则是火山引擎推出的大模型服务平台。官方文档中说明,火山方舟提供模型推理、评测、精调等全流程服务,并搭载豆包及业界主流大模型,支持开发者快速应用模型服务。它不仅适合调用模型,也适合进一步进行模型评测、模型精调和企业级应用落地。

百度智能云千帆也是典型的云厂商大模型平台。百度智能云官方介绍,千帆是大模型服务及 Agent 开发平台,围绕 Agent 引擎、工具及 MCP、模型服务与企业级服务等能力,为企业级 AI 应用构建提供支撑。

这类平台的优势是能力更完整、企业服务更体系化、和云资源结合更紧密。除了简单调用模型之外,它们通常还提供应用开发、知识库管理、模型评测、模型精调、安全合规、监控计费等配套能力。
(3)模型官方平台
第三类是模型官方平台。这类平台通常由模型研发团队或模型厂商直接提供,主要围绕自家的模型提供 API 调用服务。例如 DeepSeek、Kimi、智谱 GLM 等,都属于这一类。
DeepSeek API 是 DeepSeek 官方提供的模型调用入口。官方文档说明,DeepSeek API 使用兼容 OpenAI 和 Anthropic 的 API 格式,开发者可以通过修改配置,使用 OpenAI SDK 或兼容软件访问 DeepSeek API。

Kimi API 开放平台 是月之暗面提供的官方开发平台。Kimi 官方文档介绍其开放平台提供 Kimi 大模型 API,并支持长上下文、多模态理解和 Tool Calling 等能力,适合开发者围绕 Kimi 模型构建应用。

智谱 GLM 开放平台 则是智谱提供的大模型开放平台。智谱开放平台官网介绍其提供大模型 API 服务,并包含控制台、体验中心、智能体开发平台、模型微调、模型评测、批量处理和 API 文档等入口。

这类平台的优势是模型来源直接、官方支持明确、适合深度使用某个模型系列。如果开发者已经明确要使用某个模型,例如主要使用 DeepSeek、Kimi 或 GLM,那么直接使用对应模型官方平台通常会更直接。
不过,模型官方平台一般更聚焦于自家模型生态。如果想同时比较多个不同厂商的模型,可能就需要分别注册多个平台账号,并分别查看它们的 API 文档、计费方式和调用参数。
(4)小结
总体来看,这三类平台各有侧重点:
不过,不管选择哪一类平台,核心调用思路都是类似的:先注册平台账号,获取 API_KEY,查看平台提供的 base_url,选择需要调用的模型,然后在 Python 代码中完成请求发送和结果接收。
也就是说,平台虽然不同,但大模型 API 调用的底层逻辑基本一致。只要理解了前面讲过的 API_KEY、base_url、model、messages 和 response,后续切换到不同平台时,通常只是修改配置项,而不是重新学习一套完全不同的开发方式。
3.2.2 API_KEY 获取
这里我们以 阿里云百炼大模型平台 为例,介绍 API_KEY 的获取方法。
首先,打开阿里云百炼大模型平台控制台,并完成账号注册与登录。

登录成功后,进入平台首页,在左侧功能栏中找到并点击 “模型服务” 相关标签。进入模型服务页面后,可以在左下角找到 “密钥管理” 功能入口。

进入密钥管理页面后,点击 “创建 API Key”。在弹出的创建窗口中,选择对应用户,并根据需要填写密钥描述,例如可以填写“课程实验调用”“大模型 API 测试”等,方便后续区分不同用途的密钥。确认信息无误后,点击 “确认” 即可生成新的 API Key。

生成成功后,平台会显示一串以 sk- 开头的密钥内容,例如:
DASHSCOPE_API_KEY = "sk-xxxxxxxx"
这里需要特别注意,API Key 只会完整展示一次,因此创建后要及时复制并妥善保存。如果后续忘记或丢失,一般不能再次查看完整密钥,只能重新创建新的 API Key。
3.2.3 环境变量设置
获取到 API Key 后,就可以在程序中使用它来调用阿里云百炼平台上的大模型服务。为了避免直接把密钥写死在代码中,我们通常会将其配置到环境变量中。这样既方便程序读取,也可以减少密钥泄露的风险。
常见的 API Key 配置方式主要有三种:临时写入环境变量、使用 .env 文件管理、写入系统环境变量。
(1)临时写入环境变量
第一种方式是在当前终端中临时写入环境变量。这种方式适合课堂测试或临时运行代码,配置简单,但只在当前终端窗口中有效。
如果使用的是 Anaconda Prompt 或 CMD,可以输入:
set DASHSCOPE_API_KEY=sk-xxxxxxxx
其中,DASHSCOPE_API_KEY 通常用于调用阿里云百炼相关模型服务,sk-xxxxxxxx 需要替换为自己实际申请到的 API Key。
设置完成后,可以通过以下命令检查是否写入成功:
echo %DASHSCOPE_API_KEY%
如果终端能够正确输出刚才设置的密钥内容,就说明当前终端环境变量配置成功。此时,在同一个终端中运行 Python 代码,就可以通过环境变量读取 API Key。
如果使用的是 PowerShell,命令略有不同,可以输入:
$env:DASHSCOPE_API_KEY="sk-xxxxxxxx"
检查方式为:
echo $env:DASHSCOPE_API_KEY
除了在终端中设置,也可以在 Python 代码中临时写入环境变量。例如:
import os
os.environ["DASHSCOPE_API_KEY"] = "sk-xxxxxxxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
print(api_key)
这段代码中,os.environ["DASHSCOPE_API_KEY"] 用来在当前 Python 程序中设置环境变量,os.getenv("DASHSCOPE_API_KEY") 用来读取该环境变量。
需要注意的是,通过 Python 代码设置的环境变量只在当前程序运行期间有效。程序结束后,这个环境变量不会被保存到系统中;而且这种方式仍然需要把 API Key 写在代码里,因此更适合课堂演示或临时测试,不建议在正式项目中长期使用。
(2)使用 .env 文件管理 API Key
第二种方式是将 API Key 写入项目中的 .env 文件。这种方式比较适合项目开发,因为它可以把密钥和代码分开管理,代码中只需要读取环境变量,而不需要直接暴露真实密钥。
首先,在项目根目录中新建一个名为 .env 的文件,然后写入以下内容:
DASHSCOPE_API_KEY=sk-xxxxxxxx
接着,可以在 Python 代码中通过 python-dotenv 读取 .env 文件。第一次使用前需要在环境中先安装:
pip install python-dotenv
然后在代码中写入:
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("DASHSCOPE_API_KEY")
print(api_key)
这样程序运行时,就会自动从 .env 文件中读取 DASHSCOPE_API_KEY。这种方式的优点是管理方便,适合一个项目单独配置一套 API Key;缺点是换一个项目时,可能需要重新创建或复制 .env 文件。
(3)写入系统环境变量
第三种方式是将 API Key 写入 Windows 系统环境变量中。这种方式适合在自己的电脑上长期使用。配置完成后,无论是重新打开 Anaconda Prompt、PowerShell,还是在 VSCode 中运行代码,都可以直接读取该环境变量。
在 Windows 中,可以按照以下步骤进行配置:
在系统搜索框中搜索 “环境变量”; 点击 “编辑系统环境变量”; 在弹出的窗口中点击 “环境变量”; 在“用户变量”区域中点击 “新建”; 变量名填写:
DASHSCOPE_API_KEY
变量值填写自己申请到的 API Key,例如:
sk-xxxxxxxx
然后找到 Path 双击进入。 然后新建一条并写入:
%DASHSCOPE_API_KEY%
最后点击“确定”保存配置。
配置完成后,需要重新打开终端或 VSCode,使新的环境变量生效。然后可以在 Anaconda Prompt 或 CMD 中输入:
echo %DASHSCOPE_API_KEY%
如果能够正确输出 API Key,就说明系统环境变量配置成功。
在 Python 中,可以统一通过下面的方式读取:
import os
api_key = os.getenv("DASHSCOPE_API_KEY")
print(api_key)
如果能够正常输出密钥内容,说明程序已经可以读取环境变量。具体流程可以参考以下两张图片:


综合来看,三种方式各有适用场景:临时写入适合快速测试,.env 文件适合项目开发,系统环境变量适合本地长期使用。在实际开发中,更推荐使用 .env 文件或系统环境变量来管理 API Key,不建议直接把 API Key 写死在代码中。API Key 属于个人敏感信息,不要截图公开、不要上传到 GitHub,也不要直接写入会提交给他人的代码文件中。
3.3 基于 openai 库调用大模型
在前面的内容中,我们已经了解了大模型 API 调用的基本原理,也完成了大模型平台的认识、API_KEY 获取和环境变量配置。接下来,我们就可以正式使用 Python 代码调用大模型了。
本节将使用 openai 库完成一次最简单的大模型调用。通过这个例子,我们要实现的目标非常明确:在本地 Python 程序中向大模型发送一个问题,并在终端中看到模型返回的回答。
需要注意的是,这里使用的 openai 库并不一定只能调用 OpenAI 官方模型。现在很多大模型平台都提供了 OpenAI 兼容接口,例如阿里云百炼、硅基流动、DeepSeek 等平台。只要平台支持 OpenAI 兼容调用方式,我们就可以使用类似的代码结构完成模型调用。
3.3.1 openai 库简介
openai 是一个用于调用大模型 API 的 Python 第三方库。它可以帮助我们把底层复杂的网络请求过程封装起来,让我们不需要手动编写 HTTP 请求代码,就可以通过比较简洁的 Python 代码调用大模型服务。

在真实的 API 调用过程中,程序需要完成很多底层操作,例如构造请求地址、设置请求头、携带身份凭证、组织请求数据、发送网络请求、接收返回结果,并从返回结果中提取模型生成的内容。对于初学者来说,如果一开始就直接手写这些网络请求代码,理解成本会比较高,也更容易因为格式错误导致调用失败。
而使用 openai 库之后,这些底层细节大多已经被封装好了。我们只需要按照它提供的调用方式,创建一个客户端对象,然后传入前面已经学习过的 api_key、base_url、model 和 messages 等信息,就可以完成一次大模型调用。

需要注意的是,虽然这个库的名字叫 openai,但它并不一定只能调用 OpenAI 官方模型。现在很多大模型平台都提供了 OpenAI 兼容接口,例如阿里云百炼、硅基流动、DeepSeek 等平台。因此,只要平台支持 OpenAI 兼容调用方式,我们通常就可以使用 openai 库进行调用。
简单来说,openai 库的作用就是:
把复杂的 API 网络请求过程封装起来,让我们可以用更简洁的 Python 代码调用大模型服务。
在后面的代码中,我们会使用 OpenAI 创建客户端对象,然后通过这个客户端向大模型平台发送请求,并接收模型返回的结果。整体调用流程可以简单理解为:
创建客户端 → 发送请求 → 接收结果 → 输出模型回答
3.3.2 安装 openai 库
在正式编写代码之前,需要先安装 openai 库。首先打开 VSCode 终端,并确认已经进入前面创建好的 Conda 环境,例如:
conda activate ai
然后输入下面的命令安装 openai 库:
pip install openai
如果安装速度比较慢,也可以使用前面介绍过的国内镜像源,例如:
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,可以通过下面的命令检查是否安装成功:
pip show openai
如果终端中能够显示 openai 的版本、安装位置等信息,就说明安装成功。
例如可能会看到类似下面的内容:
Name: openai
Version: 2.36.0
Summary: The official Python library for the openai API
Home-page: https://github.com/openai/openai-python
Author:
Author-email: OpenAI <support@openai.com>
License: Apache-2.0
Location: D:\anaconda\envs\ai\Lib\site-packages
Requires: anyio, distro, httpx, jiter, pydantic, sniffio, tqdm, typing-extensions
Required-by:
只要能够正常显示这些信息,就说明当前 Python 环境中已经可以使用 openai 库了。
3.3.3 openai 库的基本使用方式
安装完成 openai 库之后,我们就可以在 Python 代码中使用它来调用大模型了。由于前面已经介绍过 API_KEY、base_url、model、messages 和 response 的含义,所以这里不再重复解释这些概念,而是重点看它们在代码中是如何组织起来的。
一般来说,使用 openai 库调用大模型,可以分为四个步骤:
导入 OpenAI 类
↓
创建客户端 client
↓
调用 chat.completions.create() 方法
↓
接收并查看 response 返回结果
对应到代码中,基本结构如下:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = client.chat.completions.create(
model="qwen3.6-plus",
messages=[
{"role": "user", "content": "你好,请介绍一下你自己。"}
]
)
print(response)
这段代码就是使用 openai 库调用大模型的基本模板。
首先,通过下面这行代码导入 OpenAI 类:
from openai import OpenAI
可以把 OpenAI 理解为 openai 库提供的客户端类。后续我们要调用大模型平台,就需要先用它创建一个客户端对象。
接着,通过 OpenAI() 创建客户端:
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
这里的 client 可以理解为本地 Python 程序和大模型平台之间的“通信对象”。后续发送请求、调用模型、接收结果,都会通过这个 client 来完成。
其中,api_key 从环境变量 DASHSCOPE_API_KEY 中读取,用来完成身份认证;base_url 指向阿里云百炼的 OpenAI 兼容接口,用来说明请求要发送到哪个平台。
然后,通过 client.chat.completions.create() 方法调用大模型:
response = client.chat.completions.create(
model="qwen3.6-plus",
messages=[
{"role": "user", "content": "你好,请介绍一下你自己。"}
]
)
可以先把 client.chat.completions.create() 理解为“向聊天模型发送一次请求”。其中,model 指定本次调用的模型,messages 指定发送给模型的对话内容。
模型处理完成后,返回结果会保存在 response 变量中:
response = client.chat.completions.create(...)
这个 response 不是一句简单的文本,而是一个完整的结构化返回结果。为了让大家先看清楚模型平台到底返回了什么,我们可以先直接打印完整结果:
print(response)
这样就可以在终端中看到完整的返回对象,包括模型回答内容、调用的模型名称、生成结束原因、token 使用量等信息。
除了最基础的 model 和 messages 之外,client.chat.completions.create() 里还可以设置一些常见参数。例如:
response = client.chat.completions.create(
model="qwen3.6-plus",
messages=[
{"role": "user", "content": "请用三句话介绍什么是大模型 API。"}
],
temperature=0.7,
max_tokens=500
)
其中,temperature 用来控制模型回答的随机性。数值越低,回答通常越稳定;数值越高,回答可能越发散、更有创造性。对于课堂演示和普通问答来说,可以先使用默认值,或者设置为 0.7 左右。
max_tokens 用来限制模型最多生成多少内容,可以简单理解为控制输出长度。如果希望模型回答不要太长,可以适当设置这个参数。
另外,还有一个常见参数是 stream,它用来控制模型是否采用流式输出。默认情况下,模型会等整段内容生成完成后,再一次性把结果返回给程序。如果设置:
stream=True
模型就会边生成、边返回内容,常用于聊天机器人或网页对话框中的“打字机效果”。例如:
response = client.chat.completions.create(
model="qwen3.6-plus",
messages=[
{"role": "user", "content": "请用三句话介绍什么是大模型 API。"}
],
stream=True
)
不过需要注意的是,开启 stream=True 后,返回结果的处理方式会发生变化。此时不能直接使用:
response.choices[0].message.content
来获取完整回答,而是需要通过循环逐步读取模型返回的内容:
for chunk in response:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
在第一次学习模型调用时,我们先使用默认的非流式输出方式即可。这样返回结构更直观,也更方便理解 response 的内容。等后续需要实现聊天窗口中的实时输出效果时,再进一步学习 stream=True 的流式输出方式。
简单来说,openai 库的基本使用方式可以概括为一句话:
先用
OpenAI()创建客户端,再用client.chat.completions.create()发送请求,最后通过response接收模型返回结果。
接下来,我们就基于这个结构编写第一个完整程序,并先打印完整的 response,看看大模型平台到底返回了哪些内容。
3.3.4 编写程序并查看完整返回结果
接下来,我们正式编写第一个模型调用程序。在项目文件夹中新建一个 Python 文件,例如:
chat_once.py
由于前面已经将阿里云百炼的 API Key 配置到了环境变量中,所以这里可以直接通过 os.getenv("DASHSCOPE_API_KEY") 读取。
在 chat_once.py 中写入下面的代码:
import os
from openai import OpenAI
# 1. 创建 OpenAI 客户端
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 2. 调用大模型
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "你是一名耐心的人工智能课程助教。"},
{"role": "user", "content": "请用三句话介绍什么是大模型 API。"}
]
)
# 3. 打印完整返回结果
print(response)
这段代码中,我们暂时没有直接提取模型回答,而是先打印完整的 response。这样可以帮助大家观察大模型平台到底返回了哪些内容。
代码编写完成后,保存文件。然后在 VSCode 终端中进入当前项目目录,并确认已经激活正确的 Conda 环境:
conda activate ai
然后运行:
python chat_once.py
如果 API_KEY、base_url、model 和网络连接都没有问题,终端中会输出一段类似下面的完整结果:
ChatCompletion(
id='chatcmpl-a3325c80-4f07-9e9d-9361-90555f37571c',
choices=[
Choice(
finish_reason='stop',
index=0,
logprobs=None,
message=ChatCompletionMessage(
content='大模型 API(Application Programming Interface)是大型语言模型(如GPT、Qwen、Claude等)对外提供的标准化接口,允许开发者通过HTTP请求调用模型的文本生成、问答、翻译等能力,而无需自行部署和维护模型。\n它通常采用RESTful设计,支持传入提示词(prompt)并返回结构化响应(如JSON),并配套提供身份认证、速率限制、计费计量等服务治理机制。\n本质上,大模型 API 是连接AI能力与实际应用的“桥梁”,让企业或个人能快速将先进AI能力集成到自有系统中,降低技术门槛与使用成本。',
refusal=None,
role='assistant',
annotations=None,
audio=None,
function_call=None,
tool_calls=None
)
)
],
created=1778547148,
model='qwen3.6-plus',
object='chat.completion',
service_tier=None,
system_fingerprint=None,
usage=CompletionUsage(
completion_tokens=137,
prompt_tokens=33,
total_tokens=170,
completion_tokens_details=None,
prompt_tokens_details=PromptTokensDetails(
audio_tokens=None,
cached_tokens=0
)
)
)
这就是大模型平台返回给我们的完整结果。可以看到,response 并不是一句简单的文本,而是一个包含多个字段的结构化对象。
在这个完整结果中,有几个字段比较重要:
id | |
model | |
choices | |
message | |
content | |
finish_reason | |
usage |
对于初学阶段来说,我们最需要关注的是 choices → message → content 这一层结构。因为真正的模型回答文本就保存在这里。
3.3.5 解析 response 获取模型回复内容
通过前面的完整输出可以看到,response 中包含了很多信息。但在实际开发中,我们通常不需要把完整的 response 都展示给用户,而是只需要提取模型生成的回答内容。
在刚才的完整结果中,真正的回答文本位于:
response → choices[0] → message → content
所以,我们可以通过下面这行代码取出模型回复:
response.choices[0].message.content
这行代码可以拆开理解:
response | |
choices | |
choices[0] | |
message | |
content |
因此,我们可以把程序最后一行从:
print(response)
改成:
print(response.choices[0].message.content)
完整代码如下:
import os
from openai import OpenAI
# 1. 创建 OpenAI 客户端
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 2. 调用大模型
response = client.chat.completions.create(
model="qwen3.6-plus",
messages=[
{"role": "system", "content": "你是一名耐心的人工智能课程助教。"},
{"role": "user", "content": "请用三句话介绍什么是大模型 API。"}
]
)
# 3. 提取并打印模型回复内容
print(response.choices[0].message.content)
再次运行程序:
python chat_once.py
这时终端中就不会显示完整的结构化对象,而是只会显示模型生成的回答内容,例如:
大模型 API(Application Programming Interface)是大型语言模型对外提供的标准化接口,允许开发者通过程序调用模型能力。
开发者可以通过 API 向模型发送问题或任务请求,并接收模型生成的文本结果。
它就像连接应用程序和大模型服务的桥梁,让我们不用本地部署模型,也能在自己的项目中使用大模型能力。
这样,我们就完成了从“查看完整返回结果”到“提取模型回答内容”的过程。
这个步骤非常重要。因为后续无论是把模型回答展示到网页界面中,还是传递给 LangChain、RAG 或智能体模块继续处理,本质上都需要先从 response 中拿到模型生成的文本内容。
简单来说,本节代码的核心可以总结为:
client 负责发送请求
response 保存完整结果
response.choices[0].message.content 保存模型回答文本
掌握这个结构后,我们就真正打通了从 Python 程序调用大模型,到获取模型回答内容的完整流程。
4. 总结
通过本节内容,我们完成了从开发环境准备到大模型 API 调用的完整入门流程。前面我们先介绍了 VSCode、Miniconda、Python 环境、Conda 虚拟环境、第三方库安装以及 Python 文件运行方式,目的是帮助大家先把“代码在哪里写、环境怎么管理、程序怎么运行”这些基础问题解决好。只有环境配置清楚了,后面的大模型应用开发才不会被各种环境问题卡住。
在此基础上,我们进一步学习了大模型 API 调用的基本原理。大家需要理解,调用大模型 API 并不是在本地电脑上直接运行大模型,而是通过 Python 程序把请求发送给云端大模型平台,由平台完成模型推理后,再把结果返回给本地程序。围绕这个过程,我们重点认识了 API_KEY、base_url、model、messages 和 response 这几个核心概念。它们分别对应身份认证、平台入口、模型选择、对话内容和返回结果,是后续所有大模型调用代码的基础。
随后,我们介绍了常见的大模型平台类型,包括通用大模型聚合平台、云厂商大模型平台和模型官方平台。虽然不同平台的页面、模型名称、接口地址和计费方式可能不同,但它们的核心调用逻辑基本一致:先注册平台账号,获取 API_KEY,配置接口地址和模型名称,然后在 Python 代码中发送请求并接收结果。
最后,我们使用 openai 库完成了一次最简单的大模型调用。通过创建客户端、配置 api_key 和 base_url、组织 messages、调用模型并从 response 中提取回答内容,我们成功在本地终端中看到了大模型返回的结果。这一步虽然代码不多,但意义非常重要,因为它代表我们已经真正打通了“本地 Python 程序 → 大模型平台 → 模型回复”的完整链路。
简单来说,本节课带大家迈出了大模型应用开发的第一步:先把环境准备好,再理解 API 调用原理,最后用 Python 代码真正调用一次大模型。后续无论是接入 Gradio 页面、构建聊天机器人,还是继续学习 LangChain、RAG 和智能体应用,本质上都会建立在这个基础调用流程之上。只要掌握了这条主线,后面的内容就会更加容易理解和扩展。
-- 完 --
关注机智流并加入 AI 技术交流群,不仅能和来自大厂名校的 AI 开发者、爱好者一起进行技术交流,同时还有与、、、、等。
cc | 大模型技术交流群 hf | HuggingFace 高赞论文分享群 lc|LangChain 技术交流群 code | AI Coding 交流群 具身 | 具身智能交流群 硬件 | AI 硬件交流群 推理 | AI 推理框架交流群 智能体 | Agent 技术交流群