最近我把智能体(AI Agent)相关的系统架构翻来覆去捋了一遍,接触过一些从零搭起的智能体平台,也看过不少在生产环境里跑了一两年的老系统。圈里聊智能体,最热闹的永远是大模型又生成了什么,可真到企业落地时,决定成败的往往是很朴素的三件事:隔离、集成、治理。这三个词听起来像是运维和平台的“脏活累活”,但少了任何一个,智能体都只能停在 Demo 阶段。
这篇文章是我这轮综合调研的整理,按“整体架构 - 隔离设计 - 集成方式 - 治理机制 - 落地清单 - 踩坑实录”的顺序讲,适合正在设计智能体平台、或者打算把 Agent 接进业务系统的架构师、后端开发、LLMOps 同学,也适合正在准备系统架构设计师这类考试、想用真实案例理解架构约束的人。我尽量把“为什么”讲透,再给能直接抄的配置和流程。
1. 智能体系统架构的整体视图与设计思路
1.1 智能体不只是一个“会调用大模型的脚本”
很多人对智能体的理解还停留在“大模型 + 一段提示词”,随便写个 Prompt 就能让模型回答问题。可一旦要做企业级应用,比如销售智能体、客服智能体、企业知识库助手,这套组合根本撑不住。因为一个真实可用的智能体会包含模型接入、提示词管理、会话记忆、工具调用、权限控制、知识检索、日志审计等多个模块,任何一个环节没设计好,智能体在生产环境里就会变成定时炸弹。
我一般会把智能体系统拆成六层来看:接入层负责接收用户请求,比如 Web 页面、企业微信、钉钉;编排层负责理解用户意图、拆解任务、决定调用哪个工具;模型层管理多个大模型服务,负责路由和降级;记忆层维护短期会话上下文和长期业务记忆;工具层封装内部 API、数据库、第三方系统;治理层则贯穿始终,负责权限、审计、缓存、监控和成本控制。
这个分层听着像传统业务系统,实际上如果参考系统架构设计师教材里的思路,你会发现逻辑完全一致:高内聚、低耦合、模块化。各层独立演进,出了问题能隔离在单层,而不是整个系统一起挂掉。拿开餐厅做类比,大模型只是那个颠勺的厨师,智能体是整个门店,得有排风、消防、菜单、进货渠道,还得时不时跟食客解释为什么今天招牌菜没了。厨师再厉害,门店缺了运营体系,照样开不下去。
1.2 为什么隔离、集成、治理是三个绕不开的关键词
我这轮调研下来,最深的体会是:智能体系统架构里,模型能力只决定“上限”,隔离、集成、治理决定“下限”。如果这三个方面做得稀烂,模型再强,上线后也会被不稳定、越权、不可审计、成本失控这些基础问题拖垮。
先说隔离。智能体不是单纯的 API 转发,它要执行工具、操作数据、生成内容,一旦某个任务被恶意构造,或者某个实验性 Prompt 导致行为失控,影响范围可能会从一个会话扩散到整个租户、甚至整个底层系统。隔离的作用就是给风险画一条边界:进程崩了不影响其他服务,租户数据互相看不到,一次错误的工具调用不会污染全局上下文。
再说集成。智能体最有价值的点不是自己有多聪明,而是能调用业务系统里的工具和数据。没有集成的智能体就是一个空有聊天能力的壳子。但集成本身也最容易出问题:接口超时、消息丢失、权限不可控、返回格式不兼容,一个个都是生产事故的源头。
最后说治理。企业敢不敢把智能体真正交到一线员工手里,看的不是 Demo 演示多惊艳,而是出了问题能不能追溯、效果退化了能不能及时发现、预算烧完了能不能立刻看到。数据治理、缓存治理、Prompt 治理、可观测性,这些才是智能体从“能跑”到“敢用”的关键。系统架构设计师的综合知识里反复强调的可用性、安全性、可维护性,放在智能体系统里,最终都落在“治理”这两个字上。
2. 隔离设计:先给智能体划好边界,再谈智能
2.1 运行环境隔离:容器、沙箱与模型网关
智能体和普通后端服务最大的不同,是它经常会执行一些“不可预测”的动作。比如让 Agent 生成一段 Python 代码去处理数据,这段代码是模型现场写的,你根本没时间也没能力提前审查每一行。这时候如果直接跑在宿主机上,等于把一个陌生人请进家里,还随手给了他一把钥匙。正确的做法是用容器、虚拟机或者沙箱把执行环境隔离起来。
实操上,我把智能体的几个核心模块拆成了不同进程:编排服务、工具执行器、模型网关、向量检索服务,各自跑在独立容器里。这样任何一个模块内存泄漏或者被注入攻击,最多重启一个容器,不会把整个平台拖垮。如果你要部署 Hermes 这类开源智能体,我建议也不要直接 pip install 到全局环境,而是用 Docker 打包,配合 systemd 做进程守护,更新时直接换镜像版本,回滚也很干净。
Python 开发环境里的“安装隔离”同样重要。很多项目依赖冲突都源于没有用虚拟环境或容器,导致同一个包在系统环境里被来回升级。最少你要做到 venv/poetry/uv 三选一,把依赖锁在项目级环境里。模型网关这块也要做隔离,常见的做法是统一走一层 LLM 网关,不让业务代码直接连模型 API。网关统一管 Key、配额、限流、缓存,上游模型服务挂了还能自动切换到备选模型,这个隔离层能救你很多次。
2.2 数据与存储隔离:多租户、向量库与缓存
企业级智能体几乎没有单租户的。不同部门、不同客户、不同项目组都在用同一个平台,如果数据隔离没做好,就会出现最要命的越权:A 部门的人问问题,模型从知识库检索时把 B 部门的内部文档捞了出来。这个风险在 RAG 架构里尤其突出,因为向量检索天然是“按相似度匹配”,它不会自己理解文档属于哪个租户。
解决思路是三层隔离。第一层,向量库按租户划分 Collection 或 Partition,检索时强制带上租户条件;第二层,在文档入库时打上权限标签,检索后还要做结果级过滤;第三层,如果用的是共享 Redis 缓存,所有缓存 Key 必须带上租户 ID 和知识库版本号,避免不同租户读到互相污染的缓存。
你可以类比一下浏览器缓存隔离和 Win11 里的隔离区,一个是把不同站点的数据隔开,一个是把可疑文件单独关起来,核心思想都是“默认不信任,边界清晰”。智能体平台里的缓存治理也一样,Redis 不能把所有数据堆在一个裸命名空间里,至少要做到按业务模块、按租户、按缓存版本三层前缀隔离。否则某次缓存更新还会把别家的数据顶掉,排错排到怀疑人生。
2.3 权限与指令隔离:防止“越权”和“上下文污染”
智能体越权,很多时候不是模型故意使坏,而是权限体系太粗。比如 Agent 拿到一个“查询订单”的工具,理论上只应该访问当前用户的订单,但如果工具接口本身没有做身份参数传递,模型就可以传入任意用户 ID,结果就变成任意订单查询。这是权限隔离的经典事故。
我的经验是:智能体平台里所有工具调用都要单独建一张权限表,定义“哪个 Agent 角色可以调用哪个工具、传入哪些参数、访问哪些数据范围”。Agent 的调用是动态的,所以工具侧必须做参数白名单校验,不能只靠提示词约束。比如给 Agent 一个执行 SQL 的工具,工具层一定要检查 SQL 类型,默认禁止 DROP、DELETE、UPDATE,否则某次模型“灵光一闪”,可能直接把生产表清了。
上下文污染也是隔离的重点。每个会话应该有自己的独立上下文池,上一个任务的工具输出不能自动进入下一个任务。很多“智能体突然答非所问”的问题,就是上下文被脏数据污染了。我见过最夸张的例子是模型在生成报告时,莫名其妙引用了上一个用户上传的 Excel 内容,就是因为编排层没有做会话变量隔离。硬件的操作数隔离也是同一个道理,运算时不能随便碰邻居寄存器的数据,Agent 处理用户输入时同样不能信任所有上下文数据都该被模型看到。
2.4 从嵌入式到网络设备:隔离思想无处不在
聊到隔离,很多人第一反应是安全,其实更底层的本质是“防止干扰扩散”。传统硬件领域里,模拟地和数字地隔离、485隔离电路、光耦隔离继电器,都是在物理层面阻断干扰信号的传导路径;STM32系统架构里通过总线矩阵做访问仲裁,也是为了让多个主设备访问外设时互不干扰。分布式交换机系统架构为什么把控制平面和数据平面分离开?因为控制平面需要稳定,不能被数据流量冲击拖垮。
这些和智能体系统架构完全是同构的。模型调用流量是“数据平面”,权限判断和审计日志是“控制平面”,如果两者混在一起,一次流量洪峰可能让鉴权系统都不可用,那才是大事故。所以我在设计智能体平台时,会把权限校验、配额控制、审计日志放在独立服务里,尽量不让它们和业务编排逻辑抢资源。这个思路不是从某本书上学来的,是被线上故障逼出来的。
3. 集成设计:让智能体长进业务系统里
3.1 API 网关与消息队列:同步调用与异步解耦
智能体如果不和业务系统集成,价值至少打五折。最常见的集成方式是开放 API 给其他系统调用,或者主动调用内部系统的接口。如果只是单个查询场景,走 RESTful API 就够了;但智能体处理一个复杂任务可能耗时十几秒甚至几分钟,这时候同步调用很容易把前端连接拖死,必须引入异步化。
我的建议是:所有耗时超过 3 秒的智能体任务,尽量都走消息队列。比如用 RabbitMQ 做任务分发,智能体把任务结果发布到队列,业务系统订阅结果。如果你在 Spring Cloud 体系里,直接用 RuoYi 这类框架集成的 RabbitMQ 广播模板就能做事件广播,把智能体的执行结果同步给多个下游系统。注意广播模式要用 Topic Exchange 而不是 Direct,否则新增一个下游模块就要改一次路由代码。
异步化之后,消息的幂等性一定不能省。你无法保证消费者不会重复收到消息,所以每个任务都要生成唯一任务 ID,下游系统根据任务 ID 去重。智能体平台和外部系统之间的接口调用也要统一走一个 API 网关,网关负责鉴权、限流、重试、超时熔断。很多集成事故不是接口没写好,而是调用方无限重试把下游打挂了。
3.2 工具与函数调用:Function Calling 的标准姿势
要让智能体自动调用工具,现在最通用的方式是 Function Calling。你给模型一份工具清单,模型根据用户意图返回“要调哪个函数、参数是什么”,然后由编排层去真正执行。这个机制看着很顺,但坑很多,尤其是参数安全问题。
工具定义要尽量用 OpenAPI Schema 描述清楚,每个参数都要有类型限制和枚举约束,模型才不容易传错。比如天气查询工具的“城市”参数,最好让模型从枚举值里选,而不是自由文本。更重要的是工具执行前必须二次校验参数,不能完全相信模型的输出。我见过一个 Agent 因为参数里多传了一个分号,直接改变了下游 SQL 的语义,幸亏测试环境拦住了。
工具调用的稳定性也要治理。外部 API 可能超时、返回 500、或者返回一堆无用数据。工具执行器里要统一做超时控制、重试策略、熔断降级。重试时注意幂等,能传 Request-ID 就传 Request-ID,否则一次超时后重试,可能给下游创建了两条订单。审计日志也要记清楚:什么时间、哪个会话、调了哪个工具、参数是什么、返回了什么。没有这些日志,后面排查问题完全是盲人摸象。
3.3 RAG 数据集成:把知识库变成 Agent 的“外接大脑”
企业里的知识资产散落在各个角落:内部 Wiki、Word/PDF 文档、数据库字段、工单记录、飞书文档。想让智能体回答得更接地气,就得做 RAG,把这些数据接进来。但多数人以为 RAG 只是“文档切一切,塞进向量库”,结果接完以后效果奇差,还找不出原因。
RAG 的链路是:数据采集 -> 数据清洗 -> 文档切分 -> Embedding 向量化 -> 存入向量库 -> 查询时召回 -> 重排 -> 送进 Prompt。哪个环节都可能出问题。数据治理的经验是“先采集再清洗”,先把全量数据拿回来,再统一做格式转换、去重、敏感信息脱敏、权限打标,最后才入库。很多团队跳过了清洗,把一堆乱糟糟的表格直接切进向量库,检索出来的内容质量自然没法看。
知识库还要做版本管理。你上个月更新了产品手册,向量库里如果还是旧版本,智能体回答就会一直停留在上个月。我建议知识库集合名里带上版本号,每次重新跑完数据管道,直接切换索引,出了质量问题也能秒级回滚到旧版本。检索结果的来源也要记录,最好在下游界面上展示参考文档名称,用户能一眼判断答案是不是来自可信材料。
3.4 前端与开发环境集成:从 Open WebUI 到 IDE 插件
智能体的交互入口越来越多样化。最简单的可以做一个内部聊天页面,现在不少团队直接用 Open WebUI 集成 Llama 或国产开源模型,省去从零开发聊天界面的成本。如果要做桌面客户端,可以用 pywebview 集成 Vue3,前端照常写,壳子用 Python 包一层,体积比 Electron 小很多。想更省力一点,Trae 这种 AI IDE 直接集成 Figma,能从设计稿里分析出页面结构,帮前端把设计转代码的流程缩短一截。
这些前端集成有一个共同点:都要走清晰的协议和权限边界。不管是用 pywebview 还是 Electron,Web 页面能访问本地资源的范围必须严格控制,不能给渲染进程太多原生能力,否则等于把系统后门暴露在浏览器里。类似下载管理器浏览器集成、IDE 集成 Codex,本质都是同一个模型:一个宿主软件,一个扩展协议,一套权限体系。集成得好不好,就看权限边界清不清晰。
3.5 持续集成部署:让 Agent 版本像软件一样发布
智能体的核心逻辑不只是代码,还包括 Prompt、知识库、工具配置和模型参数。这些东西如果只存在于某个人的笔记里,那就等于没有版本管理。正确做法是把所有配置和代码一起放进 Git,走持续集成和持续部署。
以 Python 项目为例,GitLab CI 或者 GitHub Actions 里至少要做三件事:跑单元测试,验证工具调用逻辑;跑静态检查和代码质量门禁,比如接入 SonarQube;再跑一轮基于评测集的 Prompt 回归,防止模型效果退化。你也可以在 CI 里把日志收集流程串起来,比如通过 Logstash 集成自定义插件,把每次智能体的执行日志统一送到日志平台。这样每次发布都有迹可循,出问题能快速定位到是代码改动还是 Prompt 改动引起的。
4. 治理机制:从“能跑”到“敢用”的最后一公里
4.1 数据治理与知识源治理:先采集再清洗
智能体的回答质量上限,其实由知识源质量决定。很多企业买再贵的模型,内部知识库一团乱麻,最终效果还是很拉胯。数据治理不是一次性工作,而是持续流程。先要建立数据源登记表,搞清楚谁负责维护、多久更新一次、数据权限归属谁,然后再进入采集和清洗环节。
清洗绝不只是格式转换。要处理掉重复文档、过期公告、内部敏感信息;要把 PDF 里扫描件做 OCR,把表格转成结构化的 Markdown,把图表中的说明文字提取出来。做完清洗还要做质量校验:抽样看 Embedding 后检索到的内容是否和问题相关。如果“报销流程”的相关文档永远召回的是“发票抬头该怎么填”,说明切分方式和向量化策略有问题,而不是换个模型就能解决。
数据治理的工具选型也要匹配规模。小团队用一个脚本加向量库管理工具足够;数据量上来以后,建议引入专门的数据集管理平台,支持任务调度、血缘追踪、质量指标统计。市面上很多开源采集框架都能做这件事,但一定要想清楚数据版本和回滚机制,而不要迷信工具能解决所有问题。
4.2 缓存治理与性能治理:别让响应越来越慢
智能体系统里有两个地方最容易用到缓存:一个是高频重复的问题-响应缓存,一个是 RAG 检索结果的缓存。缓存不是一存了之,Redis 缓存治理里常见的三个坑在这里同样存在:缓存穿透、缓存击穿、缓存雪崩。
缓存穿透是指恶意或低频请求反复打到数据库和模型层,可以用布隆过滤器先拦一道,或者对空结果也做短时间缓存。缓存击穿是指某个热点 Key 过期瞬间大量请求打到后面,可以用互斥锁只让一个请求回源。缓存雪崩是指大量 Key 同时过期,给后端造成压力,解决办法是设置 TTL 时加随机偏移量。
智能体场景还要额外考虑“答案时效性”。如果是政策制度、产品价格这类经常变化的知识,响应缓存要设非常短的 TTL,甚至不缓存;如果只是常规操作指引,才能缓存久一点。更稳妥的做法是缓存命中后仍然做一次权限校验,确保用户有权限看到那条内容,而不是因为缓存了结果就绕过了权限。
4.3 模型与 Prompt 治理:把玄学变成工程
Prompt 本质上是一段高敏感配置,它直接决定模型输出风格和安全边界。我看到不少团队直接在线上改 Prompt,改完也不记录,过了一个月发现输出质量下降了,谁也说不清是哪次改动引起的。这是很典型的治理缺失。
Prompt 必须像代码一样管理。开发环境、测试环境、生产环境要分开,不能拿生产环境做实验;每一版 Prompt 都要有版本号和变更说明;上线前跑一遍评测集,确认没有关键场景退化。更细一点,可以把 Prompt 模板和用户变量分开存储,模板里只放系统指令,用户相关的内容运行时注入,这样既方便管理,又能避免把用户输入拼接进系统提示词引发注入风险。
模型路由同样需要治理。不能所有请求都往最贵的模型上送,也不能只用一个模型扛全部流量。可以按任务复杂度分流:简单分类任务用便宜的小模型,复杂推理任务用大模型;并给每个模型设置独立的并发和配额,防止某个场景刷爆预算导致全平台不可用。评测集也要定期扩充,把线上翻过车的案例加进去,下次改 Prompt 前先跑一遍,避免同一个坑踩两次。
4.4 可观测性与成本治理:每个 Token 都要花得明明白白
智能体系统比传统系统更难排查,因为它多了一层“模型黑盒”。你只知道输入了什么、模型输出了什么,很难判断中间发生了什么。所以可观测性不能只停留在调用链路的层面,要把智能体的思考过程留痕。
具体做法是给每次请求生成全局 Trace ID,从用户的原始问题开始,到编排层的意图识别、知识检索结果、工具调用日志、最终 Prompt 内容、模型返回结果、Token 消耗,全部串联起来。日志里至少记清楚:用户 ID、会话 ID、租户 ID、模型名称、输入 Token 数、输出 Token 数、耗时、是否命中缓存、调用了哪些工具。
成本治理要在指标告警上下功工夫。按租户、部门、业务场景统计 Token 消耗和调用次数,设置每日预算和阈值告警。如果某一天销售智能体的 Token 消耗突然翻了三倍,必须能立刻定位到是哪个 Prompt 变更、哪个用户刷了量,还是某个恶意脚本在调用。没有成本治理,省下来的模型钱很容易在一次失控调用中被烧掉。
5. 一套可复制的智能体平台落地清单
5.1 架构选型:结合企业体量定方案
如果你只是几十人的团队,想让智能体先跑起来,不需要一上来就造微服务轮子。直接用一个单体应用,底层接 Dify 这类智能体平台,快速搭建一个内部知识助手即可。Dify 负责编排、知识库、Prompt 管理,你只需要把用户系统和鉴权对接进去,很多治理能力平台自带,省下大量开发成本。
如果已经是上百人使用、有多个业务部门接入,单体架构很快会在并发和组织协作上成为瓶颈。这时要把 LLM 网关、编排服务、工具执行器、知识检索服务拆开独立部署,中间用消息队列异步解耦。有 Spring Cloud 技术栈的公司,可以把智能体编排服务作为独立微服务注册到现有体系里,复用已有的网关、配置中心、监控链路。选型优先级永远是“先解决当前问题,再留出演进空间”,不要为了架构而架构。
5.2 隔离清单:上线前逐项打勾
下面这张表可以直接拿去当上线前的隔离检查清单。每项做完打勾,缺一项都不要轻易开生产流量。
| 隔离维度 | 落地动作 | 检查点 |
|---|---|---|
| 运行环境 | 编排、工具、网关拆容器部署 | 任意容器重启不影响其他模块 |
| Python 依赖 | 项目级虚拟环境/容器锁版本 | 新机器 clone 后可复现环境 |
| 多租户数据 | 向量库分 Collection,缓存 Key 带租户 ID | 租户间检索结果完全隔离 |
| 工具权限 | 每个工具独立授权,参数白名单校验 | 普通用户不能调用管理类工具 |
| 上下文隔离 | 会话级内存池,任务间不共享输出 | 会话 B 看不到会话 A 的工具结果 |
| 模型调用 | 统一 LLM 网关,Key/配额/限流 | 上游模型故障时可自动降级 |
| 缓存隔离 | 缓存命名空间按模块/租户/版本划分 | 不同版本缓存不互相污染 |
5.3 集成清单
集成这块最容易在细节上翻车,按这张表逐项落实,可以少踩一半坑。
| 集成对象 | 推荐方案 | 注意事项 |
|---|---|---|
| 业务系统 API | REST/gRPC 走 API 网关 | 统一鉴权、限流、超时熔断 |
| 耗时任务 | 消息队列异步化 | 保证消息幂等,带任务 ID |
| 知识库 | RAG 数据管道 | 先清洗后入库,索引带版本号 |
| 前端页面/桌面端 | Open WebUI / pywebview + Vue3 | 权限边界要控制好 |
| IDE/设计工具 | 集成 Codex、Figma、Trae | 数据出域前脱敏 |
| CI/CD | GitLab CI + SonarQube | Prompt 和代码一起版本化 |
| 日志监控 | Logstash 自定义插件接入 | 全链路 Trace ID 贯穿 |
5.4 治理清单
| 治理项 | 落地动作 | 建议指标 |
|---|---|---|
| 知识源治理 | 数据源登记、清洗、质量校验 | 知识库更新周期 <= 1 天 |
| Prompt 治理 | 版本管理、环境隔离、回归测试 | Prompt 上线前评测通过率 |
| 缓存治理 | 防穿透、防击穿、防雪崩 | 缓存命中率 >= 70% |
| 可观测性 | 日志、指标、Trace 三件套 | 请求失败率、P95 延迟 |
| 成本治理 | 按租户/场景配额、告警 | 每日 Token 消耗波动 < 20% |
6. 常见问题与排查经验
6.1 智能体“胡言乱语”、上下文污染怎么办
如果你发现智能体答非所问,先不要急着调 Prompt。我遇到最多的原因,是上一轮工具返回的内容被错误地保留到了下一轮对话里。举例来说,第一轮用户让 Agent 查询订单,第二轮问“现在的天气怎么样”,模型却把订单号也带进了天气查询参数。排查方式很简单,把 Trace 日志打开,看每次请求实际进入模型的消息列表,确认哪些是系统提示、哪些是历史会话、哪些是工具输出。修复方法是会话级隔离,每轮任务结束后只保留必要的摘要,不要把原始工具输出无脑塞回上下文。
6.2 多租户之间越权怎么办
如果用户 A 在查询里能看到用户 B 的数据,优先怀疑两个地方。第一是 RAG 检索时没有过滤租户条件,只是先搜了再过滤,向量检索会把相似内容都捞出来;第二是工具调用时没有把当前用户身份传递给下游接口,让模型自己生成用户 ID。解决办法前面提到过,权限过滤一定要前置,在你还没有开始 Embedding 服务之前,就要把用户可访问的数据范围限定好。
6.3 工具调用不稳定:超时、重试、参数错乱
工具调用是智能体系统里出错率最高的环节。外部接口超时了就无脑重试,结果下游创建了两笔订单;参数传错格式,模型还觉得自己干得挺好。工具执行器里必须统一实现超时控制,超时后先查询任务状态再决定是否重试,而不是盲目重放。同时所有函数参数在进入业务逻辑前过一遍校验,枚举值不在白名单内就直接拒绝。记住,模型是生成文本的,不是生成可信参数的系统。
6.4 缓存命中率低、还有脏数据
缓存命中率低先查 Key 设计。如果你的缓存 Key 里包含了完整用户问题,而用户打字稍微改个词就变成了新的 Key,命中率自然上不去。可以考虑用 Embedding 相似度做语义缓存,相似问题直接命中,但要注意该方案会增加一层向量检索开销。脏数据问题则要关注缓存更新机制,知识库版本更新后,旧的缓存必须按版本号主动淘汰,而不是等 TTL 自然过期。
6.5 环境部署依赖冲突
这个坑在多人协作时几乎必踩。某个同事升级了本地依赖,项目代码没锁版本,结果别人拉下来跑不起来;或者模型 SDK 和向量库客户端版本不兼容。最稳妥的方案是用容器统一开发和生产环境,至少也要用 Poetry 或 uv 锁定依赖版本。如果你在 Windows 上部署 Hermes 等开源智能体,尤其要注意 Python 版本、CUDA 版本、系统依赖三者之间的配对关系,建议先看官方文档的版本矩阵,再动手装环境。
6.6 架构评审时最容易被问的问题
我把平时评审智能体架构时最常被问的几个问题整理在这里,认真回答一遍,对你自己的设计也会有很大帮助:模型服务不可用时,智能体怎么降级?是返回固定兜底话术,还是切换到备用模型。工具调用过程中如果有人故意注入恶意指令,如何发现和阻断?每次改动 Prompt 和知识库之后,如何证明效果没有退化?某个租户消费异常升高时,能否在一分钟内定位到具体会话和请求日志。这些问题的答案,比任何架构图都更能说明你的系统是否真的可落地。我个人做完这轮调研的最大体会是,智能体系统架构并不玄乎,把它当成一个有外部依赖、有不可控输出、需要严格度量的一类分布式系统来设计,很多问题自然就有了答案。先把隔离、集成、治理这三件事做扎实,再谈模型能力,你会省下大量重新返工的时间。