Agent-study项目教程(01):命令行智能聊天机器人
一、理论部分1. 多轮对话的本质模型无状态历史由客户端维护大语言模型在一次请求结束后不会“自动记住”上一轮对话内容。我们看到的“连续对话”能力本质上来自客户端在每次请求时携带完整的历史消息列表通常命名为messages。模型并不是在记忆而是在“阅读你传入的历史”。常见的消息结构包含三类角色system系统指令定义助手身份、输出风格与约束user用户输入assistant模型输出只要历史消息按顺序被发送模型就能在当前轮生成时参考上下文从而表现为“记得之前聊过什么”。2. Context Window上下文窗口能力边界与工程约束messages会随着轮次增加而变长而模型对单次输入的最大容量是有限的上下文窗口通常以 token 计。当对话持续增长时会出现三类典型问题输入接近/超过上限导致报错或被截断请求变慢、成本上升关键信息被长历史稀释回答质量下降本项目采用最简单的“把所有历史都带上”的方式目的是让你先把多轮对话跑通后续阶段再系统引入滑动窗口、摘要记忆与检索增强等策略。3. Streaming流式输出提升交互体验的关键机制非流式模式下模型需要生成完整文本后一次性返回用户会感受到明显的等待。开启流式输出后服务端会以 chunk增量片段的方式持续返回内容客户端可以边接收边展示实现类似“打字机”的效果。流式输出的工程要点开启streamTrue循环消费 chunk 的增量内容既实时输出也要拼接成完整回复写回历史保证下一轮的上下文完整二、实战部分1. 项目目标实现一个命令行聊天机器人具备多轮对话能在一定范围内记住前文流式输出回答内容逐步输出基础可用性支持退出指令与异常处理2. 运行准备请确保本地已安装依赖并配置好环境变量。依赖安装示例pipinstall-rrequirements.txt环境变量示例DEEPSEEK_API_KEY你的 API KeyDEEPSEEK_BASE_URL兼容 OpenAI 协议的服务地址你可以使用.env文件配合python-dotenv加载项目代码已包含加载逻辑。3. 主要代码核心实现importosfromopenaiimportOpenAIfromdotenvimportload_dotenv load_dotenv()clientOpenAI(api_keyos.getenv(DEEPSEEK_API_KEY),base_urlos.getenv(DEEPSEEK_BASE_URL),)defchat_loop():print(AI 聊天助手已启动输入 exit 或 quit 退出)print(-*50)messages[{role:system,content:你是一个乐于助人的 AI 助手请用简洁的中文回答用户的问题。}]whileTrue:try:user_inputinput(\n你: ).strip()ifuser_input.lower()in[exit,quit]:print(\n再见。)breakifnotuser_input:continuemessages.append({role:user,content:user_input})print(AI: ,end,flushTrue)streamclient.chat.completions.create(modeldeepseek-chat,messagesmessages,streamTrue,temperature0.7,)full_responseforchunkinstream:deltachunk.choices[0].deltaifdeltaanddelta.content:print(delta.content,end,flushTrue)full_responsedelta.contentprint()messages.append({role:assistant,content:full_response})exceptKeyboardInterrupt:print(\n程序已中断。)breakexceptExceptionase:print(f\n发生错误{e})if__name____main__:chat_loop()这段代码对应三件关键事messages作为对话历史容器实现多轮上下文streamTrue 循环 chunk实现流式输出full_response拼接完整回答并写回messages形成“记忆闭环”4. 如何运行在项目根目录执行python stage_01_llm_basics/project_01_chatbot/chatbot.py5. 运行结果示例下面是一段典型的交互示例为了展示多轮效果连续问了两轮AI 聊天助手已启动输入 exit 或 quit 退出 -------------------------------------------------- 你: 我叫小林今天心情一般 AI: 好的小林。我在这里你可以和我说说发生了什么或者我可以帮你做一个简单的情绪梳理。 你: 你还记得我叫什么吗 AI: 你叫小林。 你: exit 再见。6. 项目总结多轮对话并不神秘关键在于客户端维护并回传历史messages流式输出显著提升体验通过持续消费 chunk 实现“边生成边展示”该项目是后续 Agent 能力的基础工具调用、RAG、工作流、多智能体协作本质上都建立在“对话状态管理 可控输出/输入”的工程结构之上

相关新闻

ASAP完全指南:数字病理全切片图像分析与可视化的终极工具

ASAP完全指南:数字病理全切片图像分析与可视化的终极工具

ASAP完全指南:数字病理全切片图像分析与可视化的终极工具 【免费下载链接】ASAP Program for the analysis and visualization of whole-slide images in digital pathology 项目地址: https://gitcode.com/gh_mirrors/asa/ASAP ASAP(Automated S…

2026/10/25 20:51:03 阅读更多 →
IPXWrapper 协议转换终极指南:一招让星际争霸、红警2在Win10/11重获局域网联机

IPXWrapper 协议转换终极指南:一招让星际争霸、红警2在Win10/11重获局域网联机

IPXWrapper 协议转换终极指南:一招让星际争霸、红警2在Win10/11重获局域网联机 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 周六晚上,你翻出珍藏的光盘,装好《星际争霸》,喊上老…

2026/10/26 14:37:11 阅读更多 →
苹果说你 Mac“过时“了?OpenCore Legacy Patcher 让 2008 年旧机免费跑最新 macOS

苹果说你 Mac“过时“了?OpenCore Legacy Patcher 让 2008 年旧机免费跑最新 macOS

苹果说你 Mac"过时"了?OpenCore Legacy Patcher 让 2008 年旧机免费跑最新 macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你…

2026/10/25 19:45:16 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →