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

如何构建可扩展的AI Agent架构

如何构建可扩展的AI Agent架构一、引言1.1 钩子从GPT-4o到OpenAI SoraAgent的“隐形翅膀”已振翅你是否曾在刷到OpenAI Sora震撼的一分钟视频生成时好奇它“凭空想象”出连贯人物、场景逻辑和光影效果的底层真的只是一个巨大的Transformer在端到端输出吗或者当你用Perplexity Pro、AutoGPT这类工具时有没有想过——为什么有的Agent可以稳定完成“查明天猫精灵X10 Pro的续航测试数据对比华为Sound X 4生成一份带饼图的购物决策报告并发送到我的邮箱”这种复杂多步任务而有的Agent只会在第三步查不到某个技术参数时就彻底卡死答案其实藏在一个经常被大众媒体忽略但在AI工程界被讨论得热火朝天的关键词里可扩展的AI Agent架构。根据Gartner 2024年2月发布的《AI技术成熟度曲线报告》“企业级AI Agent”已经从“概念验证期”进入了“期望膨胀期的峰值阶段”——预计到2027年全球60%以上的大型企业将部署至少一个生产级别的企业级AI Agent带来的直接业务流程自动化收益将超过1.2万亿美元。而这一切的前提就是这些Agent不能是“一次性玩具”不能只能在演示视频里流畅运行——它们必须是可扩展的可以适应业务规则的变化、可以处理数据量指数级增长的需求、可以同时服务成千上万的用户、可以灵活组合新的能力插件。这篇文章我将带你从概念定义、历史发展、数学模型、架构设计、实战代码、最佳实践、未来趋势七个维度系统地拆解可扩展AI Agent架构的每一个环节。即使你是刚接触AI工程的新手只要有Python基础和对大语言模型LLM的基本认知也能跟着这篇文章亲手搭建一个具备“工具调用、记忆管理、意图识别、多Agent协作”四大核心能力的、可扩展的企业级知识库问答Agent原型。1.2 定义问题/阐述背景为什么“可扩展”是生产级AI Agent的核心痛点在正式讲架构之前我们得先明确一个问题什么是AI Agent这个问题在不同的文献里有不同的定义但结合目前工程界的共识我更倾向于斯坦福大学HAIHuman-Centered AI团队在2023年发表的《Generative Agents: Interactive Simulacra of Human Behavior》一文中给出的简化版定义AI Agent大语言模型LLM/大视觉语言模型VLM规划模块Planning记忆模块Memory行动模块Action/工具调用它的核心特征是自主性无需人工全程干预、适应性根据环境/反馈调整策略和目标导向性始终围绕用户的原始任务目标行动。1.2.1 从“单体玩具Agent”到“生产级Agent”有哪些“坎”在2023年初AutoGPT、BabyAGI这类开源“玩具级”Agent刚火起来的时候我身边很多朋友都尝试过用它们写代码、做调研——结果大部分人都是“三分钟热度”要么是Agent卡在某个工具调用的死循环里比如查了一遍又一遍同样的维基百科页面要么是处理一个简单的任务就花了好几美元的API费用要么是稍微改一下任务要求比如把“查北京明天的天气”改成“查北京、上海、广州未来三天的PM2.5绘制折线图并用企业微信通知市场部同事”整个Agent的逻辑就彻底乱套了。这些“坎”本质上都是单体玩具Agent架构的不可扩展性导致的能力不可扩展单体Agent的能力是“硬编码”在提示词Prompt里的——你要想让它学会用新的工具比如企业内部的ERP API就得修改几百上千字的System Prompt而且修改后的提示词很容易产生“提示词遗忘”Prompt Forgetting的问题性能不可扩展单体Agent通常是单线程运行的而且所有的计算、记忆、规划都集中在同一个进程/容器里——当同时接入100个以上的用户请求时要么是响应时间从几秒飙升到几分钟要么是直接因为内存溢出而崩溃可靠性不可扩展单体Agent没有“容错机制”——如果某个工具调用失败了或者LLM生成了错误的推理结果整个任务链就会彻底断掉而且很难复现和调试安全不可扩展单体Agent的工具调用权限是“全有或全无”的——你要么给它所有工具的调用权限包括能删除企业数据库里数据的权限要么不给它任何权限而且单体Agent通常没有“内容过滤”和“审计追踪”的机制很容易被用户用来生成有害内容或者泄露企业的敏感数据。1.2.2 生产级AI Agent的“可扩展”到底指什么在工程界“可扩展”Scalability通常有三个维度的定义水平可扩展Horizontal Scalability也叫“向外扩展”指的是通过增加更多的服务器/容器/节点来提升系统的性能——比如当同时接入的用户请求从100个增加到10000个时我们可以快速启动9900个额外的Agent实例来分担负载垂直可扩展Vertical Scalability也叫“向上扩展”指的是通过提升单个服务器/容器/节点的硬件配置比如增加CPU核心数、内存容量、GPU显存来提升系统的性能——比如当我们需要让Agent处理更复杂的多模态任务比如分析高清医学影像并生成报告时我们可以给Agent实例分配更多的GPU显存功能可扩展Functional Scalability指的是通过添加新的模块、插件、工具或Agent来快速扩展系统的功能——比如当我们需要让Agent学会用企业内部的CRM API时我们只需要编写一个CRM插件然后把它注册到系统里不需要修改系统的核心代码。而对于生产级AI Agent来说功能可扩展是基础水平可扩展是核心垂直可扩展是补充。这篇文章我们也会重点围绕这三个维度来展开讨论。1.3 亮明观点/文章目标本文将带你从零搭建可扩展的企业级知识库问答Agent好了铺垫了这么多现在该亮明这篇文章的核心观点和目标了。1.3.1 核心观点我认为构建可扩展的AI Agent架构本质上就是要把“LLM的黑盒能力”和“软件工程的白盒原则”结合起来——我们要把LLM从“整个系统的核心控制器”降级为“核心推理引擎”然后用软件工程里的“模块化设计”、“微服务架构”、“消息队列”、“状态机”、“缓存”、“审计日志”等成熟技术来解决LLM的“不可控性”、“不可扩展性”、“不可靠性”和“不安全性”问题。1.3.2 文章目标读完这篇文章你将能够理解可扩展AI Agent架构的核心概念和组成要素掌握可扩展AI Agent架构的设计原则和设计模式亲手搭建一个具备以下四大核心能力的可扩展企业级知识库问答Agent原型工具调用能力可以调用网络搜索工具、PDF解析工具、SQL查询工具、绘图工具等外部工具记忆管理能力可以区分“短期记忆”、“长期记忆”和“工作记忆”并利用向量数据库实现长期记忆的高效检索意图识别能力可以准确识别用户的原始意图比如是“单轮问答”、“多轮对话”还是“复杂任务链执行”多Agent协作能力可以分解复杂任务交给不同的“专业Agent”比如“网络搜索Agent”、“SQL查询Agent”、“报告生成Agent”协作完成了解可扩展AI Agent架构的最佳实践、常见陷阱和未来趋势。1.3.3 文章内容预告为了实现上述目标这篇文章的内容安排如下第二章基础知识/背景铺垫先带你回顾一下可扩展AI Agent架构的历史发展然后解释一些必须知道的关键术语比如向量数据库、LangChain/LlamaIndex框架、状态机、消息队列等最后对比一下目前主流的几个Agent框架LangChain Agents、LlamaIndex Agents、AutoGen、CrewAI、MetaGPT第三章核心内容/实战演练——从零搭建可扩展的企业级知识库问答Agent这是文章的主体部分我们会分八个步骤来搭建Agent原型步骤一环境准备与工具选型步骤二系统功能设计步骤三系统架构设计重点讲解模块化设计、微服务架构、消息队列的应用步骤四系统核心模块设计与实现重点讲解记忆模块、规划模块、行动模块、意图识别模块、多Agent协作模块的实现步骤五系统接口设计步骤六系统核心实现源代码步骤七系统测试与部署步骤八系统功能可扩展演示添加企业内部CRM插件第四章进阶探讨/最佳实践我们会讨论可扩展AI Agent架构的常见陷阱与避坑指南、性能优化/成本考量、安全考量、最佳实践总结第五章结论我们会回顾文章的核心要点展望可扩展AI Agent架构的未来发展趋势并给读者留下一些行动号召和进一步学习的资源链接。二、基础知识/背景铺垫2.1 核心概念定义构建可扩展AI Agent架构的“积木块”在正式讲架构之前我们得先把所有的“积木块”都认清楚——这些积木块包括LLM/VLM、向量数据库、Agent框架、状态机、消息队列、缓存、审计日志等。2.1.1 大语言模型LLM/大视觉语言模型VLM核心概念大语言模型Large Language Model, LLM是一种基于Transformer架构的预训练语言模型它通过在海量的文本数据上进行自监督学习学会了预测下一个token的能力——这种能力让它可以完成文本生成、文本摘要、文本翻译、代码生成、推理等多种任务。大视觉语言模型Vision-Language Model, VLM是LLM的延伸它不仅可以处理文本数据还可以处理图像、视频等多模态数据——比如GPT-4o、Claude 3 Opus、Gemini 1.5 Pro都是目前主流的VLM。在可扩展AI Agent架构中的作用在我们的架构里LLM/VLM是核心推理引擎——它的主要作用是理解用户的原始任务意图根据用户的意图和当前的状态生成下一步的行动计划利用工具调用的结果和记忆模块的内容生成最终的响应在多Agent协作中进行任务分解和结果整合。重要特性在选择LLM/VLM作为Agent的推理引擎时我们需要重点关注以下几个特性上下文窗口大小上下文窗口大小决定了LLM/VLM可以一次性处理的token数量——比如GPT-4o的上下文窗口大小是128k约等于10万字Claude 3 Opus的上下文窗口大小是200k约等于15万字Gemini 1.5 Pro的上下文窗口大小是1M约等于75万字。上下文窗口越大LLM/VLM可以处理的历史对话和工具调用结果就越多但同时API费用也会越高推理速度推理速度决定了Agent的响应时间——对于企业级应用来说通常要求Agent的响应时间在3秒以内工具调用能力工具调用能力是LLM/VLM作为Agent推理引擎的核心——目前主流的LLM/VLM比如GPT-4o、Claude 3 Opus、Gemini 1.5 Pro、Qwen2.5 72B Instruct都原生支持工具调用推理准确性推理准确性决定了Agent的任务完成率——对于复杂的推理任务比如数学计算、逻辑推理我们通常会选择推理能力更强的LLM/VLM比如GPT-4o、Claude 3 Opus、Qwen2.5 72B Instruct成本成本决定了Agent的运营成本——对于企业级应用来说通常会选择成本和性能平衡的LLM/VLM比如Qwen2.5 72B Instruct、GPT-4o Mini、Claude 3 Haiku。2.1.2 向量数据库Vector Database核心概念向量数据库Vector Database是一种专门用来存储和检索向量Embedding的数据库——它的核心功能是近似最近邻搜索Approximate Nearest Neighbor Search, ANN给定一个查询向量向量数据库可以快速找到数据库中与它最相似的前N个向量。为什么需要向量数据库在可扩展AI Agent架构里我们需要存储大量的“长期记忆”——比如企业的知识库文档、历史对话记录、工具调用结果等。如果我们把这些长期记忆直接存储在LLM/VLM的上下文窗口里会面临两个问题上下文窗口限制目前主流的LLM/VLM的上下文窗口大小最多只有1M约等于75万字如果我们需要存储的长期记忆超过了这个限制就无法直接放进上下文窗口里提示词遗忘即使我们把长期记忆放进了上下文窗口里LLM/VLM也会因为“提示词遗忘”Prompt Forgetting的问题无法准确回忆起上下文窗口里的早期内容。而向量数据库正好可以解决这两个问题突破上下文窗口限制我们可以把所有的长期记忆都转换成向量存储在向量数据库里——这样无论我们需要存储多少长期记忆都不会受到上下文窗口大小的限制避免提示词遗忘当我们需要用到长期记忆时我们可以先把用户的查询转换成向量然后用向量数据库进行ANN搜索找到与查询最相关的前N个长期记忆最后只把这N个长期记忆放进LLM/VLM的上下文窗口里——这样既避免了提示词遗忘又节省了API费用。在可扩展AI Agent架构中的作用在我们的架构里向量数据库是长期记忆存储与检索的核心组件——它的主要作用是存储企业的知识库文档向量存储历史对话记录向量存储工具调用结果向量根据用户的查询快速检索相关的长期记忆。目前主流的向量数据库对比目前主流的向量数据库有很多比如Pinecone、Weaviate、Chroma、Milvus、Qdrant、FAISS等。为了帮助你选择适合自己的向量数据库我做了一个简单的对比表格向量数据库开源/闭源部署方式支持的索引类型支持的距离度量易用性性能成本适用场景Pinecone闭源云托管HNSW, IVF余弦相似度, 欧氏距离, 点积非常高非常高较高按存储和查询次数收费生产级企业应用无需自己运维Weaviate开源云托管/本地部署/容器化HNSW, IVF, Flat余弦相似度, 欧氏距离, 点积, 曼哈顿距离高高云托管按存储和查询次数收费本地部署免费生产级企业应用需要自己定制功能Chroma开源本地部署/容器化HNSW, IVF, Flat余弦相似度, 欧氏距离, 点积非常高中等免费开发测试小型应用Milvus开源云托管/本地部署/容器化HNSW, IVF, Flat, Annoy, DiskANN余弦相似度, 欧氏距离, 点积, 曼哈顿距离, 汉明距离中等非常高云托管按存储和查询次数收费本地部署免费超大规模生产级应用支持数十亿级别的向量Qdrant开源云托管/本地部署/容器化HNSW, IVF, Flat余弦相似度, 欧氏距离, 点积高非常高云托管按存储和查询次数收费本地部署免费生产级企业应用对性能和成本要求都很高FAISS开源本地部署仅提供Python/C库HNSW, IVF, Flat, PQ, SQ余弦相似度, 欧氏距离, 点积中等非常高免费开发测试需要自己封装API我们的选型在这篇文章的实战演练中我们会选择Qdrant作为向量数据库——因为它是开源的部署起来非常方便可以用Docker快速启动性能非常高而且易用性也很好同时支持云托管和本地部署非常适合从开发测试过渡到生产级应用。2.1.3 嵌入模型Embedding Model核心概念嵌入模型Embedding Model是一种专门用来把非结构化数据比如文本、图像、音频转换成固定维度的向量Embedding的模型——对于文本数据来说嵌入模型会把文本转换成一个数值向量向量的每个维度都代表了文本的某种语义特征两个文本的向量距离越近说明它们的语义越相似。在可扩展AI Agent架构中的作用在我们的架构里嵌入模型是连接非结构化数据和向量数据库的桥梁——它的主要作用是把企业的知识库文档转换成向量把用户的查询转换成向量把历史对话记录转换成向量把工具调用结果转换成向量。目前主流的文本嵌入模型对比目前主流的文本嵌入模型有很多比如OpenAI的text-embedding-3-small、text-embedding-3-largeAnthropic的Claude 3 EmbeddingsGoogle的text-embedding-004阿里云的Qwen2.5-Embedding系列智谱AI的Embedding-3系列等。为了帮助你选择适合自己的文本嵌入模型我做了一个简单的对比表格数据来源于MTEB榜单截至2024年10月嵌入模型开源/闭源维度大小MTEB平均得分最大输入token数推理速度tokens/s成本美元/1M tokens适用场景OpenAI text-embedding-3-small闭源153662.38191~1000000.02生产级企业应用对成本和性能要求都很高OpenAI text-embedding-3-large闭源3072可压缩到25664.68191~500000.13生产级企业应用对语义相似度要求很高Qwen2.5-Embedding-7B-Instruct开源358465.28192~10000单张A100免费生产级企业应用需要自己部署模型Qwen2.5-Embedding-2B-Instruct开源153662.88192~30000单张A100免费开发测试小型应用需要自己部署模型Anthropic Claude 3 Haiku Embeddings闭源102461.7200000~1500000.025生产级企业应用需要处理长文本Google text-embedding-004闭源76861.22048~2000000.0001免费额度/0.01超出额度生产级企业应用对成本要求极低我们的选型在这篇文章的实战演练中我们会选择OpenAI的text-embedding-3-small作为嵌入模型——因为它是闭源的使用起来非常方便只需要调用API即可性能非常高成本也很低同时MTEB平均得分也不错非常适合快速开发和测试。当然如果你不想用OpenAI的API也可以选择阿里云的Qwen2.5-Embedding-2B-Instruct自己部署模型。2.1.4 Agent框架核心概念Agent框架是一种专门用来简化AI Agent开发的软件框架——它通常已经封装好了LLM/VLM的调用接口、向量数据库的调用接口、记忆管理模块、规划模块、行动模块、工具调用模块等核心组件开发者只需要编写少量的代码就可以快速搭建一个AI Agent。为什么需要Agent框架如果我们不用Agent框架从零开始搭建一个AI Agent需要做很多重复的工作——比如封装LLM/VLM的调用接口处理API密钥、请求重试、错误处理等封装向量数据库的调用接口处理向量存储、ANN搜索等实现记忆管理模块区分短期记忆、长期记忆、工作记忆等实现规划模块生成下一步的行动计划、处理任务分解等实现行动模块处理工具调用、工具调用结果解析等实现工具调用模块封装外部工具的调用接口等。而Agent框架正好可以帮我们省去这些重复的工作——我们只需要关注自己的业务逻辑即可。目前主流的Agent框架对比目前主流的Agent框架有很多比如LangChain Agents、LlamaIndex Agents、AutoGen、CrewAI、MetaGPT、AgentBench等。为了帮助你选择适合自己的Agent框架我做了一个简单的对比表格Agent框架核心定位主要特点优势劣势适用场景LangChain Agents通用型Agent框架模块化设计支持多种LLM/VLM、向量数据库、工具社区非常活跃文档非常完善功能最全面社区最活跃文档最完善学习资源最多代码比较臃肿性能比较差不可控性比较高容易陷入死循环快速开发和测试通用型AI AgentLlamaIndex Agents原名GPT Index数据增强型Agent框架专注于数据增强支持多种数据源比如PDF、Word、Excel、CSV、数据库、API等支持多种索引类型比如Vector Store Index、Summary Index、Tree Index、Keyword Table Index等数据增强能力最强支持多种数据源和索引类型性能比较好通用型能力不如LangChain学习资源不如LangChain多知识库问答Agent数据增强型AI AgentAutoGen多Agent协作框架专注于多Agent协作支持多种Agent角色比如User Proxy Agent、Assistant Agent、Tool Agent等支持Agent之间的自动对话和任务分解多Agent协作能力最强支持多种Agent角色和对话模式可扩展性比较好通用型能力不如LangChain数据增强能力不如LlamaIndex学习曲线比较陡多Agent协作型AI Agent复杂任务链执行AgentCrewAI多Agent协作框架专注于“角色扮演”的多Agent协作支持给Agent分配角色、目标、背景故事、工具等支持Agent之间的自动任务分配和结果整合角色扮演能力最强多Agent协作的可定制性比较好代码比较简洁通用型能力不如LangChain数据增强能力不如LlamaIndex社区不如AutoGen活跃多Agent协作型AI Agent内容生成Agent比如小说生成、剧本生成MetaGPT软件开发生成型Agent框架专注于软件开发生成支持给Agent分配软件开发生命周期中的不同角色比如Product Manager、Architect、Engineer、QA Engineer等支持自动生成软件需求文档、架构设计文档、代码、测试用例等软件开发生成能力最强支持完整的软件开发生命周期适用场景非常有限学习曲线比较陡软件开发生成Agent原型开发Agent我们的选型在这篇文章的实战演练中我们会不完全依赖任何一个Agent框架——而是会参考LangChain、LlamaIndex、AutoGen这三个框架的设计思想自己从零搭建一个轻量级的、可扩展的Agent核心架构。为什么要这么做呢因为不完全依赖Agent框架可以让我们更好地理解Agent的底层原理自己从零搭建的Agent核心架构更轻量、性能更好、不可控性更低自己从零搭建的Agent核心架构更容易定制和扩展——我们可以根据自己的业务需求灵活添加新的模块或修改现有的模块。当然在搭建的过程中我们会使用一些Agent框架里的成熟组件——比如我们会使用LangChain的LangChain Core库来封装LLM/VLM的调用接口和工具调用模块使用LangChain的LangChain Community库来封装Qdrant的调用接口。2.1.5 状态机Finite State Machine, FSM核心概念状态机Finite State Machine, FSM是一种数学模型它由有限个状态、有限个输入事件、状态转移函数和初始状态组成——状态机在任何时刻都处于其中的一个状态当接收到一个输入事件时状态机会根据状态转移函数从当前状态转移到另一个状态同时状态机可能会在状态转移时执行一些动作。为什么需要状态机在可扩展AI Agent架构里Agent的行为是状态驱动的——比如当Agent刚启动时它处于空闲状态当Agent接收到用户的查询时它会从空闲状态转移到意图识别状态当Agent完成意图识别后如果识别到的意图是“单轮问答”它会从意图识别状态转移到知识检索状态如果识别到的意图是“复杂任务链执行”它会从意图识别状态转移到任务分解状态当Agent完成知识检索后它会从知识检索状态转移到响应生成状态当Agent完成响应生成后它会从响应生成状态转移回空闲状态如果在任何状态下发生了错误Agent会从当前状态转移到错误处理状态当Agent完成错误处理后它会从错误处理状态转移回空闲状态或者转移到之前的状态重试。如果我们不用状态机来管理Agent的状态而是用一堆if-else语句来管理代码会变得非常臃肿、难以维护和扩展——而且很容易产生“状态爆炸”的问题。而状态机正好可以解决这个问题——它可以让Agent的状态管理变得非常清晰、简洁、易于维护和扩展。在可扩展AI Agent架构中的作用在我们的架构里状态机是Agent行为的核心控制器——它的主要作用是管理Agent的所有状态根据输入事件和状态转移函数控制Agent的状态转移在状态转移时执行相应的动作处理Agent的错误和异常。目前主流的Python状态机库对比目前主流的Python状态机库有很多比如Transitions、PyTransition、python-statemachine、Automata等。为了帮助你选择适合自己的Python状态机库我做了一个简单的对比表格Python状态机库主要特点优势劣势适用场景Transitions轻量级API简洁支持多种状态机类型比如Moore状态机、Mealy状态机、Hierarchical State Machine、Concurrent State Machine等支持可视化状态机轻量级API简洁支持多种状态机类型支持可视化社区非常活跃文档非常完善性能比较一般但对于AI Agent来说足够用了通用型状态机AI Agent的状态管理PyTransition基于Transitions的扩展库增加了一些新的功能比如异步支持、状态持久化等继承了Transitions的所有优势增加了异步支持和状态持久化社区不如Transitions活跃异步AI Agent的状态管理需要状态持久化的AI Agentpython-statemachine面向对象的状态机库API简洁支持多种状态机类型支持可视化状态机面向对象的设计API简洁支持可视化社区不如Transitions活跃面向对象的应用AI Agent的状态管理Automata用于构建和分析自动机和形式语言的库功能非常强大功能非常强大支持构建和分析多种自动机和形式语言API比较复杂学习曲线比较陡不适合用于AI Agent的状态管理学术研究形式语言分析我们的选型在这篇文章的实战演练中我们会选择Transitions作为状态机库——因为它是轻量级的API简洁支持多种状态机类型支持可视化状态机社区非常活跃文档非常完善对于AI Agent的状态管理来说足够用了。当然如果你需要异步支持或状态持久化也可以选择PyTransition。2.1.6 消息队列Message Queue核心概念消息队列Message Queue是一种用于在分布式系统中传递消息的中间件——它的核心功能是解耦和异步处理生产者Producer可以把消息发送到消息队列里然后继续执行其他任务不需要等待消费者Consumer处理完消息消费者可以从消息队列里获取消息然后处理消息不需要知道生产者是谁。为什么需要消息队列在可扩展AI Agent架构里我们通常会采用微服务架构——把Agent的不同模块比如意图识别模块、记忆管理模块、规划模块、行动模块、多Agent协作模块拆分成不同的微服务部署在不同的服务器/容器/节点上。如果我们不用消息队列来传递微服务之间的消息而是用同步的HTTP请求来传递会面临两个问题耦合度太高如果某个微服务的API发生了变化所有调用它的其他微服务都需要修改代码性能太差如果某个微服务的响应时间比较长所有调用它的其他微服务都会被阻塞导致整个系统的响应时间飙升。而消息队列正好可以解决这两个问题解耦微服务之间只需要知道消息的格式不需要知道对方的API——如果某个微服务的API发生了变化只要消息的格式不变其他微服务就不需要修改代码异步处理生产者可以把消息发送到消息队列里然后继续执行其他任务不需要等待消费者处理完消息——这样可以大大提升系统的性能和吞吐量。在可扩展AI Agent架构中的作用在我们的架构里消息队列是微服务之间通信的核心组件——它的主要作用是解耦不同的微服务实现微服务之间的异步处理实现任务的削峰填谷——当同时接入的用户请求突然增加时消息队列可以把这些请求缓存起来然后让消费者慢慢处理避免系统崩溃实现任务的可靠投递——消息队列通常支持消息的持久化和确认机制确保消息不会丢失而且只会被处理一次。目前主流的消息队列对比目前主流的消息队列有很多比如RabbitMQ、Kafka、RocketMQ、Redis Stream等。为了帮助你选择适合自己的消息队列我做了一个简单的对比表格消息队列核心定位主要特点优势劣势适用场景RabbitMQ通用型消息队列基于AMQP协议支持多种消息模型比如点对点模型、发布订阅模型、路由模型、主题模型等支持消息的持久化和确认机制支持可视化管理界面轻量级API简洁支持多种消息模型支持可视化管理界面可靠性非常高吞吐量比较低每秒几万条消息不适合处理超大规模的实时数据流通用型应用微服务之间的通信任务的异步处理需要高可靠性的应用Kafka分布式事件流平台基于发布订阅模型支持消息的持久化和分区存储支持高吞吐量每秒几百万条甚至几千万条消息支持低延迟毫秒级吞吐量非常高低延迟可扩展性非常好适合处理超大规模的实时数据流不支持多种消息模型API比较复杂学习曲线比较陡不适合处理需要高可靠性的任务比如金融交易超大规模的实时数据流处理日志收集实时监控事件溯源RocketMQ分布式消息中间件基于发布订阅模型支持消息的持久化和分区存储支持高吞吐量每秒几百万条消息支持低延迟毫秒级支持多种消息类型比如普通消息、顺序消息、事务消息、延迟消息等支持可视化管理界面吞吐量非常高低延迟可扩展性非常好支持多种消息类型支持可视化管理界面可靠性非常高社区不如RabbitMQ和Kafka活跃文档不如RabbitMQ和Kafka完善金融交易电商订单微服务之间的通信需要高可靠性和多种消息类型的应用Redis Stream基于Redis的消息队列基于发布订阅模型支持消息的持久化和分区存储支持高吞吐量每秒几十万条消息支持低延迟毫秒级支持消息的确认机制和回溯机制轻量级API简洁低延迟高吞吐量支持消息的回溯机制不需要单独部署如果已经部署了Redis不支持多种消息模型可靠性不如RabbitMQ和RocketMQ不适合处理超大规模的实时数据流轻量级应用微服务之间的通信任务的异步处理需要消息回溯机制的应用我们的选型在这篇文章的实战演练中我们会选择RabbitMQ作为消息队列——因为它是轻量级的API简洁支持多种消息模型支持可视化管理界面可靠性非常高不需要处理超大规模的实时数据流对于可扩展AI Agent架构来说足够用了。当然如果你需要处理超大规模的实时数据流也可以选择Kafka如果你需要多种消息类型和高可靠性也可以选择RocketMQ如果你已经部署了Redis也可以选择Redis Stream。2.1.7 缓存Cache核心概念缓存Cache是一种用于存储热点数据的高速存储层——它的核心功能是减少对底层存储系统比如数据库、向量数据库、API的访问次数从而大大提升系统的性能和吞吐量降低系统的运营成本。为什么需要缓存在可扩展AI Agent架构里我们通常会访问很多底层存储系统——比如访问向量数据库来检索相关的长期记忆访问SQL数据库来查询企业的业务数据访问外部API来获取网络搜索结果、天气数据等访问LLM/VLM的API来生成推理结果、响应等。如果我们不用缓存来存储这些访问的热点数据会面临两个问题性能太差每次访问底层存储系统都需要一定的时间比如访问外部API可能需要几秒钟访问LLM/VLM的API可能需要几百毫秒甚至几秒钟导致整个系统的响应时间飙升成本太高每次访问LLM/VLM的API和外部API都需要一定的费用如果我们访问的次数太多会导致系统的运营成本飙升。而缓存正好可以解决这两个问题提升性能我们可以把热点数据存储在缓存里——下次访问同样的数据时我们只需要从缓存里获取即可不需要访问底层存储系统从而大大提升系统的性能和吞吐量降低成本我们可以把LLM/VLM的API和外部API的访问结果存储在缓存里——下次访问同样的请求时我们只需要从缓存里获取即可不需要调用LLM/VLM的API和外部API从而大大降低系统的运营成本。在可扩展AI Agent架构中的作用在我们的架构里缓存是提升系统性能和降低系统运营成本的核心组件——它的主要作用是存储向量数据库的检索结果存储SQL数据库的查询结果存储外部API的访问结果存储LLM/VLM的API的调用结果存储用户的会话信息。目前主流的缓存对比目前主流的缓存有很多比如Redis、Memcached、Hazelcast等。为了帮助你选择适合自己的缓存我做了一个简单的对比表格缓存核心定位主要特点优势劣势适用场景Redis分布式内存数据库/缓存基于键值对存储支持多种数据结构比如字符串、哈希表、列表、集合、有序集合、位图、HyperLogLog、地理空间索引、流等支持持久化RDB和AOF支持主从复制支持哨兵模式支持集群模式支持Lua脚本支持事务功能最全面支持多种数据结构支持持久化支持高可用性支持可扩展性支持Lua脚本和事务社区非常活跃文档非常完善内存成本比较高通用型缓存分布式缓存会话存储消息队列排行榜计数器实时监控Memcached通用型分布式内存缓存基于键值对存储只支持字符串数据结构不支持持久化不支持主从复制不支持哨兵模式不支持集群模式需要客户端分片轻量级API简洁性能非常高内存成本比较低功能非常有限只支持字符串数据结构不支持持久化不支持高可用性和可扩展性轻量级应用通用型缓存需要高性能和低内存成本的应用Hazelcast分布式内存计算平台/缓存基于键值对存储支持多种数据结构比如字符串、哈希表、列表、集合、有序集合、分布式锁、分布式队列、分布式主题等支持持久化支持主从复制支持集群模式支持分布式计算MapReduce、Stream API等功能比较全面支持多种数据结构支持持久化支持高可用性和可扩展性支持分布式计算社区不如Redis活跃文档不如Redis完善性能不如Redis高分布式缓存分布式计算需要高可用性和可扩展性的应用我们的选型在这篇文章的实战演练中我们会选择Redis作为缓存——因为它是功能最全面的支持多种数据结构支持持久化支持高可用性和可扩展性支持Lua脚本和事务社区非常活跃文档非常完善对于可扩展AI Agent架构来说非常合适。当然如果你需要高性能和低内存成本而且只需要存储字符串数据结构也可以选择Memcached。2.1.8 审计日志Audit Log核心概念审计日志Audit Log是一种用于记录系统中所有重要操作和事件的日志——它的核心功能是追溯和监控我们可以通过审计日志追溯系统中所有重要操作和事件的发生时间、发生地点、操作者、操作内容、操作结果等我们也可以通过审计日志监控系统的运行状态及时发现和处理系统的异常和安全事件。为什么需要审计日志在生产级AI Agent架构里审计日志是必不可少的——因为合规要求很多行业比如金融、医疗、电商等都有严格的合规要求要求企业必须记录系统中所有重要操作和事件的审计日志问题排查当系统出现问题时我们可以通过审计日志快速定位问题的原因安全监控我们可以通过审计日志监控系统的安全状态及时发现和处理系统的安全事件比如恶意用户的攻击、敏感数据的泄露等性能优化我们可以通过审计日志分析系统的性能瓶颈从而进行针对性的性能优化成本分析我们可以通过审计日志分析系统的运营成本比如LLM/VLM的API费用、外部API的费用等从而进行针对性的成本优化。在可扩展AI Agent架构中的作用在我们的架构里审计日志是合规、问题排查、安全监控、性能优化、成本分析的核心组件——它的主要作用是记录用户的所有查询和请求记录Agent的所有状态转移记录Agent的所有工具调用记录Agent的所有LLM/VLM的API调用记录Agent的所有响应生成记录系统的所有异常和安全事件。我们的选型在这篇文章的实战演练中我们会选择Python的logging库配合**ELK StackElasticsearch、Logstash、Kibana**来实现审计日志——因为Python的logging库是Python标准库的一部分使用起来非常方便ELK Stack是目前主流的日志收集、存储、分析和可视化平台功能非常强大社区非常活跃文档非常完善。当然如果你不想自己部署ELK Stack也可以选择云服务厂商提供的日志服务比如阿里云的日志服务SLS、AWS的CloudWatch Logs、Google的Cloud Logging等。2.2 相关工具/技术概览可扩展AI Agent架构的“工具箱”在上一节里我们已经介绍了可扩展AI Agent架构的所有“积木块”——现在我们来把这些“积木块”组合成一个“工具箱”并简要介绍一下如何使用这个“工具箱”。2.2.1 可扩展AI Agent架构的“工具箱”组成我们的“工具箱

