大模型应用开发教程04 | 多轮对话原理与实现(Chatbot)
理论部分很多人第一次写多轮对话会误以为“模型记住了刚才聊过的内容”。但从 API 的角度看多轮对话的本质其实是每一轮请求都把历史消息一起发给模型。也就是说模型没有“长期记忆”默认情况下不会跨请求自动保存我们看到的“记住上下文”来自我们在每次调用时携带的messages所谓“对话状态”就是我们在本地维护的一份messages列表在常见的对话接口里输入是一个消息列表messages每条消息包含role消息角色常见为system/user/assistantcontent消息内容多轮对话要跑起来有一个关键点每轮把用户输入 append 进 messages拿到模型输出后也要把 assistant 输出 append 进 messages。否则模型下一轮就“忘了自己刚刚说了什么”。实践部分本案例做什么实现一个命令行聊天机器人支持我们在终端连续输入多轮消息初始化messages用system设定角色循环读取用户输入追加到messages调用模型生成回答并将回答追加到messages支持输入exit/quit/退出结束对话支持Ctrl C强制退出主要代码本篇直接使用项目脚本src/1.3_chatbot.pyimportosfromdotenvimportload_dotenvfromopenaiimportOpenAI# 加载配置load_dotenv()clientOpenAI(api_keyos.getenv(ZHIPUAI_API_KEY),base_urlos.getenv(ZHIPUAI_BASE_URL))defmain():# 1. 初始化对话历史# system: 设置模型的“人设”messages[{role:system,content:你是一个暴躁的四川厨师说话带口音。}]print( 智能聊天机器人 (输入 exit 或 quit 退出) )whileTrue:# 2. 获取用户输入try:user_inputinput(\n 你: )exceptKeyboardInterrupt:# 处理 CtrlC 强制退出print(\n 再见)breakifuser_input.lower()in[exit,quit,退出]:print( 聊得很开心下次见)breakifnotuser_input.strip():print(⚠️ 请输入内容...)continue# 3. 将用户输入加入历史messages.append({role:user,content:user_input})try:# 4. 调用 API# print(Thinking..., end, flushTrue) # 简单的等待提示responseclient.chat.completions.create(modelglm-4-flash,messagesmessages,temperature0.9,streamFalse)# 5. 获取回答并展示assistant_contentresponse.choices[0].message.contentprint(f\n AI:{assistant_content})# 6. 【关键】将 AI 的回答也加入历史# 如果不加这一步模型下一轮就会忘记它刚才说了什么messages.append({role:assistant,content:assistant_content})exceptExceptionase:print(f\n❌ 发生错误:{e})# 发生错误时建议把刚才导致错误的用户输入移除防止卡死messages.pop()if__name____main__:main()运行方式在项目根目录执行python3 src/1.3_chatbot.py运行结果示例运行后会看到类似交互回答内容每次会不同 智能聊天机器人 (输入 exit 或 quit 退出) 你: 我想学做番茄炒蛋 AI: ... 你: 那第一步应该做什么 AI: ... 你: exit 聊得很开心下次见如果出现报错提示缺少ZHIPUAI_API_KEY先确认第 2 篇的.env配置是否正确依赖缺失例如 openai/dotenv确认已安装依赖并激活虚拟环境网络相关错误确认网络/代理配置与ZHIPUAI_BASE_URL可访问总结这一篇我们完成了一个最小可用的多轮对话机器人并理解了多轮对话的核心对话状态由我们维护每轮请求都要携带历史消息。

相关新闻

从简单 RAG 到本体论,我用两年时间踩完 AI 知识库的所有坑

从简单 RAG 到本体论,我用两年时间踩完 AI 知识库的所有坑

下来后收到了很多同学关于该知识的进一步咨询,这从侧面说明一个问题:很多企业发现传统的 RAG 技术真的不够用了,他们正逐渐迈入深水区,只不过摸着石头过河的效果,确实不太好啦。 今天,我就基于自己的理解帮…

