初步进阶 - 大模型API的调用
本文基于你提供的智谱AI流式多轮对话代码,结合大模型API入门核心知识点,从零打通:环境配置、密钥安全、多轮对话、流式输出、异常处理所有核心能力,是新手入门大模型API调用的标准实战案例。
一、先搞懂:核心基础概念
1. 什么是大模型API?
我们不用自己下载、训练、部署超大AI模型,只需要发送网络请求,调用厂商(智谱、DeepSeek、通义千问)已经部署好的模型,接收AI的回答,这个过程就是API调用。
简单说:代码帮我们远程调用云端AI,实现人机对话。
2. 什么是SDK?
原生调用API需要手写复杂的网络请求、请求头、数据格式,非常麻烦。
厂商提供的 SDK(工具包)帮我们封装好了所有底层操作,我们只需要写简单代码,就能调用AI,新手直接用SDK即可。
3. 什么是流式输出(stream)?
平时网页聊天框的「打字机效果」,就是流式输出。
-
非流式:AI全部写完,一次性返回结果(等待久,体验差)
-
流式:AI写一点、返回一点,实时展示(所有聊天软件的标配)
4. 大模型没有“记忆力”(核心重点)
大模型本身不会自动记住你上一句说的话!
所有的多轮对话记忆,都是我们自己在代码里保存聊天记录,每次提问都把完整记录发给AI,AI才能接续对话。
二、项目前置准备
1. 安装必备工具包
打开电脑终端,输入两行命令安装依赖,缺一不可:
pip install python-dotenv
pip install zhipuai
-
python-dotenv:读取本地配置文件,保护密钥不泄露
-
zhipuai:智谱AI官方SDK,专门用来调用智谱大模型
2. 配置密钥文件(新手最重要的安全规范)
在你的代码文件夹里,新建一个名为 .env 的文件(无后缀),写入以下内容:
ZHIPUAI_API_KEY=你的智谱AI平台密钥
ZHIPUAI_MODEL_NAME=glm-4-flash
三、完整代码逐行超详细解析
下面对你的全部代码,从第一行到最后一行,逐行翻译“人话”,0基础也能看懂。
第一部分:导入工具 + 加载私密配置
import os
from dotenv import load_dotenv
from zhipuai import ZhipuAiClient
oad_dotenv()
逐行解释:
-
import os:调用电脑系统工具,用来读取.env文件里的密钥 -
from dotenv import load_dotenv:导入读取配置文件的工具 -
from zhipuai import ZhipuAiClient:导入智谱AI的客户端工具,用来连接AI -
load_dotenv():核心作用!自动读取文件夹里的.env文件,把密钥加载到代码中
第二部分:连接智谱AI服务器
client = ZhipuAiClient( api_key=os.environ.get('ZHIPUAI_API_KEY'))
解释:
-
os.environ.get():安全读取.env里的密钥,读不到也不会直接报错崩溃 -
client:创建一个和智谱AI服务器的“连接通道”,后续所有聊天都通过这个通道实现
第三部分:设置AI角色(系统提示词)
message = [{ "role": "system", "content": "You are a helpful assistant." }]
这是多轮对话的核心容器,专门存放所有聊天记录:
-
system:给AI设定身份和规则,全局生效
-
当前含义:让AI成为一个乐于助人的助手
-
后续我们的提问、AI的回答,都会全部放进这个message列表
✅ 知识点:大模型的所有对话,只有三种身份:system(系统)、user(用户)、assistant(AI)。
第四部分:无限循环聊天(实现持续对话)
while True 是无限循环,作用是:程序运行后,可以一直和AI聊天,不用每次运行一次代码聊一次天。
第五部分:接收用户输入,保存聊天记录
user_input = input("你:").strip()
message.append({ "role": "user", "content": user_input})
逐行解释:
-
input("你:"):在终端等待我们输入问题 -
strip():自动删掉输入内容前后的空格,避免空白无效提问 -
message.append():把我们的提问,添加到聊天记录列表里,传给AI实现记忆
第六部分:核心API调用(连接AI生成回答)
response = client.chat.completions.create( model=os.environ.get('ZHIPUAI_MODEL_NAME'), messages=message, stream=True, max_tokens= 2000 )
四个0基础核心参数,一看就懂:
-
model:指定要调用的AI模型(我们配置的是glm-4-flash,免费好用)
-
messages:传入完整的聊天记录(实现多轮对话的关键)
-
stream=True:开启流式输出,实现打字机实时效果
-
max_tokens=2000:限制AI单次最大输出字数,防止输出过长、扣费过多
第七部分:解析流式回答(实现实时打字效果)
reply = ""
for chunk in response:
if chunk.choices[0].delta.content:
content = chunk.choices[0].delta.content
reply+=content print(content,end = " ")
print(f"ai reply : {reply}")
新手最容易懵的部分,通俗解释:
-
reply = "":定义空字符串,用来拼接AI的完整回答 -
for chunk in response:循环接收AI实时返回的一小段一小段文字 -
delta.content:流式输出专属字段,代表「最新生成的一小段文字」 -
reply+=content:把所有小段文字拼接成完整回答 -
print(content,end = " "):实时打印文字,实现打字机效果,不自动换行
💡 关键区别:非流式用 message.content,流式只能用 delta.content。
第八部分:异常捕获(防止程序崩溃)
except Exception as e: print(f"Error: {e}") print(f"Error type: {type(e)}")
作用:只要程序出现错误(网络断了、密钥错了、没钱了、提问为空),不会直接闪退,而是打印错误原因,新手方便排查问题。
全文核心知识点总结
-
安全规范:密钥必须放在.env文件,禁止硬编码到代码
-
记忆原理:AI无原生记忆,本地手动维护message聊天列表实现多轮对话
-
流式输出:stream=True开启实时打字效果,读取delta增量内容
-
基础架构:导入工具→加载配置→连接AI→循环对话→解析返回结果→异常防护
-
通用适配:这套代码格式适配90%国产大模型(DeepSeek、通义千问等),只需更换接口地址和模型名
更多推荐


所有评论(0)