相关文章:

如何构建可扩展的AI Agent架构

如何构建可扩展的AI Agent架构 一、引言 1.1 钩子:从GPT-4o到OpenAI Sora,Agent的“隐形翅膀”已振翅 你是否曾在刷到OpenAI Sora震撼的一分钟视频生成时,好奇它“凭空想象”出连贯人物、场景逻辑和光影效果的底层,真的只是一个巨…...

OpenClaw学习助手:百川2-13B量化模型自动整理课程笔记

OpenClaw学习助手:百川2-13B量化模型自动整理课程笔记 1. 为什么需要自动化笔记整理 作为一名经常需要消化大量课程资料的技术从业者,我长期被两个问题困扰:一是阅读PDF/PPT时手动摘录效率低下,二是分散的笔记难以形成知识体系。…...

大数据开发学习Day8

一、Linux / Shell 任务:批量删除当前目录下所有 .tmp 结尾的临时文件 find . -name "*.tmp" | xargs rm -f # find . -name "*.tmp" 生成当前目录下所有.tmp文件的列表批量删除文件 # 查找并删除所有.log文件 find . -name "*.log&quo…...

[Linux][虚拟串口]x一个特殊的字节露

简介 langchain专门用于构建LLM大语言模型,其中提供了大量的prompt模板,和组件,通过chain(链)的方式将流程连接起来,操作简单,开发便捷。 环境配置 安装langchain框架 pip install langchain langchain-community 其中…...

