本文基于你提供的智谱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)}")

作用:只要程序出现错误(网络断了、密钥错了、没钱了、提问为空),不会直接闪退,而是打印错误原因,新手方便排查问题。

全文核心知识点总结

  1. 安全规范:密钥必须放在.env文件,禁止硬编码到代码

  2. 记忆原理:AI无原生记忆,本地手动维护message聊天列表实现多轮对话

  3. 流式输出:stream=True开启实时打字效果,读取delta增量内容

  4. 基础架构:导入工具→加载配置→连接AI→循环对话→解析返回结果→异常防护

  5. 通用适配:这套代码格式适配90%国产大模型(DeepSeek、通义千问等),只需更换接口地址和模型名

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