1. 为什么企业需要一个“AI中台”而不是一堆散装智能体
我在过去一年里帮三家公司落地过智能体项目,最大的感受就是:单点智能体好做,成体系的中台难搭。很多团队一开始都是业务部门提需求,技术部门就事论事地做一个问答机器人、一个文档摘要工具、一个客服助手,做完就扔给业务用。三个月后回头看,公司里躺着七八个互不相通的智能体,每个都有一份自己的提示词、自己的知识库、自己的接口封装,维护成本高得离谱,想统一升级模型版本更是灾难。
这就是“AI中台”要解决的核心问题。所谓企业级AI中台,本质上是把智能体的能力供给、编排调度、知识管理、权限审计、效果评估这几件事从各个业务线里抽出来,做成一套公共底座。业务侧只关心“我要解决什么问题”,中台侧负责“用哪个模型、挂哪个知识库、走哪条工作流、留什么审计日志”。
坤擎智能体在这个场景里的定位,是一套面向企业内网的智能体编排与运行框架。它不像某些面向个人用户的平台那样追求开箱即用的花哨功能,而是把重点放在多智能体协同、私有知识接入、行为可审计、接口可复用这几个企业真正在意的点上。我这次要分享的,就是怎么用它从零搭出一套能扛住真实业务流量的AI中台。
这套东西适合谁参考?如果你是企业内部的AI平台负责人、技术团队的架构师,或者正在从“做demo”转向“做产品”的智能体开发者,那这篇内容会对你有直接帮助。如果你只是想快速搭个聊天机器人玩玩,那可能有些重了。下面我按实际搭建顺序,把每个环节的思考、参数、坑点都摊开讲。
2. 中台整体架构设计与核心选型逻辑
2.1 四层架构的划分依据
我最终落地的架构分成四层,从上到下依次是接入层、编排层、能力层、数据层。这个划分不是拍脑袋来的,而是根据企业里三类典型角色的诉求倒推的。
业务人员只关心接入层——他们通过企业微信、内部OA、网页门户来用智能体,不关心后面怎么跑。AI工程师关心编排层——他们需要可视化地拖拽工作流、配置多智能体协作规则、调试提示词。运维和安全团队关心能力层和数据层——模型部署在哪、知识库怎么隔离、调用日志存多久、敏感词怎么过滤。
注意:很多团队一上来就把四层揉在一起做,结果业务改一个提示词要动整个服务,运维想加一个审计规则又得改业务代码。分层不是为了好看,是为了让变更的影响面可控。
坤擎智能体本身提供了编排层和能力层的大部分能力,接入层和数据层需要根据企业实际情况做适配。我选择它而不是从零用Python写框架,核心原因是多智能体协同的调度逻辑如果自己实现,光状态管理和错误重试就能吃掉两个月工期,而它内置了基于消息队列的智能体间通信机制,省掉了大量底层工作。
2.2 模型选型的取舍:不是越大越好
企业级场景下,模型选型要考虑三个维度:效果、成本、可控性。我实测下来,把全部请求都打到最大的通用模型上,成本会失控,而且很多内部问答场景根本不需要那么强的推理能力。
我的策略是分级路由:简单意图识别和分类任务走小参数模型,复杂推理和长文档理解走大参数模型,涉及内部敏感数据的请求走私有化部署的模型。坤擎智能体支持在编排层配置模型路由规则,我设置的条件是:请求token数小于500且意图标签为“查询类”的走小模型,其余走大模型。
这里有个参数计算过程值得展开。假设企业每天有10000次智能体调用,平均每次输入800token、输出300token。如果全部走大模型,按某主流模型每百万token输入2元、输出8元计算,日成本约为 10000×(800×2+300×8)/1000000 = 40元。如果60%的请求路由到小模型(成本约为大模型的十分之一),日成本降到约 4000×0.0016 + 6000×0.004 = 6.4+24 = 30.4元。看起来差距不大,但乘以365天和多个业务线,一年能省下一笔可观的预算。
2.3 知识库的隔离策略
企业里不同部门的知识库必须隔离,这是硬要求。财务部的报销政策不能让销售部的人随便查到,HR的薪酬文档更不能对全员开放。坤擎智能体支持知识库级别的权限绑定,我的做法是每个部门建独立知识库,然后在智能体编排时通过用户身份标签动态挂载对应的知识库。
具体实现上,接入层在转发请求时会带上用户的部门ID和角色标签,编排层根据这些标签选择知识库连接器。这里有个细节:不要用同一个向量库实例存所有部门的数据再用元数据过滤,因为一旦过滤条件写错就会造成越权。物理隔离虽然多占一些存储,但安全边界清晰得多。
3. 核心模块的实操搭建过程
3.1 环境准备与基础服务部署
先说硬件和基础软件。我这次搭建用的是三台服务器:一台8核16G的跑坤擎智能体主服务,一台16核32G带一张推理卡的跑私有化模型,一台8核16G的跑向量数据库和关系型数据库。如果企业已经有K8s集群,可以直接容器化部署,但要注意推理卡所在的节点需要配置设备插件,否则容器里识别不到。
部署顺序很重要,我踩过一次坑:先启动了智能体主服务,结果它连不上向量库,启动脚本直接报错退出。正确的顺序是:
- 先部署关系型数据库(我用的是PostgreSQL 14),建好元数据库和审计日志库。
- 再部署向量数据库(我用的是Milvus 2.3),建好各个部门的知识库集合。
- 然后部署私有化模型服务,确认推理接口能正常返回。
- 最后启动坤擎智能体主服务,在配置文件里填入前三步的连接信息。
配置文件里有个参数叫agent_concurrency,控制同时运行的智能体实例数。我一开始设成50,结果服务器CPU直接打满。后来根据8核的配置,改成CPU核数 × 2即16,运行就平稳了。这个参数不是越大越好,每个智能体实例都会占用独立的内存空间,设太大反而会触发OOM。
3.2 多智能体工作流的编排细节
中台里最核心的编排场景是“路由智能体 + 专业智能体”的组合。用户的问题先进入路由智能体,它负责判断意图,然后分发给对应的专业智能体处理。比如“帮我查一下上个月的报销进度”会路由到财务智能体,“这个合同的付款条款是什么”会路由到法务智能体。
在坤擎智能体里配置这个流程,需要定义三个东西:路由规则、智能体间的消息格式、异常兜底策略。路由规则我建议用“意图分类 + 关键词匹配”的双重机制,纯靠模型分类有时候会把“报销”误判成“报表查询”。关键词匹配作为兜底,命中“报销”“发票”“差旅”等词时强制路由到财务智能体。
消息格式方面,我定义了一个统一的JSON结构:
{ "session_id": "会话唯一标识", "user_id": "用户ID", "department": "部门标签", "query": "用户原始问题", "intent": "路由后的意图标签", "context": "多轮对话上下文", "timestamp": "请求时间戳" }这个结构看起来简单,但session_id和user_id是审计追溯的关键。没有这两个字段,出了问题根本查不到是谁在什么时候触发了什么操作。
异常兜底策略我配了两层:第一层是专业智能体处理超时(我设的15秒),超时后返回“正在处理中,请稍后重试”;第二层是专业智能体返回错误,路由智能体捕获后转给一个通用的“兜底智能体”,它用大模型直接回答,保证用户不会收到空白响应。
3.3 知识库接入与检索参数调优
知识库接入不是把文档扔进去就完事了。我实测下来,文档切分策略对检索效果的影响超过50%。坤擎智能体默认的切分是固定长度512token,但企业文档里有很多表格和条款,固定切分会把一条完整的报销规则切成两半,检索时只能召回半条,回答就不完整。
我的做法是按文档结构切分:Markdown文档按标题层级切,PDF文档先转成结构化文本再按段落切,表格单独抽出来做结构化存储。切分后的块大小控制在256到512token之间,块与块之间保留50token的重叠,避免边界信息丢失。
检索参数方面,我调整了三个值:top_k从默认的5改成8,score_threshold从0.7降到0.6,rerank开启。为什么这么调?因为企业问答场景下,召回不足比召回噪声的代价更高。用户问“年假怎么算”,如果只召回5条,可能漏掉那条关键的“入职满一年后按比例折算”的规则。降到0.6并开启重排序后,前8条里基本能覆盖完整答案,重排序再把最相关的排到前面。
提示:每次调整检索参数后,一定要用一批真实问题做回归测试。我维护了一个包含200个典型问题的测试集,每次调参后跑一遍,看召回率和准确率的变化。没有测试集的调参就是盲调。
3.4 审计日志与行为追溯的实现
企业级中台和玩具项目最大的区别之一就是审计能力。坤擎智能体提供了调用日志的输出接口,但默认只记录时间、耗时、状态码这些基础信息。要满足企业审计要求,需要额外记录:谁问的、问了什么、智能体答了什么、用了哪个知识库、命中了哪些文档片段。
我在编排层加了一个审计拦截器,在每个智能体处理前后各打一个日志点。日志写入PostgreSQL的审计表,表结构包含session_id、user_id、query_text、response_text、knowledge_base_id、retrieved_chunks、model_name、latency_ms、created_at这些字段。
这里有个性能考量:审计日志不能同步写,否则每次问答都要等数据库写入完成,延迟会增加几十毫秒。我的做法是写到一个内存队列,后台起一个消费者批量写入,每100条或每5秒刷一次。这样对主流程的影响可以忽略不计。
审计日志的保留策略也要提前定。我设的是热数据保留3个月,冷数据归档到对象存储保留1年。超过1年的直接删除,因为存储成本会随时间线性增长,而实际需要追溯1年以上记录的场景极少。
4. 性能调优与稳定性保障
4.1 并发压力下的瓶颈定位
中台上线后第一个月,我遇到过一次典型的性能问题:下午两点到四点之间,智能体响应时间从平均1.2秒飙升到8秒以上。排查过程分享出来,因为这类问题在企业场景里很常见。
第一步看监控,发现CPU和内存都正常,但向量数据库的查询延迟从20ms涨到了600ms。第二步看向量库的监控,发现这个时间段内查询QPS从50涨到了400。第三步定位原因:销售部门在这个时间段集中使用合同查询功能,每次查询会触发多次向量检索(因为要对比多个合同模板)。
解决方案有两个方向:降低查询次数和提升查询吞吐。我两个都做了。降低查询次数方面,在编排层加了一个缓存层,相同的query在5分钟内直接返回缓存结果,不再走向量检索。提升吞吐方面,给向量库增加了两个查询节点做负载均衡。
调优后,同样的并发压力下,向量库查询延迟稳定在50ms以内,整体响应时间回到1.5秒左右。这里的关键经验是:不要只看智能体主服务的指标,要把整条链路上的每个组件都纳入监控。瓶颈往往不在你以为的地方。
4.2 模型服务的降级与熔断
私有化模型服务偶尔会因为显存不足或请求排队导致超时。如果没有降级机制,用户就会一直等,体验很差。我在编排层配了熔断规则:连续10次调用模型服务失败或超时,自动切换到备用模型(我备了一个云端API作为兜底),同时发告警通知运维。
熔断的恢复策略是半开模式:切换后每30秒尝试一次主模型服务,如果连续3次成功就切回主模型。这个策略避免了主模型服务刚恢复就被大量请求打挂的情况。
注意:备用模型和主模型的输出格式可能不一致,需要在编排层做一层适配。我遇到过备用模型返回的JSON字段名和主模型不同,导致下游解析失败。后来加了一个格式归一化模块,把不同模型的输出统一成标准结构。
4.3 灰度发布与版本回滚
智能体的提示词和工作流经常需要迭代,但不能直接全量发布,万一新版本效果变差会影响所有用户。我的做法是按用户ID哈希做灰度:先放5%的流量到新版本,观察24小时的关键指标(回答准确率、用户满意度、平均耗时),没问题再逐步扩大到20%、50%、100%。
坤擎智能体支持多版本工作流并存,通过路由规则指定不同版本接收的流量比例。回滚也很简单,把流量比例调回旧版本即可,不需要重新部署。这个机制让我在迭代时心里有底,敢于尝试新的提示词策略。
5. 常见问题排查与避坑经验
5.1 智能体“答非所问”的排查路径
这是最高频的问题。用户问A,智能体答B。排查要按顺序走:
| 排查步骤 | 检查内容 | 常见原因 |
|---|---|---|
| 第一步 | 路由意图是否正确 | 路由规则太宽泛,把A误判成B |
| 第二步 | 知识库是否召回相关文档 | 切分策略不合理,关键信息被切散 |
| 第三步 | 检索结果是否被正确排序 | 重排序模型效果差或未开启 |
| 第四步 | 提示词是否包含足够约束 | 提示词太笼统,模型自由发挥 |
| 第五步 | 模型是否产生幻觉 | 知识库没有相关内容但模型强行回答 |
我遇到最多的是第二步和第五步。第二步的解法是优化切分策略,第五步的解法是在提示词里加一句“如果知识库中没有相关信息,请明确告知用户无法回答,不要编造”。这句话看起来简单,但能减少80%以上的幻觉回答。
5.2 多轮对话上下文丢失
多轮对话场景下,用户第二句问“那它的截止日期呢”,智能体需要知道“它”指的是上一句里的哪个东西。坤擎智能体默认会携带最近5轮对话作为上下文,但如果对话轮次多、每轮内容长,上下文会超出模型的token限制。
我的处理方式是滑动窗口 + 摘要压缩:保留最近3轮的完整对话,更早的对话用一个小模型压缩成一句话摘要。这样既保留了关键信息,又控制了token消耗。摘要的提示词是“用一句话概括以下对话的核心信息,保留实体名称和时间”。
5.3 知识库更新后的生效延迟
企业文档经常更新,但更新后智能体不会立刻用上新内容。原因是向量库的索引重建需要时间。我的做法是双索引切换:新文档先写入备用索引,重建完成后原子切换主索引指针。这样更新期间查询不受影响,切换后新内容立即生效。
索引重建的频率我控制在每天一次,凌晨低峰期执行。如果某个部门有紧急更新需求,可以手动触发单次重建。这里要注意,重建期间不要删除旧索引,万一新索引有问题可以快速回滚。
5.4 权限越界的防范
前面提到知识库要物理隔离,但还有一个容易忽略的点:智能体的调用权限。有些智能体只能被特定角色调用,比如薪酬查询智能体只允许HR部门使用。我在编排层加了一个权限校验节点,根据用户角色标签判断是否有权调用目标智能体,无权则返回“您没有权限使用该功能”。
这个校验必须在服务端做,不能依赖前端隐藏入口。我做过一次安全测试,直接构造请求绕过前端调用薪酬智能体,结果被服务端的权限校验拦住了。如果没做这层校验,就是一个严重的安全漏洞。
6. 中台后续扩展的几个方向
这套中台跑稳之后,我陆续加了一些扩展能力,这里挑三个最有价值的说说。
第一个是效果自动评估。我建了一个评估流水线,每天随机抽取100条真实问答,用另一个模型对回答质量打分(相关性、完整性、准确性三个维度),低于阈值的自动标记出来人工复核。这样不用等用户投诉就能发现效果退化。
第二个是智能体市场。把各个部门做好的智能体统一注册到中台,其他部门可以申请复用。比如法务做的合同审查智能体,采购部门申请后挂上自己的知识库就能用。这大大减少了重复建设。
第三个是成本分摊报表。按部门统计智能体调用量和token消耗,每月出一份报表。有了这个数据,各部门在申请新智能体时会更理性,也会主动优化自己的提示词来降低消耗。
我在实际运维中还发现一个有意思的现象:中台上线半年后,业务部门自己提出的智能体需求质量明显提高了。因为他们逐渐理解了智能体能做什么、不能做什么,提需求时会带上具体的场景描述和预期效果,而不是笼统地说“做个AI助手”。这可能是中台带来的一个隐性收益——它不只是技术底座,也在潜移默化地提升整个组织的AI素养。