C/C++头文件防护:#pragma once原理与实践

1. #pragma once 的基本概念与作用在C/C项目开发中,头文件包含管理是个看似简单却暗藏玄机的问题。我第一次意识到它的重要性是在参与一个跨平台嵌入式项目时,某个模块因为头文件重复包含导致的结构体重定义错误,让整个团队排查了整整两天。而…...

阿联酋科技创新研究院:单模型实现多视觉任务统一解决突破

这项由阿联酋科技创新研究院(Technology Innovation Institute,TII)Falcon Vision团队主导的研究发表于2026年3月,论文编号为arXiv:2603.27365v1。有兴趣深入了解的读者可以通过该编号在相关学术平台查询完整论文内容。传统的计算…...

Apache APISIX 3.16.0 版本发布,亮点多多

Apache APISIX 3.16.0 版本正式发布,带来新功能、修复及体验优化。重大变更提升安全性,新功能涵盖速率限制、可观测性等多方面,还有多项缺陷修复。重大变更提升安全此次版本有两项重大变更。openid - connect 插件的 ssl_verify 默认值变为 t…...

LAYONTHEGROUND沦

一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...

四座小水库的“智能体检”:广州创科大亚湾安全监测项目纪实

在惠州鱿鱼湾、龙尾山、格木洞、畲禾坑四座水库,如同镶嵌在群山之间的明珠,守护着下游的城镇与工业区。它们大多建于上世纪六七十年代,服役已超半个世纪。2023年冬,一场以“除险加固智慧监测”为核心的维修加固工程正式拉开帷幕。…...

