前前后后画了三十多张架构图又推倒重来了好几次我才算摸到AI应用架构设计的门道。市面上聊AI应用的文章很多聊架构的更多。但真要把一张架构图落到能跑、能扛并发、能迭代的生产系统里过程中藏着一大堆文档里读不到的坑。这篇就把我做AI应用架构设计的完整思路、踩坑经历、以及最终沉淀下来的套路全部摊开讲。先说明一下这篇聊的架构设计不是指训练大模型而是指基于现成的大模型能力API或私有化部署去构建上层应用覆盖从请求接入、智能编排、模型调度到数据召回、记忆管理、以及并发托底的完整链路。开局先给一张总览图文字版。这张图也是我目前做AI应用架构的标准骨架用户端Web/App/IM/硬件 ↓ 接入层API Gateway、鉴权、限流、协议转换 ↓ 编排层Agent Orchestrator / 工作流引擎 / 记忆管理器 ↓ 模型网关层多模型路由、上下文组装、Prompt管理、流式转发 ↓ 数据层向量库、缓存、业务DB、搜索服务、外部工具不要把这张图理解成传统的分层架构。AI应用最大的不同在于每一层之间不只是数据流动还有智能决策在流动。是的用户请求不会简单地从A层透传到Z层编排层会在中间反复和模型层、数据层对话一个请求可能在大模型内部来回循环几十次才算完。这是AI应用架构与传统Web架构最本质的区别。接下来把每一层拆开讲。1. 为什么AI应用架构设计不是调个API那么简单先说个真实经历。我见过很多团队从传统后端转来做AI应用最开始的架构通常长这样客户端 → 后端服务 → 大模型API → 返回结果 → 客户端这个架构在Demo阶段毫无问题短小精悍人人都能跑通。但一旦面对真实业务场景问题就接踵而至用户的连续追问需要上下文记忆谁来存、存哪里、怎么裁减模型需要查实时数据或者企业内部文档调用谁、什么时候调、结果怎么拼进Prompt多个模型各有优劣做总结用A模型、做推理用B模型路由规则放哪一层并发一上来大模型API响应动不动几秒钟连接池怎么设计超时重试怎么做流式输出怎么转发用户问的内容需要引用原始文档检索和编排的链路怎么闭环这些都是架构问题。传统后端架构在查数据库返回结果的模型下工作得很好但AI应用的核心循环是思考-行动-观察Reasoning-Acting-Observing本质是一个多轮交互的智能循环不是单次请求。好既然不是调API那么简单那好的AI应用架构应该怎么设计1.1 传统三层架构与AI应用的本质差异传统架构中请求处理路径基本是客户端发起请求后端验证参数、查数据库、做业务逻辑返回固定结构的响应关键在于传统应用的业务逻辑是确定的、硬编码的程序执行什么步骤完全由代码决定。架构设计的核心是管理好数据流和状态。AI应用则不同。比如一个Agent应用它的核心是让大模型自己决定下一步做什么——是要调用搜索工具还是查数据库还是直接回答。也就是说业务流程本身存在不确定性架构必须为这种不确定性留出控制空间。这意味着架构里必须具备这些组件组件作用传统应用是否需要上下文管理器维护多轮对话状态和Token预算否Prompt模板与版本管理控制模型行为和输出格式否工具调用框架让模型可以触发外部动作否记忆存储短期记忆会话内 长期记忆跨会话部分需要模型网关多模型调度、降级、容错否流式管道逐字返回输出的响应通道否如果你的系统已经在跑AI应用建议对照这张表自查一遍缺了哪一块哪一块就是隐患。1.2 一条请求背后的全链路结构举一个最简单的例子一个智能客服助手用户问我们公司今年Q3的销售数据怎么样这句话看似简单背后链路是接入层做用户鉴权、频率限制编排层判断意图——用户要查数据模型网关把问题送上大模型模型发现需要查销售数据库工具调用模块触发SQL查询可能是Text-to-SQL查询结果返回后编排层把结果追加到上下文中再次交给模型模型结合查询结果生成最终回答流式管道把回答逐字推给用户这个链路里编排层步骤2-5是最核心的它决定了系统智能程度的上限。如果这一步只是简单的大模型API封装那你的应用本质上和套壳没区别。这就是为什么现在的热点是Agent和编排而不是单纯的模型调用。一个适合新手的架构原则开始做AI应用架构时不要一上来就设计复杂的组件先把这条完整链路走通然后再逐步引入编排、记忆、模型网关、多Agent协作等模块。架构是演进出来的不是一次设计出来的。2. 分层架构从接入层到模型层的职责划分现在开始正经分解各部分设计。每个团队技术栈不同但AI应用架构的职责边界具有高度共性按以下五层设计基本不会错。2.1 接入层这层比想象中更重要接入层处理的是用户请求入口看起来和传统API网关差不多但在AI应用场景下有特殊的考虑鉴权与授权很多AI应用是面向C端用户的大模型调用成本不低接入层必须做用户粒度的配额控制。不做频率限制很快会被薅羊毛一个用户狂刷几百次账单直接爆表。流式协议AI应用的主流交互方式是流式返回。接入层需要支持SSEServer-Sent Events或WebSocket把模型生成的增量内容实时推给用户。如果设计成等模型全部生成完再返回用户会面对好几秒的白屏等待体验很差。多端协议适配同一个AI能力Web端走WebSocket小程序走WebSocket、甚至有些IoT端走MQTT协议。接入层需要承担协议转换的职责把不同端的请求归一化后转给编排层。架构建议接入层尽量薄。不要在这一层做业务逻辑保持高并发吞吐能力。AI应用的CPU密集型操作都在下游的模型调用和向量检索中接入层如果也做重逻辑很容易成为性能瓶颈。# 一个典型的SSE接入层实现思路FastAPI风格 app.websocket(/ai/chat) async def websocket_chat(websocket: WebSocket): await websocket.accept() user_input await websocket.receive_text() # 校验用户配额 quota_ok check_quota(user_id) if not quota_ok: await websocket.send_json({error: quota exhausted}) return # 转给编排层异步读取流式结果 async for chunk in agent_stream(user_id, user_input): await websocket.send_text(chunk)2.2 编排层Agent的大脑中枢编排层是AI应用架构中最关键也最容易过度设计的一层。它承担三类核心职责职责一意图路由用户请求进来先判断走哪个处理路径。比如查询天气的请求和写一首诗的请求走两条完全不同的链路。常见实现有两种基于分类模型小模型或大模型分类接口现在更常见的做法是让LLM本身做意图分类并输出JSON格式的意图结构基于语义相似度匹配用向量检索在预定义的意图库中匹配最接近的意图职责二任务拆解与工具调度这是Agent架构的核心。一个复杂请求往往需要拆成多个子任务每个子任务对应一次模型调用或工具调用。比如帮我总结一下昨天和客户的会议记录并整理出待办事项发到团队群里这个请求拆解出来就是从会议记录存储中检索昨天的会议记录工具调用大模型总结要点模型调用从总结中提取待办事项模型调用调用群机器人API发送消息工具调用编排层必须有机制让模型能选择工具并传递参数。现有实现思路包括基于LangChain的Tool Calling机制基于ReAct模式的思考-行动-观察循环基于自研的状态机当你需要更精细控制时职责三上下文与记忆管理很多人做AI应用时最头疼的问题就是上下文越长模型响应越慢、越贵、越容易迷失。编排层需要设计一套上下文管理的策略滑动窗口只保留最近N轮对话摘要压缩把早期对话交给模型生成摘要存摘要而不是全文关键信息抽取从对话中不断抽取用户偏好、关键事实存成结构化的记忆混合策略短期记忆用窗口长期记忆用向量库临时信息用缓存def build_messages(session_id, new_user_msg): # 1. 取最近对话滑动窗口 recent session_repo.get_recent(session_id, limit6) # 2. 取会话摘要 summary memory_repo.get_summary(session_id) # 3. 取与当前意图相关的长期记忆 facts vector_memory.search(new_user_msg, top_k3) # 4. 组装成最终Prompt system_prompt f历史摘要{summary}\n相关记忆{facts} return [{role: system, content: system_prompt}] recent.messages [{role: user, content: new_user_msg}]这段代码看起来朴素但已经是很多生产级AI应用的实际做法了。2.3 模型网关层隔离模型供应商的防洪堤模型网关是很多人容易忽略、但生产环境离不开的一层。它的核心作用有三个。多模型路由不同模型在响应速度、输出质量、价格、支持语言上有很大差异。生产级应用几乎不会只用一个模型。我见过一个典型的AI客服系统场景模型选择原因闲聊、寒暄便宜的小模型质量要求低量大复杂业务咨询旗舰大模型需要深度推理总结摘要中等模型质量与成本平衡内容审核专用分类模型响应要求快、必须合规模型网关需要实现路由策略按场景、按用户等级、按当前模型负载动态选择模型。这跟传统微服务中的服务路由是类似思路但多了一个语义维度——路由规则的决策依据往往是意图分类结果而不只是请求路径。上下文组装与Token管理网关层还要做让开发者抓狂的一件事上下文越长API调用越贵。两个解决办法Token预算控制每轮请求前计算当前上下文token数超过预算就截断或压缩Prompt缓存对于系统Prompt不变的部分使用模型提供方的缓存能力显著降本以GPT系列API为例同前缀的Prompt缓存能省约一半的输入成本。这个细节很多架构师在设计时根本没考虑到直到账单出来才后悔。统一错误处理与降级大模型API的可用性永远不是100%。调用超时、5xx错误、限流429都是常态。模型网关层必须做统一的重试、熔断、降级策略。我做过的一个项目里模型网关会实时统计每个模型供应商的失败率当失败率超过阈值时自动把流量切换到备用的同能力模型上。用户无感知。2.4 数据服务层向量库、缓存和业务数据的协同数据服务层是我在架构设计初期最容易低估、后期投入精力最多的一层。AI应用的数据需求比传统应用复杂很多。向量库选型为什么需要向量库因为AI应用的核心场景之一是RAG——把你的业务文档变成模型可以查询的知识。这就需要把文本切块、向量化、存储、检索。选型时有三个维度需要权衡向量库适合场景优点缺点Milvus数据量大、需要分布式功能全、性能猛部署运维成本高Chroma本地开发、轻量试用极简、快速启动不适合大规模生产云厂商服务如向量检索服务不想自运维的中大规模免运维、弹性价格和管控绑死关系库插件数据量小、已有的PG基础设施复用现有设施性能上限低纯技术角度如果数据量在几百万级以上、QPS预期高直接选Milvus这类专业向量库别用关系库的向量插件硬扛如果数据量在百万以下且已有PG用PG的向量插件反而省事少一个组件少一类故障。缓存层不止是RedisAI应用里缓存的含义比传统应用更广。至少有三类缓存值得注意语义缓存用户问过的问题模型已经回答过如果新问题的语义和旧问题高度相似直接返回旧答案省一次模型调用。实现方式是用向量相似度匹配旧问题。KV缓存用户画像、配额、会话状态用Redis这类常规缓存文档块缓存RAG场景下文档解析、清洗、切块、向量化的成本不低需要做增量更新和缓存避免每次重新全量处理业务数据库别以为有了向量库就不需要业务库。用户信息、订阅关系、对话记录的元数据、工具调用的审计日志这些结构化数据仍然放在关系数据库里。典型设计是业务元数据在关系库向量数据在向量库两边的ID互相关联。这是AI应用架构的一个隐藏复杂度传统数据与新数据的双重存储。数据一致性维护比传统应用更繁琐必须考虑对话里如果引用了旧知识但知识库已经更新了怎么处理这类问题。成熟的做法是给知识版本打时间戳在上下文里带上版本号让模型知道数据的时效性。这个问题我们后面专门展开。3. Agent架构单Agent与多Agent协作的取舍聊到Agent先泼一盆冷水。不要被AI Agent这个词吓到也不要被媒体吹得天花乱坠。在我看来Agent本质就是**模型 工具 编排循环的组合**并不神秘但落地时坑很多。3.1 单Agent的边界所谓单Agent就是一个大模型驱动的智能体它自己决定怎么使用工具、怎么回答。对大部分业务场景单Agent已经足够了。单Agent的架构是这样的用户问题 ↓ LLM决策循环需要工具吗需要查资料吗 ↓ 是 工具调用搜索/查询/API ↓工具结果返回 LLM继续推理 ↓ 否 最终回答实现时的关键点在于工具调用的格式。现在主流模型基本都支持Function Calling你只需要把工具的定义函数名、参数说明、用途描述以JSON Schema的方式传给模型模型就能在需要时返回一个结构化调用指令。这个设计里有几个很深的门道工具描述写不好模型就乱调工具。工具描述就是给模型的说明书写清楚这个工具什么时候该用、什么时候不该用、参数格式是什么。很多人上来写个获取天气信息就完了结果模型该调用时不调用、不该调用时乱调用。工具太多模型选择困难。如果工具列表超过20个模型的选择准确率会下降。架构上需要做一级工具分类先选工具组再选具体工具。工具调用失败要有恢复机制。工具可能失败网络错误、返回空数据、权限不足架构必须让模型知道失败了并重新决策。最常见的坑是工具调用失败后模型像没事人一样继续编答案。架构上要在工具返回的内容里显式带上错误标记并提示模型这次查询没有成功你不应该编造数据。3.2 多Agent协作模式串行、并行与分层当业务足够复杂时单Agent会力不从心。比如一个智能助手既要回答客服问题又要管理订单还要做数据报表。所有能力塞进一个AgentPrompt会越来越长工具列表越来越长模型决策质量急剧下降。这时候就需要多Agent架构。市面上常见四种协作模式串行模式PipelineAgent A处理完把中间结果传给Agent B继续处理。适合有固定流程的场景比如先审阅后总结再归档。这种模式最稳定、最好调试架构上就是一个工作流。并行模式Fan-out/Fan-in一个请求分发到多个Agent并行处理最后汇总结果。适合多角度分析同一问题的场景。比如做一个行业研究报告竞品分析Agent、市场规模Agent、趋势预测Agent同时开工最后汇总成一份报告。分层模式Supervisor一个主管Agent负责拆解任务、分发给多个专员Agent执行并收集结果。这种模式最接近真实组织运作也是多Agent协作中最推荐的。主管Agent的Prompt要写得极其清晰它本身通常使用最强的模型专员Agent可以用低成本模型。协商模式Debate多个Agent对同一问题给出不同观点互相辩论最后仲裁者定稿。这个模式最有想象力但也最容易失控适合头脑风暴、观点审查类场景不太适合对确定性要求高的业务系统。架构建议追求稳定性优先先用串行模式业务复杂度真上来了再升级到分层模式。一上来就搞协商模式大概率要翻车调试成本极高。3.3 多Agent架构的工程复杂度来源多Agent协作听起来很美实际投入生产后你会发现工程复杂度是指数级上升的上下文隔离每个Agent的上下文是否共享如果共享中间的中间产物和海量思考过程会迅速淹没上下文如果隔离每个Agent另起炉灶信息不连续怎么解决常见的解法是主记忆在Session级别共享、各Agent只保留与自身任务相关的局部上下文。状态一致性多个Agent有没有可能修改同一份数据操作同一个订单如何避免并行Agent之间互相覆盖数据必须有锁或版本号机制。可观测性多Agent协作的链路比单Agent长得多任何一个环节出错排查都如同大海捞针。每个Agent的输入输出、工具调用、决策理由都要有日志记录。这是多Agent系统能生产落地的先决条件。工程上还有一类代价很多人不算多Agent协作会显著增加模型调用次数和耗时。一次复杂任务可能调用20次甚至更多次模型延迟从单Agent的5秒变成30秒甚至更多。架构设计必须考虑到用户的耐心边界必要时用流式进度反馈缓解等待感。4. RAG架构设计的四条关键链路RAG检索增强生成是当前AI应用落地最广的技术架构之一。但很多人对RAG的理解停留在向量检索拼接到Prompt的层面这个理解太粗浅了。我强烈推荐把RAG当成一个独立架构来设计而不是一个功能。RAG架构包含四条关键链路索引链路、检索链路、重排链路、验证链路。任何一条链路的缺失或薄弱都会让整个系统效果崩塌。4.1 索引链路文档从入库到可检索的全过程索引链路是最不起眼、但对最终效果影响最大的环节。流程如下文档解析PDF、Word、HTML、Markdown……不同格式处理方式完全不同。PDF尤其麻烦有扫描件、有表格、有多栏排版需要OCR、版面分析才能把内容有效提取。文本清洗去掉页眉页脚、水印、乱码字符、无关广告。质量差的源文档清洗不干净检索到的内容就是垃圾模型生成质量直接受影响。分块策略把长文切成小块才能精确检索。块太小语义不完整块太大噪声太多。实践中的经验值是通用文本200-500 token代码或结构化内容按逻辑块切Markdown按标题层级切。但最好根据具体内容调整——这一块非常依赖经验。向量化选择合适的Embedding模型。中文场景可以选择主流的国产中文向量模型英文场景可以用通用的向量模型。向量化后做归一化储存为后面的相似度计算打基础。增量更新文档库不是静态的每天有新增、有修改、有删除。索引链路必须支持增量更新否则每来一个新文档就全量重建索引系统很快就扛不住。4.2 检索链路为什么混合检索是标配检索不只是向量相似度那么简单。向量检索擅长语义匹配比如电脑开不了机和笔记本电脑无法启动能匹配上但它在精确匹配、数字范围、同义专有名词等场景下会失灵。举例用户问找一下编号为INV-2024-0089的订单如果用纯向量检索模型会按语义去找结果可能完全不匹配。这种场景下精确匹配倒排索引或数据库查询是必须的。所谓混合检索就是向量检索关键词检索结构化检索的结合最后用加权或重排方式融合结果。哪些场景选哪种策略的参考逻辑如下场景主检索方式原因开放域问答、概念查询向量检索语义匹配能力强精确ID、编号、工号查询结构化/精确检索容不得模糊专有名词、缩写匹配关键词检索向量可能混淆缩写多条件过滤语义查询向量结构化过滤先过滤后语义4.3 重排链路从Top-10到Top-3的关键一步向量检索拿回来的Top-10结果是不能直接全部塞进Prompt的。原始的向量相似度排名在前十名层面的排序质量比较粗糙直接使用会在中间混入语义低相关但向量距离较近的噪声。业界标准做法是加重排环节。重排的实现方式有两种用重排模型如bge-reranker对检索结果评分排序。这个模型的输入是query和文档对输出相关性分数。准确率高但速度慢所以只对Top-10重排不做全量重排。用大模型重排。让模型判断哪些候选文档相关并排序。效果可能更好但token成本高。适合候选集小、质量要求极高的场景。架构上重排层是选配但生产级RAG系统我推荐直接上重排模型。原因很简单向量检索的目的是召回率优先重排的目的是精确率优先两者互补缺一个就会在效果上出问题。4.4 验证链路引用溯源与幻觉控制最后这条链路最容易被新手忽略。很多RAG系统做完了前三步就上线结果模型一本正经地编造引用内容——用户提出质疑你才发现回答里根本没绑定原始出处。验证链路做的事包括引用溯源当模型生成回答时必须明确这条信息的来源是哪份文档、哪个段落。实现方式是在Prompt里要求模型以特定格式输出引用标识并在生成后通过后处理脚本做映射。相关性校验模型回答的核心论断在检索到的原文里找不找得到可以做一个自动化的断言验证——把模型生成的句子与原文句子做语义相似度比对低于阈值就标记为疑似幻觉。无依据拒答架构上要允许模型在检索到的资料不足以回答问题时明确说根据现有信息我无法回答这个问题而不是硬编。这需要在Prompt里反复强调并配以后处理兜底。这四条链路合成一句话RAG的效果不是由模型决定的而是由索引、检索、重排、验证四个环节共同决定的。这句话值得贴在公司白板上因为绝大多数RAG效果不理想的项目问题都出在这四环的某一环而不是模型本身。5. 高并发下AI Agent架构的扛压设计话题落到热搜词里频繁出现的AI Agent怎么扛并发。这个问题确实该聊。很多人做一个AI应用原型很容易等到用户量一上来就发现大模型调用的延迟和成本会成为系统的短板。5.1 AI应用的并发瓶颈到底在哪传统的Web服务并发瓶颈通常在数据库、在磁盘IO。AI应用变了瓶颈转移到了三个新地方大模型API的响应时延一次调用可能1-10秒是传统API的百倍以上。线程池/协程占用时间极长服务很容易被慢调用拖垮。上游API的并发配额模型供应商对API有严格的并发限制RPM每分钟请求数TPM每分钟Token数。你自己的服务能扛十万并发也没用上游只给你200RPM多出来的请求全部429。向量检索的吞吐虽然比大模型调用快得多但向量检索也需要毫秒级计算高并发下索引的加载、计算、返回都需要扩容。理解了瓶颈位置才能对症下药。5.2 连接池、超时与重试的正确姿势先给几个具体的参数实践值这些是从生产环境中总结出来的可供参考参数建议值理由单路请求超时读超时60-120秒大模型生成长文本可能真的需要这么久连接超时3-5秒如果TCP握手都这么慢说明网络有问题连接池最大连接数视上游配额而定连接数不要超过上游限流阈值否则毫无意义重试次数2次幂等场景第一次重试间隔500ms第二次1s非幂等请求不能重试熔断阈值连续失败率50%且请求量阈值触发后快速失败进入半开状态探测恢复重试这里必须强调一个经典坑大模型API是非幂等的。如果请求已经发出去模型已经在生成结果你因为超时重试了一次用户可能收到两个答案如果业务处理了两个响应而且两次请求都消耗token费用。所以重试策略应该只针对连接失败和明确返回5xx非处理中错误的场景对超时但不确定服务端是否已处理的请求应该走状态查询而不是盲目重发。5.3 异步化与流式响应的架构影响AI应用天然适合异步化。用户发一条消息模型要想好几秒让用户的HTTP连接一直挂着等结果是很差的体验也大量占用连接资源。架构上推荐的做法是基于消息队列的异步处理API接入层立即返回 request_id ↓ MQ消息队列 Agent Worker消费消息执行智能循环 ↓执行完成 WebSocket / SSE推送结果给客户端这样做的优势削峰填谷能力极强哪怕上游模型API偶尔变慢消息在队列里排队等待服务不会崩溃处理进度可以随时查询用户体验也更可控。流式响应带来的架构变化值得单独说。传统API要等整个响应体生成完才返回AI应用场景下流式逐步返回生成结果已经是标配。但流式也带来了额外问题编排层的中间状态怎么在流式协议中透出我的方案是用事件类型区分token事件推增量文本、tool_call事件推工具调用状态、status事件推当前处理阶段。前端拿到这些事件可以渲染出正在查资料...正在生成中...的动态效果体验比干等好太多。# 流式事件示例伪代码 async for event in agent_execute(msg): match event[type]: case token: await ws.send({type: token, delta: event[delta]}) case tool_call: await ws.send({type: status, text: f正在调用{event[tool]}...}) case done: await ws.send({type: done, request_id: event[id]})5.4 降级与熔断的实操方案不管你怎么优化大模型API该挂还是挂。生产级架构必须做好降级预案。我在实际项目中用过的降级策略按优先级排列模型降级从旗舰模型降级到普通模型。回答质量差一些但服务还在。简化编排Agent的多步推理链路降级为单轮问答。不做工具调用、不做复杂的思考过程直接生成答案。局部降级如果重排服务挂了跳到不重排只取Top-1的简化链路。兜底话术AI能力完全不可用时返回预制语句小助手当前繁忙请稍后再试并引导用户转人工。降级方案设计要在上线之前完成而不是宕机之后再补救。上线前把每个降级路径都演练一遍确定能真正跑通。# 降级配置示例YAML routes: - id: chat-main model: flagship fallbacks: - model: fast-model trigger: [timeout, 5xx] - mode: echo-fallback trigger: [quota-exhausted, circuit-open]在压测实践中还有一个经验并发压力下先挂的往往不是大模型API本身而是你的昂向量库或数据库。模型API挂了会快速退回非200状态数据库挂了则是连接池耗尽所有请求排队等待整个服务完全卡死。所以做高并发架构时务必同时关注下游每一个依赖组件的连接池配置和超时设置。甚至有人会特意给数据库、向量库设置比模型API更短的超时时间优先保护业务链路。6. AI Native研发范式的工程落地这是最后一个大议题也是行业内正在热烈讨论的方向。热搜词里出现了AI Native研发范式实践手册、AI测试开发、AI编程提示词这些词非常贴合时代脉搏。所谓AI Native不是说用了AI辅助编程就算而是指软件开发流程本身被AI重塑——从需求分析、架构设计、编码实现到测试运维每个环节都被AI深度介入或自动完成。6.1 从提需求到写Prompt需求表达的范式变化传统研发的需求链是产品经理写PRD → 开发读PRD写代码 → 测试按PRD写用例。AI Native的研发范式里需求链变成了产品经理定义问题域和验收标准 → AI辅助生成PRD和用户故事 → AI辅助生成架构图和代码骨架 → 开发者审核、修正、集成。在这个范式下架构师和开发者的核心能力不再是从零写程序而是写高质量Prompt的能力给AI描述清楚系统要做什么、边界在哪、如何处理异常。一个精准的Prompt胜过十轮无效对话。审阅AI产物的能力AI生成的代码你能看出问题在哪、哪里需要改。这部分能力依赖传统功底。结构化拆解能力把大系统拆成一个个AI能独立完成的模块定义好模块间接口。这是架构设计的新形态。这不是程序员要失业那套话术而是程序员的产出形态从代码变成代码Prompt审批决策。6.2 可观测性Trace、LLM监控与评测做AI应用架构最趁手的调试工具不是断点而是可观测性工具链。传统微服务的监控指标是QPS、延迟、错误率。AI应用多出几个核心指标指标含义为什么重要Token消耗每个请求消耗的输入/输出Token数直接关联成本Tool调用成功率工具调用成功/失败的占比反映Agent决策质量上下文长度每次请求的上下文Token数过长需压缩影响成本幻觉率抽样评测回答中无依据内容的比例决定用户体验和可信度重排命中率重排后Top-1与最终答案一致的比例反映检索链路质量AI应用的排障逻辑也与传统应用不同。试想这个场景用户反馈回答质量变差了你的第一步排查动作是什么传统思维看报错日志。AI应用里更可能的根因Prompt被改动过知识库更新了但向量索引没重跑模型供应商悄悄换了版本数据库里混入了脏数据这些都可能让质量变化且没有任何报错。架构上建议针对一次完整的Agent请求做TTVTrace-Token-Verify记录Trace记录完整调用链每个工具的输入输出、每个节点的耗时Token记录Token消耗明细和上下文组装过程Verify记录评测结果支持事后复盘有了这三样在用户反馈质量问题时才能快速定位是哪一环变了。6.3 灰度发布与回归防线AI应用发布新版本比传统应用风险高很多。最大的风险在于模型行为是概率性的同样的Prompt这周和上周输出的质量可能有肉眼可见的差异。你可能改了一个Prompt里的标点符号用户的体验就明显下降。这不是玄学是真实发生过无数次的翻车案例。传统的代码灰度发布机制能用到AI应用上但需要补充AI特有环节Prompt灰度新Prompt只对10%的流量生效离线对比新旧版本的回答质量得分确认无回归再放量。目前已有相应的Prompt评测框架可以支持这类工作。模型灰度切换底层模型时先在影子模式下用真实流量做对比评测不返回新模型结果给用户只记录和打分观察几天再切换。回归测试集必须有一个人工标注或半人工的问答评测集覆盖核心业务场景和常见的刁钻问题。每次Prompt变更、模型切换、检索逻辑修改后跑一遍回归集分数下降就阻断发布。在实践的反复打磨中我发现最实用的是黄金评测集机制——把线上用户的高频问题、曾经翻过车的问题、边界刁钻问题沉淀成评测集。每次发布前跑一遍虽然不完美但能挡住大部分低级回归。以上就是从分层架构到Agent设计、RAG链路、高并发承载、AI Native工程范式的完整架构设计体系。最后分享一句我这几年做AI应用得到的最深刻的体会。架构设计这件事想的比写的值钱试错的比规划的可靠。AI应用架构没有放之四海而皆准的正确答案只有针对你业务场景的最优解。先把基础链路跑通再一层层往上加复杂度过程中不断用线上数据修正设计方向——这才是AI应用架构设计的正道。
阅读完成 · 觉得有帮助?