
最近这一年很多朋友来找我聊AI应用问得最多的已经不是该用哪个模型怎么调API而是我这个系统到底应该怎么设计Agent编排怎么落地多个服务怎么串起来。大家普遍卡在一个点上AI应用架构设计和传统后端架构设计底层思考方式有明显差异但网上能找到的资料要么是某个框架的API说明要么是PPT级别的概念图真正能指导落地的不多。我这篇想聊的就是怎么用图解的方式把一个AI应用架构从零到一设计出来。图解不是画几张漂亮的架构图给汇报用而是逼着你想清楚数据往哪流、状态存在哪、失败怎么兜底。我尽量用实际项目的经验来讲少一点抽象概念多一点能直接抄作业的思路。这套内容适合正在做AI应用的后端工程师、全栈开发者、技术Leader也适合刚接触AI架构、想建立整体认知的产品经理。看完之后你至少能收获三样东西AI应用架构的核心组成和分层逻辑、画出一张可评审架构图的具体步骤、以及线上问题排查和架构评审的实战经验。1. 为什么AI应用架构需要图解而不是画图1.1 从调API到设计系统中间隔了不止一公里很多人第一次做AI应用是从一个大模型API调用开始的。用户发一句话你拼好prompt调一次接口把结果返回完事。这个阶段确实不需要架构设计一个函数就够了。但当应用开始复杂情况迅速变化。比如一个客服机器人它可能需要判断用户意图、检索企业内部知识库、查询订单系统、生成回复、在用户不满意时转人工。这还只是功能层面的事。再往里走你会发现还需要处理上下文记忆、多轮对话状态、模型超时重试、敏感信息过滤、成本统计、效果评估……这些需求叠加起来代码里会逐渐长出很多隐形模块如果没有提前规划边界几个月后就会变成一坨很难维护的毛线球。我在实际项目里见过最典型的翻车现场团队把一个Agent的所有逻辑塞在同一个函数里工具调用、记忆管理、模型调用、业务逻辑全部耦合在一起。前期demo跑得飞快一到上线就处处碰壁——改一个工具的参数格式会影响整个对话流程一个模型超时拖垮全链路想加一个用户反馈统计发现无从下手。这就是架构设计存在的价值。它不是为了让系统更复杂而是为了让系统的复杂度被结构化地管理起来。而图解是表达这种结构化最直观的手段。1.2 一张好架构图必须能回答三个问题很多人对画架构图的理解是把一堆技术名词用框和箭头连起来越全越漂亮越好。我一开始也这么干过画出来的图信息密度很高但评审会上被同事一问就露馅你这张图里数据从哪儿进来的、经过哪些环节、失败时怎么办根本说不清楚。后来我总结出一个原则一张架构图如果回答不了以下三个问题它就是无效的数据向哪个方向流动用户请求、工具返回结果、知识检索结果、模型生成内容各自从哪来、到哪去状态存储在哪里多轮对话的上下文、Agent的执行状态、异步任务的进度是放在内存、Redis还是数据库失败路径如何兜底模型接口超时、工具调用报错、检索结果为空、用户输入无法识别分别走什么逻辑这三个问题恰好对应架构设计中的数据流、状态管理和错误处理。图解的作用就是强制你在画框和箭头的时候必须把这些内容标出来。你画不出来的部分通常就是设计没想清楚的部分。1.3 图解也是团队沟通的对齐工具还有一个容易被忽略的价值图解是跨角色沟通时最高效的语言。AI应用项目里后端、算法、产品、测试、业务方的知识背景差异很大。你跟产品经理说编排层引入了一个状态机他一脸茫然但你给他看一张图请求从用户端进来经过意图识别、知识检索、Agent编排最后调用工单系统他能很快理解系统在干什么。我在多个项目里都用过一个笨但有效的方法画完架构图之后找非技术背景的同事让他照着图把流程讲一遍。如果他讲得八九不离十说明这张图的表达是合格的如果他卡住或者问这里到底是干嘛的那就说明这张图有歧义需要重新组织。所以这篇文章讲的图解AI应用架构设计本质上是一种思考方法和沟通工具。接下来我会拆开讲一张完整的AI应用架构图里有哪些标准零件以及每个零件背后的设计逻辑。2. 拆解一张AI应用架构图的标准零件2.1 从外到内三层视图的骨架我画AI应用架构图习惯先搭一个三层骨架用户侧、能力侧、模型侧。这不是什么标准规范算是我自己多年实践沉淀下来的套路好处是逻辑边界清晰新手也容易上手。用户侧负责接收用户输入和呈现结果。包括前端应用、IM平台接入比如企业微信、飞书、钉钉机器人、API对外接口等。能力侧这是AI应用的核心逻辑区。包括Agent编排层、工具服务、知识检索、记忆管理、业务系统对接等所有智能行为都发生在这里。模型侧包括大模型网关、模型路由、多模型池对话模型、向量模型、推理模型、多模态模型、以及模型相关的缓存和配额管理。下面是我在项目里常用的一个文本示意写法你可以照着这个思路在白板上画[用户端] - [统一API网关] - [AI编排层会话管理、意图识别、Agent调度] - 下挂组件 - 记忆服务Redis 向量库 - 知识检索RAG文档入库 - 切片 - Embedding - 向量检索 - 工具服务业务API封装、权限校验、调用审计 - [模型网关] - [多模型池大模型 / 小模型 / 向量模型] - [可观测与反馈回路Trace、Token统计、人工评价]这个骨架非常重要它把智能和系统分开了。模型侧只负责生成能力侧负责决策和行动用户侧只负责交互。很多AI应用架构混乱根源就是把这三层混在一起——模型调用逻辑写在业务代码里Agent调度逻辑掺在API层工具调用散落各处。2.2 每一层的关键组件和选型逻辑光有骨架不够还得知道每一层里面放什么、为什么放。我做了一张表基本涵盖了一个中等复杂度AI应用需要的核心组件所属层次组件核心职责常见实现/选型思路用户侧前端应用/IM接入收集输入、渲染输出、承载交互状态Web/小程序/飞书机器人等能力侧统一API网关鉴权、限流、协议转换、日志埋点自研中间件或云API网关能力侧会话管理维护多轮对话状态、会话生命周期Redis 数据库持久化能力侧Agent编排层拆解任务、选择工具、控制流程、状态流转LangGraph / Dify工作流 / 自研状态机能力侧工具服务封装业务能力查单、下单、搜索做权限校验微服务API / 内部RPC封装能力侧RAG知识检索文档切片、向量化、召回、重排向量库如Milvus、pgvector 重排模型能力侧记忆服务短期对话上下文 长期用户画像/事实记忆Redis短期 向量库长期模型侧模型网关统一多模型接入、路由、限流、缓存、成本统计LiteLLM、One-API或云厂商网关模型侧多模型池按任务复杂度选择合适模型轻量分类模型 主对话模型 向量模型全局观测与反馈Trace、日志、Token统计、效果评估Langfuse、自研埋点、人工评价回流画架构图的时候不必每个组件都画上去但至少应该能说清楚如果没有这个组件系统的哪些能力会缺失。比如会话管理如果缺了多轮对话就失去上下文关联如果缺了模型网关每次换模型或增加供应商都要改业务代码。2.3 三个容易被忽略的隐形层除了上面表格里的功能组件我还会额外强调三个经常被画架构图的人漏掉的层。它们不是某个具体服务但直接决定系统能不能长期稳定运行。第一个是可观测性层。AI应用相比传统应用的排查难度高很多因为模型的输出是概率性的同样输入可能得到不同结果。所以从第一天起就要埋好Trace每次请求的完整链路、每一轮模型调用的输入输出、token消耗、耗时。没有这一层线上出了问题你只能靠猜。第二个是安全与权限层。AI应用的工具调用意味着模型能操作真实业务系统权限控制必须前置。具体来说工具调用要有白名单、敏感操作要有二次确认、外部知识库的访问要有数据权限隔离。这块我在后面的实操部分会详细讲。第三个是反馈回流层。AI应用的效果需要持续迭代。我在架构图里会专门画一条反馈回路用户评价、人工修正、badcase收集回流到一个评估集用来做提示词优化、模型微调选型甚至反哺RAG的知识更新。没有这个回路系统上线三个月后体验只会原地踏步。这三个隐形层画上去之后架构图才真正具备了可运营的属性而不只是一张静态的功能拓扑。3. 图解时最容易翻车的四个设计点3.1 模型网关不是可选配件而是必需品很多刚接触AI架构的同学不理解为什么要单独画出一个模型网关层直接调用大模型API不就行了我先讲一个实际场景。早期的项目里我们直接在某家大模型厂商的控制台创建API Key代码里写死调用地址。后来因为价格和效果的原因想接入另一家模型做对比。结果发现所有调用代码都散落在各个服务里每个服务都要改base_url、模型名称、鉴权方式、超时处理改了两天还没改完。更麻烦的是不同模型的返回格式还有细微差别解析逻辑也得跟着调。这就是模型网关存在的核心意义把模型供应商的差异和业务代码隔离开来。业务层只需要说我要一个文本生成模型输入这些内容输出格式这样网关负责路由到具体模型、处理重试、统一格式、统计token、做缓存和限流。在架构图上模型网关通常放在编排层和模型池之间。设计的时候建议至少考虑这些能力统一接口协议业务侧只对接一种API格式多模型路由按任务类型、成本预算、延迟要求自动选模型缓存策略相同或相似请求直接命中缓存降低成本降级切换主模型不可用时自动切到备选模型Token计量按用户、按功能、按部门核算成本画图的时候很多人会漏掉降级切换这条线。但AI应用的模型服务稳定性并不总是可控尤其是高峰期限流、超时经常发生。没有降级设计一个模型抖动会直接影响全部用户。我一般在架构图里用一条虚线把模型网关和备选模型池连起来标注自动降级评审的时候这一条特别加分。3.2 上下文与记忆管理最容易被低估的复杂度AI应用里有一个很经典的问题上下文窗口越来越大是不是直接把所有聊天记录都塞给模型就行了答案当然是不行。我给你打个比方一个人工作的时候把过去十年的所有邮件、文档、聊天记录全部摊在办公桌上他还能高效找到今天上午要用的那份文件吗模型也一样。上下文塞得太多不仅token成本暴涨、响应变慢模型反而会被无关信息干扰生成质量下降。我在架构图上会把记忆拆成两层来画短期记忆当前会话内的近期对话内容存储在多轮会话状态里。一般会做截断或摘要压缩比如只保留最近N轮超出部分用摘要关键事实来代替。长期记忆跨会话的用户偏好、历史结论、业务事实。比如用户上次咨询了退款政策这类信息在下次对话时应该被主动召回。短期记忆的实现方案通常是Redis存会话状态滑动窗口截断长期记忆则依赖向量库做语义召回。画图的时候我会在能力侧单独画一个记忆服务的框拉两条线分别连到Redis和向量库并明确标注短期和长期同时还要画一条到模型侧的虚线表示写入上下文的方向。经验之谈这里特别容易翻车的是记忆写入和检索的时机。不是你记得存了就行还要考虑什么时候把记忆注入给模型。有些团队把所有历史记忆每次都注入效果反而差。比较稳妥的做法是根据当前用户意图做一次节奏匹配只召回和当前任务相关的记忆片段。这个逻辑在架构图上要专门画一个记忆召回策略的框否则开发时会变成谁有空谁写一段最后没人说得清楚记忆到底是怎么用起来的。3.3 Agent并发回答AI Agent怎么扛并发的灵魂拷问热搜词里有AI agent 怎么扛并发这个问题几乎每个做Agent应用的团队都会碰到但很多人把思路走偏了。第一反应是把Agent的运行实例多部署几个实际上这只是其中一个环节更关键的是Agent是有状态的不能简单当成无状态服务去扩容。举个我踩过的例子一个Agent在工作流里要依次做理解意图-检索知识-调用内部系统-生成回复全程可能耗时十几秒甚至更久。如果用户在这期间又发了新消息或者同一条消息被重试Agent很容易重复执行调用内部系统这一步造成重复下单或者重复扣款。所以我在架构图里设计Agent并发时一定会区分两类组件无状态的调度器负责接收请求、启动任务、分发到工作节点。因为它不保存状态可以随意水平扩容。有状态的工作流实例负责具体执行。它的状态必须外部化保存在Redis或数据库里不能只存在内存中。画完这两类框之后再补上几个关键配套任务队列把请求削峰填谷、分布式锁防止同一个会话的任务被并发重复执行、幂等设计工具调用必须支持幂等重复提交不产生重复结果。这里有一个很反直觉的点**Agent系统真正扛并发的方式不是让每个Agent跑得更快而是让系统能够排队、能够暂停、能够恢复、能够从失败中点继续。**异步化是关键中的关键。传统后端服务追求请求-响应要快Agent应用则经常是要接受请求-可能几分钟后才响应的现实在这期间用户可能已经离开了。架构图上如果全是同步箭头基本可以断定这个设计扛不住真实流量。我有一次在一个客服Agent项目里把同步调用改成异步任务Webhook回调的模式并发能力提升了一个数量级用户体验反而没有下降——因为AI生成本身就有可感知的延迟用户并不指望秒回但系统稳定性大幅提升。3.4 成本与延迟架构图上要标注钱AI应用的另一个特点是成本不随流量线性固定而是和prompt长度、上下文大小、调用次数强相关。很多团队上线前不看成本上线后收到账单才傻眼。所以我画架构图有个习惯每一处模型调用的边上都标注一个成本估算。比如一个典型的RAG问答流程要经历用户query向量化一次小模型调用、向量检索不计费、构造prompt含检索结果历史上下文、大模型生成主成本。假设每次大模型输入约4000 token、输出约500 token单次调用成本就能算出来输入费用4000 / 1000 * 输入单价输出费用500 / 1000 * 输出单价再加上向量化的小模型费用大约是大模型费用的零头按日请求1万次估算一个月成本大概多少画完这张图顺手就能算出来。这个习惯帮我劝退了好几个什么功能都想用大模型的需求。哪些环节用轻量模型比如意图识别用BERT级别的模型就够了哪些环节必须用顶级大模型比如复杂推理和生成在架构图上就可以明确分流。延迟同理。检索知识库、工具调用内部系统、模型生成每一段都可能耗时几百毫秒到几秒。我会在架构图上标注每个环节的大致耗时算出一个最坏情况端到端延迟。如果超过用户的忍耐阈值就需要提前引入流式输出、并行工具调用、或者用缓存优化。4. 实操案例从零画一张客服工单Agent架构图4.1 先画场景不画技术定义用户旅程和边界很多人在画图之前的第一个错误是直接从技术组件开始。比如上来就画Redis、画Kafka、画模型网关。我推荐一个相反的路径——先画出业务场景的用户旅程把边界界定清楚再从旅程推导出技术组件。下面我用一个常见的客服工单Agent作为例子完整走一遍这个过程。这个Agent的业务目标用户通过网页或微信渠道提问Agent自动理解问题、检索知识库、查询订单信息能解决的直接给出方案不能解决的尝试引导用户自助操作如果用户情绪激动或问题复杂自动创建工单并转人工。先画用户旅程用户提交问题文本/图片/链接Agent判断问题类型退款/物流/商品咨询/其他根据问题类型检索相关知识或调用对应工具生成回复如果问题未解决进入人工排队人工处理完将结论写回工单并同步给用户画完旅程边界就清楚了哪些事Agent做哪些事人工做哪些知识从哪来哪些系统需要对接。这个时候再动笔画技术架构就有据可依了。4.2 按数据流逐层添加组件而不是一次画满画架构图我最忌讳一次画满。我的做法是分四步慢慢填每一步只加一个层面的东西。第一步先画模型侧和能力侧的最高层。明确这个Agent会用到一个主对话模型负责生成回复和调用工具、一个意图分类模型轻量级负责第一步分类、一个向量模型负责知识检索的嵌入计算。模型网关把它们统一管起来。第二步加数据流用户消息进来之后先经过统一API网关做鉴权限流然后进到编排层。编排层第一步调意图分类模型第二步根据意图查Redis里的会话状态第三步触发RAG管线去向量库检索第四步根据结果决定是直接回复还是调用工具。第三步加工具层工单系统、订单查询、物流查询。每个工具外面包一层工具服务负责参数校验、权限判断和调用审计。这一层是防止模型乱调系统接口的关键关卡。第四步加反馈回路和运维层每次会话结束保存用户满意度评价错误样本和人工修正的结果入库到评估集所有请求的Trace打到观测平台。画完这四步一张完整的架构图基本成型。下面是个简化的示意结构[用户渠道Web/微信] ↓ [统一API网关鉴权、限流、日志] ↓ [Agent编排层] ├── 意图识别轻量模型 ├── 会话状态管理Redis ├── RAG检索向量库 重排 ├── 工具调用订单查询/工单系统/物流查询 └── 回复生成主对话模型经模型网关 ↓ [模型网关 → 多模型池] ↓ [观测平台 / 评估集 / 人工反馈]4.3 标注关键决策点和失败路径而不是只画成功路径架构图在评审时最容易暴露的问题就是只有happy path——所有箭头都指向成功没有一条如果失败怎么办的路径。所以我画完主流程之后一定会专门花时间标注决策点和失败分支。还是用客服工单Agent举例我会画这样几条带分支的路径意图识别的置信度低于0.6不强行自动处理直接转人工。知识检索结果为空生成兜底话术引导用户留下联系方式。工具调用失败比如订单系统超时不要直接告诉用户系统错误先走一次重试重试仍失败则记录问题并转人工。用户连续三次表达不满触发升级策略强制转人工并附带完整上下文摘要。主模型连不上模型网关自动切换备选模型回复内容加上因系统升级当前回复可能存在延迟之类的提示。每条失败分支都要在架构图上标出来并指定对应代码层的处理逻辑。这一步做完你的架构图才是一份能指导开发的施工图而不是一张自嗨的功能示意图。我见过很多团队花了很多精力让AI在正常情况下表现出色但真实线上流量永远充满了异常输入、超时、上游抖动、模型限流。失败路径的设计质量才是拉开架构师和普通开发差距的地方。5. 常见问题与排查技巧实录5.1 线上AI应用答非所问的排查思路先分享一个所有AI应用团队都会遇到的问题线上用户反馈AI回答得很奇怪怎么排查传统后端的排查思路是看报错、看日志。但AI应用答非所问往往不是报错而是逻辑不对。按照我的经验排查要沿着链路逐层拆第一层查输入是否被正确接收和处理。用户的消息到编排层之前有没有被截断、编码错误、多轮拼接错乱很多时候多轮对话出问题是历史消息拼接时把角色信息搞错了把用户说的话放在了系统角色里导致模型理解混乱。第二层查检索质量。RAG场景里最常见的问题是召回不准确。这需要看两件事知识库的切片是否合理切片太大噪声多切片太小上下文不够以及query向量化和知识向量化是否在同一语义空间有些团队换过向量模型但没重新入库。第三层查prompt是否被正确组装。很多框架会自动把工具描述、系统提示词、上下文拼在一起你要对照实际发给模型的请求体看prompt结构和预期是否一致。我在一些项目里发现过工具的JSON Schema描述过长把系统提示词挤出了有效上下文窗口。第四层查模型本身的能力边界。如果前三层都没问题那就是这个任务确实超越了当前模型的能力。这时候要考虑换更强的模型或者把任务拆细、给模型加更多中间步骤。这四项排查每一层都依赖前面说的Trace埋点。如果你架构图里没有可观测性层排查基本上靠猜效率极低。5.2 架构评审时总被问住的五个问题我把这几年帮团队评审AI应用架构时发现大家最常被问住的问题整理成了一个速查表。每次你说我这个架构没问题之前先用这张表自检一遍问题为什么会被问合格答案的要点多轮对话状态存在哪里会话过期策略是什么状态管理是AI应用最容易混乱的地方明确Redis/数据库的存储结构设置TTL和持久化策略工具调用的权限边界怎么划分模型能不能调用越权工具安全问题AI绝对不能绕过权限工具白名单 参数校验 权限上下文从用户侧下发模型不可用时的降级方案是什么客户对稳定性的要求非常高网关层自动切换备选模型核心链路有兜底话术每次请求的平均token成本是多少怎么优化老板关心钱你不可能不算按链路拆解成本用缓存/模型分级降低开销badcase如何回流到系统优化迭代的闭环在哪架构要可持续演进而不是一次性交付人工标记 评估集 定期回归和prompt迭代这张表我在每个项目评审前都会发给团队做预检。答不上来没关系但一定得知道这是必须补的作业。AI应用架构评审如果只聊用了什么技术框架而不聊上面这些评审基本是走个过场。5.3 工具调用与数据安全规避风险的经验记录最后聊一个我特别想强调的点工具调用带来的安全风险。AI应用和普通应用最大的区别之一是模型会自主决定调用什么工具、传入什么参数。这意味着如果你不做好控制一个不当操作可能被模型自动化地执行。我经历过的案例有次一个Agent在测试环境里用户问可以帮我查一下别人的订单吗模型确实调用了订单查询工具而且入参里带了一个未经授权的订单号。如果不是工具服务里做了权限校验这就是一次严重的数据泄露。所以工具层的安全设计绝不是可有可无。落地上我建议至少做到四件事第一工具白名单和参数Schema。Agent只能调用你显式注册的工具每个工具的入参必须符合预定义的JSON Schema从源头上约束模型的操作范围。第二数据权限下钻。用户的权限信息要从用户系统传入到工具层而不是让模型任意填写用户ID。工具实现时必须校验当前用户是否能操作这个数据对象。第三敏感操作二次确认。涉及创建订单、修改状态、发送消息、删除数据等高风险动作设计成先确认后执行Agent先给出方案用户确认后再真正调工具。第四操作审计日志。每次工具调用记录调用方、参数、结果、耗时。这不仅是安全审计的需要也是排查问题、分析badcase的数据来源。这四个措施画在架构图上其实就是工具服务外层的权限校验和审计两个框。加上它们你的AI应用架构才算真正能上线。我在实际项目里的体会是AI架构设计更像是在做约束下的决策——模型能力强但不可控系统要求稳但需要智能成本要低但效果要好。图解的作用是把这些约束和决策变成所有人都能看得见的画面。画好一张架构图往往比讨论十轮技术选型更能推动项目落地。如果这篇文章能帮你少走几个弯路那我很高兴。下次画图的时候记得在图上留几条失败路径的虚线。