OpenClaw语音控制方案:千问3.5-35B-A3B-FP8对接Whisper实现声控自动化

OpenClaw语音控制方案:千问3.5-35B-A3B-FP8对接Whisper实现声控自动化 1. 为什么需要语音控制自动化? 上周整理实验室数据时,我双手正忙着操作显微镜,突然需要查一份文献——那种"腾不出手却必须立刻操作电脑"的窘境&…...

面向太空应用的钙钛矿光伏:稳定性测试指南

随着全球商业航天产业的快速发展,低地球轨道(LEO)卫星星座(如 Starlink、千帆)正推动航天从“高可靠、小规模”向“低成本、大规模”转型。这一变化对能源系统提出了新的要求:更高比功率、更低成本以及更轻…...

Blynk物联网开发终极指南:如何5分钟内构建云端控制应用

Blynk物联网开发终极指南:如何5分钟内构建云端控制应用 【免费下载链接】blynk-library Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc. 项目地址: https://gitcode.com/gh_mirrors/bl/blynk-librar…...

2026年程序员必备:高质量源码分享平台大盘点

在程序员的日常开发工作中,源码是极为重要的学习与开发资源。优质的源码不仅能助力我们快速掌握新技术,还能为项目开发提供宝贵的参考。2026年,众多源码分享平台不断涌现与更新,下面就为大家详细盘点一些高质量的源码分享平台&…...

