从单体到分布式:AI Agent系统架构演进

张开发
2026/4/17 17:52:13 15 分钟阅读

分享文章

从单体到分布式:AI Agent系统架构演进
从单体到分布式AI Agent系统架构演进副标题从简单的“代码助手”“客服机器人”到复杂的“多模态协作专家”“企业级自动化决策平台”的完整技术路径第一部分引言与基础1.1 摘要/引言1.1.1 问题陈述你是否有过这样的经历用ChatGPT做简单的Python脚本bug修复时它能精准定位并给出修改方案但当你让它**“帮我搭建一个完整的电商数据分析原型系统——先爬取近7天的淘宝运动鞋价格数据清洗并存储到MySQL用pandas做趋势分析用Streamlit生成交互式图表最后输出一份Markdown报告并通过邮件发送给老板”**时ChatGPT要么只会分步给一堆零散的代码让你手动粘贴运行要么中间步骤比如爬虫被反爬、Streamlit端口被占用、MySQL连接超时出了问题就直接“摆烂”无法自主修复同样的场景在企业级应用中更普遍传统的单模型AI客服只能按预设话术回复单Agent代码审查工具只能检查语法错误无法理解业务上下文甚至连OpenAI自己的GPTs插件生态当需要调用3个以上跨平台API比如Trello看板、Google日历、飞书文档、企业ERP时也经常出现上下文丢失、工具调用混乱、执行超时崩溃的问题。这些问题的本质是什么是传统的**“单Agent单任务”“单Agent串行工具链”** 甚至更早的**“纯大模型无Agent封装”** 的架构已经无法满足复杂多任务、高并发、跨模态、高容错、可扩展、企业级隐私安全合规的AI应用需求了。AI Agent的架构必须像软件系统那样经历从**“单体应用Monolithic Agent”** 到**“微服务架构Microservices Agent”** 再到**“分布式协作架构Distributed Collaborative Agent Orchestration”** 的完整演进1.1.2 核心方案本文将以AI Agent的技术定义和核心能力拆解为起点沿着软件系统架构演进的经典脉络但结合AI Agent的独特属性——自主决策、记忆、感知、行动、学习系统地讲解纯大模型“裸奔”阶段的痛点与临时方案单体AI Agent的架构设计、核心组件、实现代码、适用场景与局限性从单体到微服务的过渡为什么需要拆分Agent的核心能力拆分的原则是什么有哪些技术选型分布式协作AI Agent的核心架构Orchestrator编排器、Worker Agent工作者、Memory Service分布式记忆、Tool Registry工具注册中心、Observability可观测性五大核心模块的设计与实现完整的分布式协作Agent系统实战基于LangGraph、LangChain、Redis Stack、Celery、FastAPI、Docker Compose搭建一个“电商数据分析多Agent自动化协作原型系统”**企业级分布式Agent系统的进阶需求多租户、隐私安全联邦学习Agent、差分隐私记忆、高可用、负载均衡、持续学习分布式Agent架构的未来趋势AutoGPTs-like的自我进化Agent、基于World Model的全局决策Agent、跨设备/跨平台的边缘云端混合部署Agent1.1.3 主要成果/价值读完本文你将彻底理解AI Agent与“纯大模型对话”的本质区别掌握从0到1搭建单体AI Agent的完整流程附可运行的Python代码理解软件架构演进逻辑在AI Agent领域的适配与改造掌握基于主流开源框架LangGraph、LangChain、Redis Stack搭建分布式协作AI Agent系统的核心技术获得一套可复现的电商数据分析多Agent原型系统代码附GitHub仓库地址了解企业级分布式Agent系统的最佳实践与常见坑点对AI Agent架构的未来发展有清晰的预判1.1.4 文章导览全文分为四个部分共16个章节第一部分引言与基础定义AI Agent拆解其核心能力明确目标读者与前置知识列出详细目录第二部分核心演进路径按照时间顺序和架构复杂度依次讲解纯大模型阶段、单体Agent阶段、微服务Agent阶段、分布式协作Agent阶段的问题背景、架构设计、核心概念、实现代码、适用场景与局限性第三部分实战与进阶基于第二部分的核心知识完整复现电商数据分析多Agent原型系统并讲解企业级进阶需求、最佳实践、常见问题与解决方案第四部分总结与展望回顾全文核心要点总结分布式Agent架构的价值列出参考资料给出完整代码仓库展望未来发展趋势1.2 目标读者与前置知识1.2.1 目标读者本文的目标读者是有一定Python基础已经用过OpenAI API/Anthropic Claude API等大模型API想尝试开发AI Agent但不知道从何入手的初级AI应用开发者有软件架构经验尤其是微服务架构经验想将传统软件架构知识迁移到AI Agent领域的架构师已经用LangChain/LangGraph等框架开发过简单的AI Agent但遇到了上下文丢失、工具调用混乱、执行超时、无法扩展等问题想升级到分布式架构的中级AI应用开发者对企业级AI应用感兴趣想了解如何满足多租户、隐私安全、高可用等需求的技术负责人1.2.2 前置知识阅读本文你需要具备以下基础知识或技能Python编程熟练掌握Python 3.9的语法了解asyncio异步编程分布式Agent部分会用到大模型API使用至少用过OpenAI APIGPT-3.5-turbo/GPT-4o-mini即可或其他类似的API理解Prompt Engineering的基本概念比如System Prompt、Few-Shot Prompting软件架构基础了解单体应用、微服务架构的基本概念知道什么是API网关、消息队列、分布式缓存Docker基础会使用Docker Compose搭建简单的多容器环境实战部分会用到数据库基础了解MySQL/SQLite关系型数据库了解Redis非关系型数据库实战部分会用到Redis Stack做分布式记忆和缓存LangChain/LangGraph入门可选但推荐如果已经用过LangChain的Chain/Agent模块会更容易理解本文的内容但本文会从0开始讲解核心组件1.3 文章目录为了方便你快速导航本文的详细目录如下第一部分引言与基础引人注目的标题与副标题摘要/引言2.1 问题陈述2.2 核心方案2.3 主要成果/价值2.4 文章导览目标读者与前置知识3.1 目标读者3.2 前置知识文章目录AI Agent的技术定义与核心能力拆解5.1 AI Agent vs 纯大模型对话 vs 传统规则驱动机器人5.2 核心概念什么是AI Agent5.3 核心能力拆解感知Perception→记忆Memory→决策Reasoning→行动Action→学习Learning5.4 AI Agent的核心属性维度对比灵活性、自主性、可扩展性、容错性、隐私性5.5 交互关系图核心能力之间的数据流5.6 本章小结第二部分核心演进路径阶段一纯大模型“裸奔”阶段6.1 问题背景大语言模型LLMs的爆发与初期应用场景6.2 核心概念什么是“纯大模型裸奔”6.3 实现代码用OpenAI API实现一个“简单的Python脚本bug修复助手”6.4 问题描述纯大模型裸奔阶段的5大痛点6.5 临时解决方案Prompt Engineering的“暴力美学”6.6 边界与外延纯大模型裸奔的适用场景6.7 本章小结阶段二单体AI Agent阶段7.1 问题背景为什么需要从纯大模型到单体Agent7.2 核心概念单体AI Agent的定义、架构图与核心要素组成7.3 核心组件详解7.3.1 感知模块Perception Module7.3.2 记忆模块Memory Module—— 短期记忆Context Window、中期记忆Buffer、长期记忆Vector DB7.3.3 决策模块Reasoning Module—— 基于规则的决策、基于LLM的零样本/少样本推理、思维链CoT、思维树ToT7.3.4 行动模块Action Module—— 工具调用Function Calling/Tool Use、环境交互7.3.5 学习模块Learning Module—— 简单的反馈循环Feedback Loop7.4 概念结构与核心要素组成的Mermaid ER图7.5 算法流程图单体AI Agent的执行流程7.6 数学模型单体AI Agent的马尔可夫决策过程MDP简化模型7.7 实现代码基于LangChain v0.2实现一个“带记忆、工具调用、反馈循环的电商客服机器人”7.7.1 环境安装7.7.2 系统功能设计7.7.3 系统核心实现源代码7.8 实际场景应用7.9 问题描述单体AI Agent的5大局限性7.10 边界与外延单体AI Agent的适用场景7.11 概念核心属性维度对比纯大模型裸奔 vs 单体AI Agent7.12 本章小结阶段三微服务AI Agent阶段8.1 问题背景为什么需要从单体Agent到微服务Agent8.2 核心概念微服务AI Agent的定义、架构图与核心要素组成8.3 拆分原则如何将单体Agent的核心能力拆分为独立的微服务8.4 核心微服务详解8.4.1 LLM Gateway大模型网关8.4.2 Memory Service记忆服务8.4.3 Tool Registry工具注册中心8.4.4 Tool Executor工具执行服务8.4.5 Reasoning Orchestrator轻量级推理编排器8.5 概念之间的关系Mermaid架构图与交互关系图8.6 技术选型对比大模型网关LiteLLM vs OpenRouter vs 自研、记忆服务Redis Stack vs Pinecone vs Milvus vs Weaviate、工具执行Celery vs Ray vs Dapr8.7 算法流程图微服务AI Agent的执行流程8.8 数学模型微服务AI Agent的分布式马尔可夫决策过程DMDP简化模型8.9 实现代码基于LiteLLM、FastAPI、Redis Stack、Celery、Docker Compose拆分阶段二的单体电商客服机器人8.9.1 环境安装8.9.2 系统架构设计8.9.3 系统接口设计8.9.4 系统核心实现源代码8.10 实际场景应用8.11 问题描述微服务AI Agent的3大局限性8.12 边界与外延微服务AI Agent的适用场景8.13 概念核心属性维度对比纯大模型裸奔 vs 单体AI Agent vs 微服务AI Agent8.14 本章小结阶段四分布式协作AI Agent阶段9.1 问题背景为什么需要从微服务Agent到分布式协作Agent9.2 核心概念分布式协作AI Agent的定义、架构图与核心要素组成9.3 核心模块详解9.3.1 Global Orchestrator全局编排器—— 基于LangGraph的多Agent状态管理StateGraph9.3.2 Worker Agent Pool工作者Agent池—— 通用Agent、专业Agent、工具Agent、验证Agent9.3.3 Distributed Memory Layer分布式记忆层—— 全局共享记忆、局部私有记忆、短期临时记忆9.3.4 Tool Registry Discovery工具注册与发现中心—— 支持多租户、动态注册、权限控制9.3.5 Observability Debugging Layer可观测性与调试层—— 日志、指标、追踪、Agent状态可视化9.3.6 Feedback Continuous Learning Layer反馈与持续学习层—— 人工反馈、自动反馈、模型微调9.4 概念之间的关系Mermaid ER实体关系图、Mermaid架构图、Mermaid交互关系图9.5 多Agent协作模式详解9.5.1 串行协作模式Sequential Collaboration9.5.2 并行协作模式Parallel Collaboration9.5.3 混合协作模式Hybrid Collaboration9.5.4 投票协作模式Voting Collaboration9.5.5 递归协作模式Recursive Collaboration9.6 技术选型对比全局编排器LangGraph vs AutoGPT Plugin System vs Microsoft AutoGen vs MetaGPT9.7 算法流程图分布式协作AI Agent的执行流程9.8 数学模型分布式协作AI Agent的多智能体马尔可夫决策过程MMDP简化模型9.9 本章小结第三部分实战与进阶实战基于LangGraph、LangChain、Redis Stack、Celery、FastAPI、Docker Compose搭建电商数据分析多Agent自动化协作原型系统10.1 项目介绍10.2 环境准备10.2.1 软件、库、框架及其版本清单10.2.2 Docker Compose配置文件10.2.3 .env.example配置文件10.3 系统功能设计10.3.1 功能模块划分10.3.2 核心用例图10.4 系统架构设计10.4.1 整体架构图Mermaid10.4.2 数据流图Mermaid10.5 系统接口设计10.5.1 RESTful API接口文档OpenAPI 3.0格式10.5.2 工具注册接口10.5.3 Agent执行接口10.5.4 状态查询接口10.6 系统核心实现源代码10.6.1 全局状态定义State Definition10.6.2 Worker Agent实现需求拆解Agent、数据采集Agent、数据清洗Agent、数据分析Agent、可视化生成Agent、报告生成Agent、邮件发送Agent、验证Agent10.6.3 Global Orchestrator实现LangGraph StateGraph的边与节点定义10.6.4 FastAPI后端服务实现10.6.5 Redis Stack分布式记忆实现10.6.6 Celery工具执行服务实现10.7 系统部署与运行10.7.1 本地部署步骤10.7.2 系统测试步骤10.7.3 结果展示与验证API返回示例、Agent执行日志、Streamlit交互式图表、Markdown报告、邮件截图10.8 最佳实践tips10.9 本章小结企业级分布式Agent系统的进阶需求11.1 多租户支持11.2 隐私安全与合规11.2.1 联邦学习AgentFederated Learning Agents11.2.2 差分隐私记忆Differential Privacy Memory11.2.3 数据脱敏与加密11.2.4 模型隔离与沙箱运行11.3 高可用与容灾11.4 负载均衡11.5 持续学习Continuous Learning11.6 成本控制11.7 本章小结常见问题与解决方案FAQ/Troubleshooting12.1 分布式记忆相关问题12.2 全局编排相关问题12.3 工具调用相关问题12.4 可观测性相关问题12.5 性能相关问题12.6 成本相关问题12.7 本章小结行业发展与未来趋势13.1 问题演变发展历史的markdown表格13.2 未来趋势一AutoGPTs-like的自我进化AgentSelf-Evolving Agents13.3 未来趋势二基于World Model的全局决策AgentWorld Model-Based Agents13.4 未来趋势三跨设备/跨平台的边缘云端混合部署AgentEdge-Cloud Hybrid Agents13.5 未来趋势四多模态多感官AgentMultimodal Multisensory Agents13.6 未来趋势五标准化Agent协议与生态Standardized Agent Protocols Ecosystem13.7 本章小结第四部分总结与展望总结14.1 核心要点回顾14.2 分布式Agent架构的价值重申14.3 最终印象参考资料15.1 论文15.2 官方文档15.3 开源项目15.4 其他博客文章附录16.1 完整的GitHub仓库地址16.2 完整的Docker Compose配置文件16.3 完整的requirements.txt/package.json文件16.4 完整的OpenAPI 3.0接口文档16.5 完整的测试用例1.4 AI Agent的技术定义与核心能力拆解1.4.1 AI Agent vs 纯大模型对话 vs 传统规则驱动机器人在正式讲解AI Agent的技术定义之前我们必须先搞清楚AI Agent、纯大模型对话、传统规则驱动机器人这三个概念的本质区别——因为很多初学者会把它们混为一谈。我们用一个**“查询北京到上海明天的最便宜机票”** 的场景来对比这三个概念对比维度传统规则驱动机器人纯大模型对话GPT-3.5-turbo/GPT-4o-miniAI Agent比如GPTs插件版的机票查询助手工作原理预定义的规则树/状态机必须严格匹配用户的输入关键词和格式比如必须输入“查询 北京 上海 202X-XX-XX 机票”基于Transformer架构的预训练大模型通过概率预测生成文本能够理解自然语言但没有自主访问外部工具的能力除非在对话中你手动把API的返回结果粘贴给它封装了感知、记忆、决策、行动、学习五大核心能力的自主系统能够自主理解自然语言需求、调用外部工具比如携程/去哪儿的机票API、处理工具返回结果、修正错误、生成最终答案用户输入要求极高必须严格按照预定义的格式和关键词输入极低自然语言即可比如“帮我看看明天北京飞虹桥或者浦东的机票有没有凌晨或者深夜的特价票最好是国航或者东航的”极低自然语言即可甚至可以理解更模糊的需求比如“我明天要去上海开会帮我安排一下交通——火车太慢了机票不能太贵时间最好在早上9点前到晚上6点后回北京”执行方式严格按照规则树/状态机执行没有任何自主性被动生成文本需要用户手动粘贴工具返回结果无法自主修正错误自主执行无需用户手动干预中间步骤能够自主检测并修正错误比如机票API返回超时它会自动重试或者换一个API比如用户没有明确说日期是“明天”而是说“后天”它会自动确认并调整查询参数记忆能力短期记忆极弱一般只能记住当前对话的1-2轮上下文没有长期记忆短期记忆受限于Context Window比如GPT-3.5-turbo-16k的Context Window是16384个tokenGPT-4o-mini是128k个token没有长期记忆除非你把历史对话手动保存下来在下一次对话开头粘贴给它短期记忆、中期记忆、长期记忆兼备——短期记忆受限于Context Window中期记忆存储在Buffer中长期记忆存储在Vector DB中能够跨对话、跨任务、跨时间记住用户的偏好、历史行为、历史任务结果学习能力几乎没有只能通过修改规则树/状态机来“升级”被动学习通过预训练数据学习没有主动学习能力除非你通过Fine-Tuning或者Few-Shot Prompting来“教”它主动学习能力兼备——通过人工反馈RLHF、RLAIF和自动反馈任务成功/失败的结果反馈来主动调整自身的决策和行动策略甚至可以通过Fine-Tuning来升级自己的底层LLM容错性极低只要用户的输入稍微偏离预定义的格式和关键词就会直接返回“对不起我听不懂您的问题请重新输入”一般能够理解部分模糊的需求但中间步骤出了问题就无法自主修复极高能够自主检测并修正错误甚至可以通过投票协作模式多个Agent并行处理同一个任务然后投票选出最佳结果来提高任务的成功率可扩展性极低添加一个新功能比如查询火车票需要重新设计规则树/状态机工作量极大一般添加一个新功能比如查询火车票需要修改Prompt Engineering的System Prompt和Few-Shot Examples但中间步骤还是需要用户手动粘贴工具返回结果极高添加一个新功能比如查询火车票只需要在Tool Registry中注册一个新的工具火车票API然后稍微修改一下决策模块的System Prompt即可甚至可以让Agent自主发现并学习新的工具灵活性极低只能处理预定义的场景一般能够处理各种非预定义的场景但只能生成文本无法自主行动极高能够处理各种非预定义的场景能够自主调用各种外部工具能够自主与环境交互1.4.2 核心概念什么是AI Agent了解了三个概念的本质区别之后我们现在可以给出AI Agent的技术定义了——这个定义综合了学术界比如斯坦福大学的AutoGPT团队、Meta的Llama 3团队和工业界比如OpenAI的GPTs团队、Microsoft的AutoGen团队、LangChain的LangGraph团队的共识AI Agent人工智能代理是一个封装了感知Perception、记忆Memory、决策Reasoning、行动Action、学习Learning五大核心能力的自主系统能够在没有或仅有少量人工干预的情况下感知环境状态、存储和检索历史信息、基于感知到的状态和记忆中的信息进行推理决策、通过调用外部工具或直接与环境交互来执行决策、通过反馈循环来学习和优化自身的决策和行动策略最终完成用户指定的或自主设定的复杂多任务目标。为了让这个定义更直观我们可以用一个**“人类员工”** 的比喻来类比AI Agent的五大核心能力感知Perception相当于人类员工的眼睛、耳朵、鼻子、皮肤——用来感知外部环境的状态比如用户的自然语言输入、工具返回的结果、环境的温度/湿度/光线等记忆Memory相当于人类员工的大脑——用来存储和检索历史信息比如用户的偏好、历史行为、历史任务结果、公司的规章制度、业务知识等决策Reasoning相当于人类员工的逻辑思维能力——用来基于感知到的状态和记忆中的信息进行推理决策比如“用户需要查询明天北京飞上海的特价票我应该先调用携程的机票API然后把返回结果过滤一下只保留凌晨或者深夜的、国航或者东航的、价格最低的3张机票最后生成一个清晰的表格给用户”行动Action相当于人类员工的手、脚、嘴巴——用来通过调用外部工具或直接与环境交互来执行决策比如调用携程的机票API、发送邮件、修改代码、控制机器人移动等学习Learning相当于人类员工的经验积累能力——用来通过反馈循环来学习和优化自身的决策和行动策略比如“刚才调用携程的机票API超时了下次我应该先调用去哪儿的机票API或者把超时时间设置得更长一点刚才用户说我生成的表格不够清晰下次我应该把价格用红色标注出来把时间用蓝色标注出来”1.4.3 核心能力拆解接下来我们将详细拆解AI Agent的五大核心能力——每个能力都包含定义、作用、技术实现方式、示例四个部分。1.4.3.1 感知模块Perception Module定义感知模块是AI Agent与外部环境包括用户、其他Agent、工具、物理世界等进行交互的入口负责收集、预处理、转换外部环境的输入信息使其能够被后续的记忆模块和决策模块处理。作用收集外部环境的输入信息比如用户的自然语言文本输入、语音输入、图像输入、视频输入、工具返回的JSON/XML/HTML格式的结果、物理世界的传感器数据等预处理外部环境的输入信息比如文本的分词、去停用词、拼写检查、语音的转文本ASR、图像的转文本OCR、图像的特征提取、视频的帧提取、JSON/XML/HTML格式的结果的解析、传感器数据的滤波等转换外部环境的输入信息比如将预处理后的文本转换为LLM能够理解的token序列、将预处理后的图像/视频转换为多模态LLM能够理解的embedding向量、将解析后的JSON/XML/HTML格式的结果转换为自然语言文本等技术实现方式文本感知Python的正则表达式re、分词工具jieba、spaCy、NLTK、拼写检查工具pyspellchecker、TextBlob、预训练的文本分类/情感分析模型Hugging Face Transformers语音感知自动语音识别ASR工具OpenAI Whisper、百度语音识别、腾讯云语音识别、语音合成TTS工具虽然语音合成属于行动模块但有时候也会在感知模块的预处理阶段用到比如把用户的语音输入转成文本然后把Agent的文本输出转成语音图像感知光学字符识别OCR工具OpenAI GPT-4o、百度OCR、腾讯云OCR、Tesseract、图像特征提取工具Hugging Face Transformers的CLIP、ResNet、图像分类/目标检测/语义分割工具Hugging Face Transformers的各种预训练模型视频感知视频帧提取工具OpenCV、FFmpeg、视频特征提取工具Hugging Face Transformers的VideoMAE、CLIP、视频分类/动作识别/目标跟踪工具Hugging Face Transformers的各种预训练模型结构化数据感知Python的json、xml、BeautifulSoup库用来解析JSON/XML/HTML格式的结果、pandas库用来处理CSV/Excel格式的结构化数据物理世界感知Python的RPi.GPIO库用来控制树莓派的传感器、Arduino库用来控制Arduino的传感器、各种物联网IoT平台的API用来获取传感器数据示例比如用户输入了一段语音“帮我看看明天北京飞虹桥或者浦东的机票有没有凌晨或者深夜的特价票最好是国航或者东航的”——感知模块的处理流程如下收集通过麦克风收集用户的语音输入预处理/转换使用OpenAI Whisper将语音输入转成自然语言文本进一步转换将自然语言文本转换为LLM能够理解的token序列供后续的记忆模块和决策模块处理再比如用户输入了一张包含手写笔记的图片“帮我把这张图片里的手写笔记整理成一份Markdown格式的会议纪要”——感知模块的处理流程如下收集通过摄像头或文件上传收集用户的图片输入预处理/转换使用OpenAI GPT-4o将图片输入转成自然语言文本包括OCR识别手写笔记和理解笔记的内容结构进一步转换将自然语言文本转换为LLM能够理解的token序列供后续的记忆模块和决策模块处理1.4.3.2 记忆模块Memory Module定义记忆模块是AI Agent的**“大脑存储区”负责存储、检索、更新、删除历史信息**使其能够被后续的决策模块使用——记忆模块是AI Agent区别于纯大模型对话的核心标志之一因为纯大模型对话只有短期的Context Window记忆没有长期的记忆存储能力。作用存储历史信息包括用户的偏好、历史行为、历史任务结果、决策过程、行动结果、工具返回的结果、感知到的环境状态等检索历史信息根据当前的感知状态和决策需求从记忆存储区中检索出相关的历史信息比如“用户上次查询北京飞上海的机票时只接受国航的价格不超过500元时间最好在早上9点前到”更新历史信息根据当前的决策过程、行动结果、用户的反馈等更新记忆存储区中的历史信息比如“用户这次查询北京飞上海的机票时接受了东航的价格是480元时间是早上8点30分到我应该把用户的偏好更新为‘国航或东航的价格不超过500元时间最好在早上9点前到’”删除历史信息根据记忆管理策略删除过时的、无关的历史信息比如“用户去年查询北京飞三亚的机票的历史信息已经过时了应该删除”技术实现方式为了满足不同的记忆需求AI Agent的记忆模块通常采用分层存储架构——分为短期记忆Short-Term Memory, STM、中期记忆Medium-Term Memory, MTM、**长期记忆Long-Term Memory, LTM**三层短期记忆STM定义相当于人类员工的**“工作记忆”用来存储当前对话/任务的上下文信息**存储时间很短一般只有几秒钟到几分钟存储容量有限受限于LLM的Context Window大小作用为当前的决策模块提供最直接、最相关的上下文信息技术实现方式直接存储在LLM的Context Window中不需要额外的存储介质示例比如当前对话中用户先问了“明天北京飞上海的机票价格”然后问了“有没有特价票”——短期记忆中就会存储“明天北京飞上海的机票”这个上下文信息决策模块就可以直接根据这个上下文信息来回答“有没有特价票”的问题中期记忆MTM定义相当于人类员工的**“临时记事本”用来存储最近几次对话/任务的历史信息**存储时间较长一般有几小时到几天存储容量较大一般可以存储几千到几万个token作用为当前的决策模块提供最近的历史信息弥补短期记忆存储容量有限的不足技术实现方式存储在内存缓存比如Redis的String/Hash/List数据结构或者本地文件比如JSON/CSV文件中示例比如用户昨天问了“明天北京飞上海的机票价格”今天又问了“北京飞上海的机票价格有没有变化”——中期记忆中就会存储“昨天查询的北京飞上海的机票价格”这个历史信息决策模块就可以直接根据这个历史信息来回答“有没有变化”的问题长期记忆LTM定义相当于人类员工的**“知识库”“经验库”用来存储长期的、结构化的、可检索的历史信息**存储时间很长一般有几个月到几年甚至永久存储容量几乎无限作用为当前的决策模块提供长期的知识和经验解决短期记忆和中期记忆存储时间和存储容量有限的问题技术实现方式存储在向量数据库Vector DB比如Redis Stack、Pinecone、Milvus、Weaviate、Chroma、关系型数据库比如MySQL、PostgreSQL、图数据库比如Neo4j、Nebula Graph中——其中向量数据库是目前最常用的长期记忆存储介质因为它可以将文本/图像/视频等非结构化数据转换为embedding向量然后通过相似度搜索Similarity Search快速检索出相关的历史信息示例比如用户问了“帮我安排一下去上海出差的行程——包括机票、酒店、会议室预订”——长期记忆中就会存储“用户的出差偏好比如只住五星级酒店、只预订带投影仪的会议室、公司的出差规章制度比如机票价格不能超过1000元、酒店价格不能超过500元/晚、上海的五星级酒店列表、上海的带投影仪的会议室列表”等长期的知识和经验决策模块就可以直接根据这些知识和经验来安排行程记忆管理策略记忆模块的存储容量虽然几乎无限但为了提高检索效率和降低存储成本我们需要制定合理的记忆管理策略——常用的记忆管理策略包括滑动窗口策略Sliding Window只保留最近的N条历史信息超过N条的就删除压缩策略Summarization将大量的历史信息压缩成一个简短的摘要然后存储摘要而不是原始信息——压缩可以通过LLM来实现过滤策略Filtering只保留与当前/未来任务相关的历史信息无关的就删除优先级策略Priority给每条历史信息设置一个优先级优先级高的历史信息会被保留更长时间检索时也会被优先考虑——优先级可以根据历史信息的重要性、相关性、时间等因素来设置遗忘策略Forgetting模拟人类的遗忘过程随着时间的推移历史信息的优先级会逐渐降低最终被删除——遗忘可以通过指数衰减函数来实现1.4.3.3 决策模块Reasoning Module定义决策模块是AI Agent的**“大脑指挥区”负责基于感知到的环境状态和记忆中的信息进行推理决策**制定下一步的行动方案——决策模块是AI Agent区别于传统规则驱动机器人的核心标志之一因为传统规则驱动机器人只能按照预定义的规则树/状态机执行没有自主推理决策的能力。作用理解用户的需求基于感知到的用户输入和记忆中的用户偏好、历史行为等信息准确理解用户的真实需求包括显式需求和隐式需求拆解复杂任务如果用户的需求是一个复杂的多任务目标决策模块需要将其拆解成一系列简单的、可执行的子任务制定行动方案为每个子任务制定具体的行动方案——包括调用哪个工具、传入什么参数、如何处理工具返回的结果等修正错误如果行动方案执行失败比如工具调用超时、工具返回的结果不符合预期、用户的反馈不满意决策模块需要自主检测并修正错误重新制定行动方案判断任务是否完成根据行动方案的执行结果和用户的需求判断任务是否完成——如果完成就生成最终答案如果没有完成就继续执行下一步的行动方案技术实现方式决策模块的技术实现方式经历了从基于规则的决策到基于LLM的零样本/少样本推理再到基于LLM的高级推理思维链CoT、思维树ToT、思维图GoT、反思Reflexion的演变基于规则的决策定义预定义的规则树/状态机严格按照规则来执行决策优点执行速度快可控性强成本低缺点灵活性差只能处理预定义的场景无法处理非预定义的场景添加新功能需要重新设计规则树/状态机工作量极大适用场景简单的、固定的、可预定义的场景比如自动回复“您好请问有什么可以帮您的”的客服机器人示例# 基于规则的决策模块示例defrule_based_reasoning(user_input):if查询机票inuser_input:return{action:call_tool,tool_name:flight_search,tool_params:extract_flight_params(user_input)}elif查询酒店inuser_input:return{action:call_tool,tool_name:hotel_search,tool_params:extract_hotel_params(user_input)}elif预订机票inuser_input:return{action:call_tool,tool_name:flight_booking,tool_params:extract_flight_booking_params(user_input)}elif预订酒店inuser_input:return{action:call_tool,tool_name:hotel_booking,tool_params:extract_hotel_booking_params(user_input)}else:return{action:generate_text,text:对不起我听不懂您的问题请重新输入}基于LLM的零样本/少样本推理定义零样本推理Zero-Shot Reasoning不需要任何示例直接让LLM基于System Prompt进行推理决策少样本推理Few-Shot Reasoning给LLM提供几个示例Few-Shot Examples让LLM基于System Prompt和示例进行推理决策优点灵活性强能够处理各种非预定义的场景添加新功能只需要修改System Prompt和Few-Shot Examples工作量较小缺点执行速度较慢可控性较弱成本较高推理结果可能不符合预期比如幻觉Hallucination适用场景复杂的、非固定的、不可预定义的场景比如代码审查助手、创意写作助手示例# 基于LLM的少样本推理模块示例fromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplate,FewShotChatMessagePromptTemplate# 定义Few-Shot Examplesexamples[{user_input:帮我看看明天北京飞虹桥或者浦东的机票有没有凌晨或者深夜的特价票最好是国航或者东航的,reasoning_result: 我需要拆解这个任务并制定行动方案 1. 理解用户的显式需求查询明天202X-XX-XX从北京首都国际机场/大兴国际机场到上海虹桥国际机场/浦东国际机场的机票筛选条件是 - 时间凌晨00:00-06:00或者深夜22:00-24:00 - 价格特价票价格低于当天平均价格的30% - 航空公司国航CA或者东航MU 2. 理解用户的隐式需求需要生成一个清晰的、易读的机票列表 3. 拆解任务为以下子任务 a. 调用携程机票API查询明天从北京到上海的所有机票 b. 调用工具计算当天所有机票的平均价格 c. 筛选出符合条件的机票 d. 生成一个清晰的、易读的机票列表 4. 制定第一步的行动方案调用携程机票API传入参数 - departure_city: 北京 - arrival_city: 上海 - departure_date: 202X-XX-XX },{user_input:帮我把这个Python脚本的bug修复一下print(Hello, world!,reasoning_result: 我需要拆解这个任务并制定行动方案 1. 理解用户的显式需求修复给定Python脚本的bug 2. 检查Python脚本的语法错误发现最后一个print语句缺少右括号 3. 拆解任务为以下子任务 a. 修复语法错误添加右括号 b. 验证修复后的脚本是否可以正常运行 4. 制定第一步的行动方案修复语法错误生成修复后的脚本 }]# 定义Few-Shot Prompt Templatefew_shot_promptFewShotChatMessagePromptTemplate(example_promptChatPromptTemplate.from_messages([(human,{user_input}),(ai,{reasoning_result})]),examplesexamples,)# 定义完整的Chat Prompt Templatefull_promptChatPromptTemplate.from_messages([(system, 你是一个专业的AI Agent决策模块你的任务是基于用户的输入和记忆中的信息准确理解用户的真实需求包括显式需求和隐式需求

更多文章