资讯动态

AI应用架构设计图解:分层、编排与实战排查指南

发布时间:2026/10/9 21:00:18 来源:尧图企业网站定制
1. 先聊清楚AI应用架构到底是什么为什么非要图解我这些年看过太多AI项目的翻车现场最典型的不是模型选错而是架构没想清楚。很多人拿到一个需求第一反应是找个大模型API接上去然后写几个prompt就以为完事了。结果一到线上延迟爆炸、上下文越聊越乱、工具调用老是失败、成本月底一算吓一跳。这时候大家才意识到AI应用和传统软件的根本区别在于传统软件的逻辑是确定性的AI应用的核心链路是概率性的你不能用写CRUD的思路去设计一个会自由发挥的系统。所谓图解AI应用架构设计其实就是把一条AI请求从进入到返回的完整链路画出来看清楚每一层在干什么、谁在决定行为、数据怎么流动、失败在哪里发生。这张图画清楚之后技术选型、团队分工、成本控制、性能优化全都变得有据可依。我见过不少团队拿一张白板就开始画框框画完觉得挺合理一上线就发现少画了上下文管理这一层——这是最常见的坑。这篇文章就是围绕这张图展开的适合正在做AI应用落地的工程师、技术负责人也适合刚入行想建立整体认知的同学。我会从架构分层讲起逐步拆到Agent编排、RAG、记忆、工具调用、可观测性再给一套可以直接照着画的实操流程最后把我们踩过的问题和排查套路完整列出来。你不需要有深厚的算法背景但最好写过一点业务代码因为我会反复强调工程而不是炼丹。2. 先拆整体设计AI应用架构的分层逻辑与核心矛盾2.1 从一条用户消息说起请求在系统里走过了哪些层我一个很朴素的习惯接到新项目先不聊技术栈而是拿用户的一句话在纸上走一遍。比如用户输入帮我查一下上个月的销售数据分析下哪个区域下滑最明显。这条消息如果只接一个Chat接口模型顶多给你一段泛泛的文本因为它不知道你的数据在哪、表结构是什么、也没权限去查。所以AI应用架构的本质工作是把模型会说话的能力接上业务系统会做事的能力。具体拆成层来看我一般分成六层接入层负责接收用户输入做格式校验、鉴权、限流把不同渠道Web、App、IM的消息统一成内部格式。编排层Orchestration这是AI应用和传统应用差异最大的一层负责决定这一轮该怎么响应用户是直接回答、还是要调工具、还是要多轮追问澄清。上下文管理层管理对话历史、窗口压缩、长期记忆读写这一层做不好模型再强也是金鱼脑。能力层Tools/插件模型需要执行的真实操作查数据库、调内部API、发通知、操作文件等。模型层LLM本身的选择与部署涉及模型规格、推理服务、缓存策略。可观测与治理层日志、追踪、评估、安全过滤、成本核算。你把这六层画出来之后团队分工立刻就清楚了前端组做接入层后端组做编排和上下文算法组管模型层SRE管可观测。大家聊需求的时候不再是一句调一下AI接口而是能精准指出问题出在编排层还是上下文管理层。2.2 为什么画图比写文档更关键AI应用架构是典型的易画难懂系统光用文字描述很容易各说各话。我团队内部有个约定架构评审必须画图每个人讲自己的模块时必须指着图说因为AI系统的调用关系是网状的不是线性的。举个例子一个简单的Agent应用请求可能走用户→编排器→模型→工具→模型→编排器→用户中间还有一轮工具结果要不要写回历史的决策。如果不用图把数据流标出来你很难发现这个循环里其实藏着一个死循环风险如果工具返回结果太大塞回历史里再喂给模型下一轮上下文可能直接超限。这种问题画在图上一眼就能看到上下文管理层和能力层之间的那条线太粗了——传输的数据量超了。另一个原因是AI项目的干系人很杂产品经理、后端、算法、测试、运维各有各的视角。一张分层的架构图能让大家在同一个坐标系里说话PM看的是接入层到编排层的体验链路算法看的是模型层的推理质量SRE看的是每一层的延迟和错误率。没有这张图评审会就会变成你说你的、我说我的。2.3 核心矛盾可控性与能力边界之间的取舍AI应用架构设计里有一对贯穿始终的矛盾——你希望模型聪明一点以便处理复杂任务但又希望它别乱来以保证业务安全。这个矛盾直接决定架构形态。如果追求绝对可控你可以把所有逻辑都用代码写死模型只负责最末尾的文本生成这本质上退化成传统程序加了个翻译层稳定但笨拙。如果追求极致能力你可以给模型一堆工具让它自主规划效果上限高但行为不可预测可能需要为一次误操作付出极大代价。我的工作习惯是画架构图时把所有决策点标出来区分代码决策和模型决策。代码决策比如什么情况下需要鉴权什么时候触发重试这些必须在代码里写死模型决策比如用户这句话意图是什么工具调用的参数怎么填这些才交给模型。架构设计最重要的判断就是这条分界线划在哪里。划得太保守AI的能力被浪费划得太开放系统的可靠性没有保障。3. 核心细节拆解每一层到底在设计什么3.1 接入层别小看这几行代码接入层在架构图里看起来最简单但坑最多。我见过一个项目第一版把用户输入直接拼接进prompt结果某些特殊字符把整个流程搞崩。接入层的核心职责有两块输入规范化和安全闸门。输入规范化指的是把不同渠道的文本统一处理比如微信里的换行符、语音转写文本里的标点混乱、网页端富文本带过来的多余HTML标签。这些不处理模型对输入的理解会打折扣尤其是英文标点混在中文里的时候分词效果会明显变差。安全闸门则更关键虽然内容安全不应该被过度设计但基本的敏感词过滤、注入防护prompt injection的初筛、以及用户级限流还是必须在接入层做掉。这里有一个容易被忽视的点有些过滤应该发生在模型之前有些发生在模型之后两者不能混在一层。前置过滤负责输入合规后置过滤负责输出合规中间隔着整个AI管线漏掉任何一头都会出事。接入层的另一个任务是协议统一。团队内部我推荐用一套标准化的消息结构不要直接传原始字符串。至少包含消息ID用于全链路追踪、用户ID、会话ID、时间戳、消息类型文本/图片/工具结果、业务元数据。这套结构在后面做日志追踪和问题排查时价值怎么强调都不过分。3.2 编排层AI应用的心脏也是最容易画糊涂的地方编排层是整个架构里我花时间最多的部分因为它没有标准答案完全取决于你的应用到底要做什么。我习惯把编排理解为决策循环模型产出一个决策系统执行、观察结果再交给模型做下一轮决策。这个循环跑得顺不顺直接决定AI应用聪明还是智障。按照决策的复杂度我总结了三种典型的编排模式直通模式Pipe适用于一问一答的简单场景模型收到输入直接输出回答中间不调任何工具。适合FAQ机器人、文本润色、翻译。架构最简单延迟最低。工具调用模式Single-Step Tool模型先判断要不要调工具如果调则生成结构化调用参数系统执行后把结果塞回去最后模型基于结果生成回答。适合查询类、信息聚合类场景比如查天气、查订单。Agent循环模式Multi-Step Agent模型可以连续多轮自主决策每一步都可能调用工具、观察结果、调整下一步计划。适合复杂任务拆解比如分析财报并生成摘要这种需要查多个数据源的场景。模式选型直接决定架构的复杂度和成本我给团队的建议是能用直通模式就不要上工具调用能用单步工具就不要上Agent循环。很多产品其实是看起来需要Agent实际拆开只需要三步固定工具调用硬上Agent只会让延迟翻倍、错误率翻倍。编排层的实现上我强烈建议把编排逻辑和业务逻辑分开。编排逻辑比如上一步工具失败了怎么办什么时候应该结束循环应该写成代码不要全塞进prompt让模型自己发挥。业务逻辑比如怎么用SQL查销售数据放在工具层实现。这样出了问题你能分级排查不用对着长prompt猜模型为什么会疯。3.3 上下文管理层金鱼脑的救星也是成本黑洞评估一个AI应用体验好不好用户最直观的感受就是它还记不记得我之前说过的话。上下文管理就是一个主题在有限的窗口里怎么保留最有价值的信息。这里又分两个子问题短期对话历史和长期用户记忆。短期对话历史的处理业界惯用手段包括截断Truncation保留最近N轮简单粗暴但有效适合闲聊场景。摘要Summarization把早期对话压成摘要保留关键事实。适合长对话、深度咨询场景。混合策略前几轮原文保留再往前的历史用摘要。工程实现稍复杂但体验最好。我在生产环境里常用的是混合策略最近5轮原文全留10轮以内的对话让模型做增量摘要更早的摘要再合并成更高层的摘要。这个分层摘要结构像一个金字塔越往上信息密度越高、细节越少。实现起来需要额外调用模型做摘要成本会增加但换来的是长对话体验不掉线。长期用户记忆则是把用户画像、偏好、历史结论存下来跨会话复用。比较好用的模式是记忆读写分离用户说话时先从记忆库检索相关片段写入上下文对话结束后再异步提炼新的记忆入库。记忆检索本身也可以靠一个小型向量索引来完成这个后面讲RAG时一起说。上下文管理还有一个隐藏的坑工具结果要不要写进历史。我的建议是工具结果是否需要回填、回填多少要根据工具返回的数据大小决定有些查询结果几十KB全塞进上下文会让模型眼花缭乱下一步决策质量反而下降。常见做法是只保留工具结果的结构化摘要比如查询到123行数据按区域聚合后如下...原文存在日志里方便排查但不进上下文。3.4 能力层Tools模型的手和脚接口设计决定天花板如果说模型是AI应用的大脑工具层就是它的手和脚。工具设计得好不好直接决定Agent能干什么、不能干什么、干了之后会不会出乱子。我给工具设计定了几条铁律单一职责一个工具只做一件事不要搞全能工具。比如查询销售数据和生成销售报告必须分开模型才能精准调用。参数要严格定义每个工具参数的名称、类型、取值范围、必选可选都要定义清楚。模型填参数时会基于你的描述判断描述越清晰填得越准。返回要结构化工具返回结果最好是JSON等结构化格式不要返回一段散文让模型再读一遍纯文本。结构化结果既方便模型抽取关键信息也方便你压缩回填的上下文。必须有兜底工具失败时不要只抛异常要返回给模型一个可理解的错误信息比如查询超时请稍后重试或参数不合法请检查日期格式。模型会根据这个信息决定下一步行动重试还是问用户要正确参数。工具注册表的管理也不可忽视。当工具数量超过20个时模型的选择准确率会明显下降这时候你需要给工具加路由层可以先让模型做一次粗粒度分类例如用户请求属于数据查询/文档操作/消息通知再在对应分类下做细粒度工具选择。这相当于给Agent建了个导航系统比让它在几百个工具里硬挑靠谱得多。3.5 模型层API优先还是自部署纠结前先算一笔账模型层的核心不是哪个模型最强而是你的场景该用什么规格、什么部署方式、什么成本结构。很多团队在模型选型上花费太多精力争论参数规模实际上对应用架构来说部署形态比模型精度更重要。我给团队的决策框架分四个象限维度使用云端API托管模型自部署开源模型成本结构按token计费前期投入低量大了贵前期投入高GPU资源、运维边际成本递减延迟受网络影响首字延迟略高内网部署延迟稳定可控数据合规数据出域需评估合规要求数据不出域适合敏感行业迭代速度升级简单厂商帮你迭代升级需自己做模型评估和发布流程实际工作中常见的组合是核心链路自部署一个有竞争力的开源模型控制延迟和成本非核心或复杂推理场景走云端API兜底能力上限。两种方式不矛盾架构图里模型层画上两个供应源就行。关键是模型层要抽象出一层模型网关把调哪个模型变成可配置的而不是硬编码在业务代码里。这样模型升级、切换、灰度发布都是改配置的事儿。模型网关还要处理一个实际问题模型的输出格式控制。现在生产需求基本都要求模型输出JSON或固定结构虽然各家模型都支持JSON mode但偶尔还是会输出非法JSON。网关层要补一个格式校验和重试机制校验不过就带着错误信息让模型重新生成一次比让业务层吞下畸形JSON强得多。4. 实操过程从一张白纸到一份可部署的AI应用架构图4.1 第一步先画用户请求的完整旅程图我建议的第一步不是画架构而是画用户旅程。拿一个具体场景从头到尾走一遍比如用户想让AI帮他整理会议纪要并生成待办事项。把这个过程拆成用户可感知的步骤用户上传会议录音或粘贴转写文本系统识别出需要整理纪要的意图系统调用文本处理工具或LLM能力结构化转写内容系统生成结构化纪要再抽取待办事项与负责人系统把纪要保存在知识库并把待办同步到项目管理工具用户收到结果可以追问修改这张旅程图画完之后你就能在每一步旁边标注这里需要LLM吗还是规则代码就够了往往一标就会发现真正需要LLM决策的点其实只有两三个其他都是常规程序逻辑。这个实践价值巨大——很多AI项目的过度设计都是因为一开始没画旅程图把所有环节都塞给LLM。4.2 第二步从旅程图推导架构分层图旅程图是用户视角架构分层图是系统视角。我会把旅程图里的每一步对应到第2节讲的六层上然后开始画框框和连线。这里分享一个画图的实用规范避免团队各画各的进程内调用用实线箭头跨服务调用用粗线或虚线箭头图例要统一。每一层只画该层关心的组件不要在编排层画数据库表结构也不要在模型层画前端路由。标注关键数据的流向尤其是工具结果是否回写上下文这种决策点单独用标注标出来。把风险点用红色/感叹号标出来比如这里可能上下文超限这里依赖外部API不稳定。架构图不是画完就定型了我工作里会要求每两周回看一次图跟线上实际调用链对比。因为AI项目迭代快今天加的插件、明天换的模型图不跟着更新两周后就没人信这张图了。4.3 第三步关键工艺选型的具体配置建议架构图画完下一步就是选型和落地。我以一套典型的企业知识库问答Agent增强应用为例给出我实际用的选型组合这个组合在团队里验证过稳定性和成本都可接受你也可以按需替换环节我的选型推荐替代选项选择理由模型网关自建轻量网关统一OpenAI兼容API格式直接调厂商SDK切换模型不改业务代码主模型开源7B~14B模型自部署核心链路云端商用模型API延迟与成本可控复杂推理兜底云端商用大模型API不设兜底处理长文档摘要、复杂推理向量检索开源向量库如Milvus/FAISS一类云厂商向量服务数据不出域可自管编排框架自研轻量编排器或成熟的Agent框架直接用LangChain全套避免过度抽象保留控制力缓存Redis会话状态、热点缓存Memcached数据结构丰富团队普遍熟悉可观测OpenTelemetry 自建追踪面板商用APM端到端链路追踪必须要有这里面我想单独说两个容易踩坑的点。第一个是主模型自部署时别贪大。参数越大效果确实越好但推理延迟和显存占用是几何级增长。7B~14B的模型在知识库问答和结构化抽取这类场景上配合好的prompt和工具设计效果已经足够。真正需要超大模型的地方比如长文深度总结、复杂代码生成单独走云端API兜底整体成本和体验能得到很好的平衡。第二个是编排框架别一上来就上重型框架。我见过团队引入了一套很重的Agent编排框架光配置文件和概念就要学两周最后简单场景反而因为中间层太多导致延迟加了300ms。我的建议是先自己写一个非常薄的编排器基于循环工具注册表大概几百行代码就能跑通用熟了再决定要不要引入框架。越晚引入框架你对架构的控制力越强。4.4 第四步把非功能需求也画进去很多人画架构图只画功能和数据流把性能、成本、安全、可运维性全忽略了。这在AI应用里是致命的因为AI系统的非功能需求跟传统系统差异很大。性能首字延迟TTFT是体验关键。架构里如果接入层、编排层、模型层是三个独立服务串行调用每一层加50ms整体体验就瘸了。我一般会把流式输出SSE/WebSocket作为架构标配模型生成结果边生成边推给用户体感延迟能砍掉一大半。成本AI应用的成本大头是token。架构设计上要明确哪里能用小模型、哪里能用缓存、哪里该做摘要压缩。我在图上会把token消耗审计点标出来每个月拉一次账看哪个环节消耗异常。安全除了接入层和输出层的内容过滤还要考虑工具调用权限。Agent循环里模型自主调工具如果不做权限隔离一个prompt注入就可能让模型去调用删除用户库的工具。我建议工具层统一做审批流接口敏感工具删除、修改、支付强制走人工确认不能在Agent循环里默认放行。可运维性AI应用的错误是概率性的你没法保证模型100%输出正确。所以日志和追踪设计从一开始就要做好每条请求要有唯一的request_id能把prompt、模型输出、工具调用结果、中间决策链全串起来。排查问题时第一件事就是拉起这个request_id看全链路否则面对一堆模型说错话的投诉你将无从下手。5. 实战中常见的问题与排查技巧实录5.1 问题一模型反反复复调用同一个工具出不来结果这是我遇到最多的Agent循环故障。表现是模型调工具获取结果了然后继续调同一个工具换了参数再调循环四五轮还在原地打转。排查思路分三步第一步看日志里的决策链。多数编排框架会记录每一步模型思考→工具调用→工具结果。如果发现模型在参数上反复横跳比如日期从1月换到3月又换回1月大概率是工具返回的结果没有给足信息导致模型不够确定而反复尝试。解决办法是增强工具返回的提示性在返回结果里附带一句话总结比如上季度各区域销售数据如下华南环比下滑最明显而不是干巴巴丢JSON给模型。第二步检查上下文是否塞爆了。工具结果越滚越大模型在长上下文里注意力涣散就会出现说了上句忘下句。解决办法是在上下文管理层做工具结果压缩甚至把前几轮的工具结果摘要化。第三步是设置硬性的最大循环轮数。我默认设5轮超过就强制终止并告诉模型请基于已有信息回答。这个兜底必须写在编排代码里不能只靠prompt里的请勿一直调用工具。5.2 问题二输出格式不稳定JSON偶尔解析失败模型输出断断续续有非法JSON这是另一个高频问题。生产环境里我会在模型网关层做三重保障模型侧开启JSON mode大部分主流模型都支持能大幅降低格式错误率。网关侧做格式校验解析失败时不直接报错而是把解析失败的原因拼到错误信息里让模型自纠一次。比如你输出的JSON缺少end_time字段请补全后重新输出纠错成功率高得惊人。最外层兜底正则如果重试两次还失败就按抽取关键字段的降级策略处理用正则把能匹配的字段先捞出来保证下游不会因为一条坏消息全链路崩溃。这套三层方案实测可以把格式错误率从百分之几压到千分之几基本不影响体验。5.3 问题三知识库问答答非所问纯胡编知识库问答RAG出问题九成不是模型不行而是检索没做好。排查顺序是先查检索到的东西对不对。把检索回来的top-k条片段拉出来看如果压根跟用户问题不相关那是embedding选型、切分策略或索引参数的问题。如果检索结果相关但很零散每条只有一小段连起来不完整那是文档切分粒度太细建议改成章节级切分标题层级保留。再查检索结果进prompt的方式。很多项目把所有片段一股脑拼进去指望模型自己挑重点效果通常不好。我的做法是检索结果先做一次重排rerank只保留最相关的2~3条片段每条片段带上来源标题一起进prompt并明确告诉模型如果这些片段没有你要的答案请直接说不知道。这个不知道自由非常重要它能大幅减少幻觉。最后查检索query的处理。用户的自然语言直接拿去向量检索效果经常不理想。建议先让模型做一次检索query改写把用户口语改写成语义更明确、更容易匹配到知识库文档的正式问句。这一步成本很低一次小模型调用但对检索效果提升非常明显。5.4 问题四费用超支token跟喝水一样AI应用的账单失控几乎每个团队都会经历一次。我的成本控制三板斧模型分级能用小模型如7B完成的绝不调大模型。意图识别、query改写、格式抽取这些脏活累活全走小模型大模型只做最终内容生成。缓存策略常见问题、相同上下文的请求结果直接命中缓存。我见过最夸张的项目有一个FAQ问答模块缓存命中率做到了60%以上成本直接砍半。摘要压缩定时跑长对话流的上下文不可能无限膨胀定时把旧对话压缩成摘要既保体验又控成本。最后还有一招给每条请求打上成本标签按功能模块分摊token消耗。这样每个月对账的时候你能直接看到哪个功能是最烧钱的然后针对性地优化那个功能的prompt长度或模型规格。5.5 问题五线上问题复现不了排查全靠猜概率性输出导致的问题最难受的是时好时坏。用户投诉某个回答很蠢你拿同一段输入自己测却正常。这是因为模型输出受上下文里微妙因素影响差一个字结果就可能不同。所以我在架构里强制要求全链路回放能力日志系统不仅记录prompt内容还记录模型参数temperature、top_p等、上下文截断日志、工具结果、最终输出甚至可以顺带存一份当时的完整上下文快照。出问题时直接重放这个快照在测试环境复现排查效率能提升一个量级。这个能力要求架构在设计时就考虑日志不只是给人看的更是给模型行为回放用的。6. AI应用架构演进的一个实用方向Agent协作与自动化的边界架构折腾到一定程度你自然会开始琢磨能不能让多个AI角色互相协作比如一个做规划、一个做执行、一个做质检。这里我提醒一句多Agent协作不是银弹它是高复杂度架构适用于高复杂度任务。如果你的任务三个步骤就能做完单Agent循环足够硬拆成三个角色只会让延迟翻三倍、互相传递信息的损耗翻三倍。如果任务确实复杂比如从零写一份项目方案包括调研、框架设计、撰写、校对我会建议明确区分角色Agent与主控编排主控负责拆任务、派活、验收角色Agent负责执行自己那一块。这种架构在图上画出来是星型而不是网状——所有协作都通过主控中转避免Agent之间互相乱聊行为可控性好得多。实测下来星型协作比完全自主的网状协作出错率低、可解释性强调试也方便因为每一步都经过主控这个统一收口。关于自动化边界我的经验是凡是涉及不可逆操作的Agent自主行为一定要设置人工确认点。哪怕是自动写邮件并发送这种看起来人畜无害的任务我也建议默认不直接发先给用户展示草稿确认。这个边界画在架构图上就是能力层与人工审批层之间的红线红线往上可以自动红线往下必须人工。守住这条线Agent出再大的乱子你都能兜住。7. 我个人在实操中最后想说的话做了这么多年工程我的体会是AI应用架构设计和传统系统架构最大的不同在于你必须接受不确定性是系统的一部分。传统架构的目标是消灭异常AI架构的目标是管理异常。模型会胡说、工具会失败、用户会问出预料之外的问题这都正常架构设计得好的表现不是不出问题而是出了问题能快速定位、快速降级、快速恢复。最后分享一个很实用的小习惯每做一个AI项目我都会单独维护一份架构决策记录每条决策写上当时为什么这么选、有没有替代方案、后面会不会觉得当时的判断错了。三个月后翻一遍你会发现自己对模型能干什么、不能干什么的判断会越来越准下一版架构画起来会顺手很多。这篇内容如果你认真看到了这里我希望你不是去背那些分层和选型而是拿一张纸把你现在手头项目的一条请求旅程走一遍标出每一层的人、事、物。画完了你就知道下一步该怎么动了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