告别试用期焦虑:JetBrains IDE重置工具全面指南

告别试用期焦虑:JetBrains IDE重置工具全面指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期结束而烦恼吗?当你正沉浸在代码创作的高峰期,突然弹出…...

Qt表格入门(优化篇)成

1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image,docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...

大模型工程师的黄金赛道:揭秘高薪岗位的核心技能与必备经验!

本文深入剖析了大模型领域内的五大核心岗位方向,包括基座模型训练、大模型微调、大模型开发、大模型推理部署以及多模态大模型。文章详细阐述了每个方向的工作内容、核心竞争力、所需经验及市场现状,并推荐了相关的开源教程。此外,还强调了在…...

实验二四叉树图像模糊项目教程

四叉树图像模糊项目教程 📖 项目简介 这是一个使用四叉树算法实现图像模糊处理的C++项目。程序实现了两种图像模糊方法: 高斯模糊:传统的图像平滑方法 四叉树平均模糊:基于四叉树分割的自适应模糊方法 两种方法可以对比使用,让你直观感受不同算法的效果差异。 🎯 核心…...

广州团建策划公司引进健球团建,以三方竞技激发团队协同创新!

广州市搏翱企业管理咨询股份有限公司近日成功举办健球主题团队建设活动,将这一独特的三方竞技运动引入企业培训领域。作为深耕团队发展多年的专业机构,搏翱广州团建策划公司持续探索创新体验形式,帮助企业构建更灵活高效的协同机制&#xff0…...