2026/8/13 8:38:51 阅读更多 →
stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步

stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步

核心理念2026/7/7每次仅加载一个模型,中间结果暂存于系统内存,最终输出才写入磁盘。 与 ComfyUI / sd-cli 一次性加载所有模型的策略不同,分步管线确保每一步骤可独占全部资源(尤其是显存)。架构图textStep 1 …

2026/8/13 8:38:51 阅读更多 →
机器学习核心术语实战指南:从数据到模型,避坑与评估全解析

机器学习核心术语实战指南:从数据到模型,避坑与评估全解析

1. 从零开始:为什么我们需要先搞懂术语? 干了这么多年技术,带过不少新人,也看过很多项目从起步到翻车。我发现一个特别普遍的现象:很多朋友一上来就想跑通某个酷炫的模型,或者复现一篇论文的代码&#xff0…

2026/8/13 8:38:51 阅读更多 →

最新新闻

HoRain云--Maven Eclipse

HoRain云--Maven Eclipse

Eclipse 提供了一个很好的插件 m2eclipse ,该插件能将 Maven 和 Eclipse 集成在一起。 在最新的 Eclipse 中自带了 Maven,我们打开,Windows->Preferences,如果会出现下面的画面: 下面列出 m2eclipse 的一些特点&am…

2026/8/13 9:29:14 阅读更多 →
如何用NHSE免费存档编辑器3小时打造梦想动物森友会岛屿

如何用NHSE免费存档编辑器3小时打造梦想动物森友会岛屿

如何用NHSE免费存档编辑器3小时打造梦想动物森友会岛屿 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 还在为《集合啦!动物森友会》中那些永远收集不齐的家具、难以改造的地形和随机出…

2026/8/13 9:29:14 阅读更多 →
Nginx可视化管理工具Nginx-UI的核心功能与部署指南

Nginx可视化管理工具Nginx-UI的核心功能与部署指南

1. 为什么需要Nginx可视化管理工具? Nginx作为当前最流行的Web服务器之一,其高性能和灵活性深受开发者喜爱。但传统的Nginx配置方式存在几个明显痛点: 配置文件语法复杂,location匹配规则容易出错 每次修改配置都需要手动reload…

2026/8/13 9:29:14 阅读更多 →
从 RxJS from 到 SAP UI5 数据流,UI5 没有同名 API,却有一套完全不同的异步与绑定哲学

从 RxJS from 到 SAP UI5 数据流,UI5 没有同名 API,却有一套完全不同的异步与绑定哲学

在一个稍微复杂一点的 SAP UI5 项目里,Controller 往往同时面对几种完全不同的数据来源。OData 请求返回异步结果,JSONModel 里放着数组,sap.m.Button 不断产生 press 事件,路由器产生导航事件,某些浏览器 API 返回 Promise,有时还会接入 WebSocket。做过 Angular 加 RxJ…

2026/8/13 9:29:14 阅读更多 →
RAG系统检索优化:混合检索技术原理与工程实践详解

RAG系统检索优化:混合检索技术原理与工程实践详解

1. 从“召回率”与“精确率”的永恒博弈说起 如果你正在构建一个基于大语言模型的问答系统,或者一个智能客服、一个企业知识库,那么“RAG”这个词对你来说一定不陌生。RAG(Retrieval-Augmented Generation,检索增强生成&#xff0…

2026/8/13 9:29:14 阅读更多 →
AI模拟面试工具对比!2026年7款主流AI模拟面试工具6维实测与排行榜

AI模拟面试工具对比!2026年7款主流AI模拟面试工具6维实测与排行榜

文章目录一、评测背景:为什么需要AI模拟面试?二、评测方法论:6维度加权评分模型2.1 为什么是这6个维度?2.2 评测流程三、7款工具深度实测3.1 鹅来面(OfferGoose) v3.2.1 ⭐首选3.2 Interviewing.io v2026.073.3 牛客AI面试 v7.3.0…

2026/8/13 9:28:14 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →