当前位置: 首页 > news >正文

第 1 周 Day 4:Python Agent 实战:命令行多轮对话 ChatBot

第 1 周 Day 4:Python Agent 实战:命令行多轮对话 ChatBot

学习主题:实现一个可多轮对话的命令行 ChatBot
建议时长:2-3 小时
学习目标:用messages保存对话历史,让模型能基于上下文连续回答问题

一、为什么学这个

本文适合已经完成LLMClient封装的学习者。你需要会运行 Python 脚本,并且已经配置好大模型 API Key。

前一篇文章里,我们已经能完成一次模型调用:

用户问一句 -> 模型答一句 -> 程序结束

但真实聊天不是这样的。用户经常会追问:

什么是 Python Agent? 那它和普通 ChatBot 有什么区别? 能不能给一个代码例子?

第二句里的“它”指的是上一轮提到的 Python Agent。如果程序不保存历史,模型就可能不知道“它”是什么。

所以本篇要完成第一阶段的核心产出:一个可以连续对话的命令行 ChatBot。

二、核心概念

1. 什么是多轮对话

多轮对话就是模型回答时能看到前面的上下文。

单轮对话:

用户:它和普通 ChatBot 有什么区别? 模型:不知道“它”指什么。

多轮对话:

用户:什么是 Python Agent? 模型:Python Agent 是…… 用户:它和普通 ChatBot 有什么区别? 模型:这里的“它”指 Python Agent,区别是……

2.messages列表的作用

入门阶段可以用一个列表保存历史:

messages=[{"role":"user","content":"什么是 Python Agent?"},{"role":"assistant","content":"Python Agent 是用 Python 构建的智能体程序。"},{"role":"user","content":"它和普通 ChatBot 有什么区别?"},]

每条消息有两个关键字段:

字段含义
role谁说的话,例如userassistant
content消息内容

当我们把整个messages传给模型时,模型就能看到前面的对话。

3. 为什么不无限保存历史

对话历史会消耗上下文长度和 token。第一阶段可以先全部保存,方便理解;但要知道这不是最终方案。

后面学习记忆系统时,会用这些方法优化:

  • 只保留最近 N 轮对话
  • 把旧对话压缩成摘要
  • 把重要内容存入向量数据库

本篇先专注完成最小可用版本。

三、基础示例

1. 改造LLMClient支持 messages

src/llm_client.py中增加chat_with_messages方法:

fromopenaiimportOpenAIfromconfigimportSettings DEFAULT_SYSTEM_PROMPT="你是一个耐心的 Python 编程助教,回答要通俗、准确、简洁。"classLLMClient:def__init__(self,settings:Settings):self.model=settings.model client_kwargs={"api_key":settings.api_key}ifsettings.base_url:client_kwargs["base_url"]=settings.base_url self.client=OpenAI(**client_kwargs)defchat(self,user_input:str,system_prompt:str=DEFAULT_SYSTEM_PROMPT)->
http://www.jsqmd.com/news/801433/

相关文章:

  • 5款VeLoCity皮肤:让VLC播放器焕然一新的专业美化方案
  • PMSM无感控制避坑指南:为什么你的滑模观测器在高速重载时抖振大?(从电流模型选择到参数整定)
  • LizzieYzy终极指南:免费开源围棋AI分析工具如何提升你的棋力300%
  • 开封街头特色小吃 - 中媒介
  • Ubuntu 20.04 新装系统,如何安全地启用root登录?一个新手必看的完整配置流程
  • 基于Kimi与OpenClaw构建AI智能体:从意图解析到技能执行的工程实践
  • 告别外部中断!用STM32定时器输入捕获实现EC11编码器的高效解码
  • 靠谱的铝型材自动加工整线源头企业推荐 - mypinpai
  • 2026年玻璃棉卷毡优质厂家推荐指南 廊坊中鸿节能科技有限公司优选 玻璃棉卷毡/玻璃丝棉/钢结构玻璃棉 - 奔跑123
  • 推荐易上手的小吃创业项目 - 中媒介
  • 抖音无水印下载器:3分钟快速掌握批量下载技巧的终极指南
  • Unity3D iOS IPA打包实战:从项目配置到真机部署全流程解析
  • 如何快速掌握文献管理:面向学术研究者的完整指南
  • NVIDIA Profile Inspector完整指南:解锁显卡隐藏性能的终极方案
  • 3分钟快速汉化Honey Select 2:HF Patch完整中文体验指南
  • 交通标识标牌技术选型要点与东北合规厂家解析 - 奔跑123
  • 【MySQL】MVCC多版本并发控制:核心原理、Read View、undo log版本链、RC/RR隔离级别的差异控制(附《高频面试题》+流程图)
  • 用代码绘制专业图表:Draw.io Mermaid插件入门指南
  • SSD性能调优必知:深入闪存物理结构,搞懂LUN、Plane与并发操作的底层逻辑
  • 罗技PUBG压枪宏终极指南:5分钟快速配置,告别后坐力烦恼
  • OpenFOAM实战:在interFoam中植入多孔介质源项模拟复杂固壁
  • 因果推断‘踩坑’实录:当PCMCI算法遇到非平稳数据和隐藏变量时怎么办?
  • EdgeRemover:5分钟搞定微软Edge浏览器安全卸载的零失败方案
  • 给51单片机蓝牙小车加个“大脑”:用App Inventor2制作专属遥控界面
  • 米线加盟推荐杨记誉诚吗? - mypinpai
  • 别再只用默认贴图了!用PS自制火焰序列图,让你的Unity粒子特效更灵动
  • 别再手动对齐了!Typora/VSCode里用Markdown写论文表格和公式的偷懒技巧
  • “面”之跃升:系统化协同的演进与企业级智能体
  • Plaited Skills Installer:统一管理AI编程助手技能的符号链接方案
  • 告别DOM强依赖:指纹底座 + CDP协议劫持,构建店群RPA的“降维”数据引擎