AI 时代:祛魅、适应与重新定义畔

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...

深度解码:华为IPD流程管理体系L1-L5最佳实践与数字化转型架构全景(PPT)

在当今高度竞争的商业环境中,企业的核心竞争力不再仅仅取决于单一的技术突破或资本优势,而是取决于其业务流程的成熟度与组织运作的系统性。华为作为全球领先的科技企业,其背后支撑庞大业务帝国高效运转的正是其历经多年打磨的IPD&#xff08…...

一文讲清,精益六西格玛咨询是什么意思?做精益六西格玛咨询对企业有什么用?

精益六西格玛咨询到底是什么?简单来说,精益六西格玛咨询是一种将精益生产的效率与六西格玛的质量管理相结合的系统化服务,旨在帮助企业消除浪费并减少变异。通过引入精益六西格玛咨询,企业能够利用数据驱动的方法解决复杂的管理难…...

LeetCode 3655. 区间乘法查询后的异或2 解题报告(Python)

LeetCode 3655. 区间乘法查询后的异或2 解题报告(Python) 前言 本题是 LeetCode 第 3655 号问题,属于一道结合了根号分治、差分思想与模运算的综合应用题。题目要求在一个数组上执行大量区间“跳跃式”乘法操作,并最终返回所有元素…...

第04章-开源鸿蒙的架构概览

第4章 开源鸿蒙的架构概览本章目标:从整体到局部,逐层剖析开源鸿蒙的系统架构,理解各层的职责与协作关系。4.1 整体架构 开源鸿蒙的系统架构采用分层设计,自上而下可以分为四层: ┌─────────────────…...

Claude Code 拥有 50 多个命令。大多数开发者只用到 5 个

说句扎心的话:Claude Code 拥有超过 50 个指令,但绝大多数开发者只会在那儿干巴巴地敲其中的 3 到 5 个。剩下的指令就那么冷冰冰地躺在 /help 文档里吃灰。它们原本能让你的生产力原地起飞 10 倍,前提是——你得知道它们的存在。然而&#x…...

炸裂!昔日神话Sora惨遭抛弃,AI泡沫真的要碎了吗?

当初奥特曼(Sam Altman)在 2024 年底放出 Sora 的时候,全网简直像开了锅一样。 那时候,谁要是敢说半个“不”字,分分钟被那群科技狂热分子喷成筛子。 大家看着那堆其实并不怎么真实、甚至透着股子“恐怖谷”味道的 20 …...

500行代码还原儿时经典 Python Pygame 制作带 AI 决策的飞行棋

1. 前言 飞行棋(Aeroplane Chess)是许多人童年的回忆。今天,我们将使用 Python 的 Pygame 库,从零开始构建一个完整的飞行棋游戏。 这不仅仅是一个简单的绘图程序,它包含了完整的游戏逻辑状态机、一维路径坐标映射&am…...

linux个人心得24 (mysql③,AI排版尝试)

一、MySQL 数据导入&#xff08;mysql 客户端&#xff09;表格操作场景核心命令关键说明基本导入方式 1&#xff08;重定向&#xff09;mysql -u [用户名] -p[密码] [目标数据库名] < [文件名.sql]最常用&#xff0c;直接执行.sql 文件&#xff0c;目标库需预先创建基本导入…...

重构教育评价体系:OCRAutoScore智能阅卷系统的技术革新与实践路径

重构教育评价体系&#xff1a;OCRAutoScore智能阅卷系统的技术革新与实践路径 【免费下载链接】OCRAutoScore OCR自动化阅卷项目 项目地址: https://gitcode.com/gh_mirrors/oc/OCRAutoScore 教育信息化浪潮下&#xff0c;传统人工阅卷模式正面临效率瓶颈与质量挑战。OC…...

《数论探微:进阶版》(Arithmetic Tales: Advanced Edition)暗

一、核心问题及解决方案&#xff08;按踩坑频率排序&#xff09; 问题 1&#xff1a;误删他人持有锁——最基础也最易犯的漏洞 成因&#xff1a;释放锁时未做身份校验&#xff0c;直接执行 DEL 命令删除键。典型场景&#xff1a;服务 A 持有锁后&#xff0c;业务逻辑耗时超过锁…...

进程通信与网络协议

一、进程间通信1、管道&#xff1a;管道是基于文件描述符的半双工的通信方式&#xff0c;数据单向流动&#xff0c;数据读取后会从管道中删除。A. 无名管道 ​ i. 仅存在于内核空间中&#xff0c;无文件系统入口 ​ i. 仅支持亲缘间进程通信 ​ i. 进程退出后管道会自动释放 ​…...