1. 企业级 LLM 落地,先想清楚“企业级”三个字到底意味着什么
这两年跟不少团队聊过大模型落地的事,一个很明显的感受是:个人玩 LLM 和企业上 LLM,完全是两码事。个人场景里,你调个 API、写个提示词、跑通一个 demo,就算成功了;但企业场景里,demo 跑通只是万里长征第一步,后面还有权限、审计、成本、稳定性、数据隔离、模型版本管理一大堆事等着你。所以当我看到“企业级 LLM”这个标题时,第一反应不是“怎么调模型”,而是“怎么把模型变成一套能被组织长期依赖的基础设施”。
这篇内容我想聊的是企业级 LLM 的整体设计思路和落地要点,不是某个单点技巧。适合谁看?如果你正在负责公司内部的大模型平台建设,或者你是一个技术负责人,正在评估“我们到底要不要自建 LLM 能力、怎么建、建到什么程度”,那这篇会比较对路。如果你只是想调个 API 做个聊天机器人,那这篇可能偏重了,但里面关于成本控制、评测、网关设计的部分,你也能拿走直接用。
先把核心关键词摆出来:企业级 LLM、LLM 网关、RAG、知识库、Agent 平台、模型评测、成本治理。这几个词基本构成了企业级 LLM 的骨架。下面我会按“整体设计思路 → 核心组件拆解 → 实操落地 → 问题排查”这个顺序展开,中间会穿插我自己踩过的坑和一些不太会在官方文档里写出来的经验。
2. 企业级 LLM 的整体架构设计思路
2.1 为什么不能直接“调 API 就完事”
很多团队一开始的做法是:业务系统里直接嵌一个模型厂商的 SDK,需要的时候调一下。这个做法在 POC 阶段没问题,但一旦铺开到多个业务线,问题就来了。我见过最典型的情况是,三个部门各自接了不同的模型厂商,各自维护自己的 API Key,结果月底账单出来没人说得清钱花在哪;更麻烦的是,某个部门把敏感数据直接发给了外部模型,安全部门事后才知道。
企业级 LLM 的核心诉求,说白了就是四个字:可控、可管。可控是指输出质量可控、成本可控、数据流向可控;可管是指权限可管、版本可管、审计可管。要做到这两点,你就不能把模型调用散落在各个业务系统里,必须有一个统一的入口层,也就是通常说的LLM 网关。
网关这层东西,看起来只是“转发请求”,但它是整个企业级 LLM 体系的地基。所有请求从这里过,你才能在这里做鉴权、限流、计费、日志、路由、降级。没有这层,后面所有的治理都是空谈。
2.2 分层架构:把职责切干净
我比较推荐的分层方式是这样的,从上到下:
- 应用层:各个业务系统、内部工具、Agent 应用。它们不直接碰模型,只调用统一的服务接口。
- 编排层:负责 RAG 检索、Agent 调度、提示词模板管理、多轮对话状态管理。这一层是“业务逻辑”和“模型能力”的粘合层。
- 网关层:统一入口,做鉴权、限流、路由、计费、日志、缓存。
- 模型层:实际的大模型服务,可能是外部 API,也可能是本地部署的开源模型。
- 基础设施层:向量数据库、对象存储、监控告警、配置中心。
这么分的好处是,每一层的变更不会互相污染。比如你想换一个模型厂商,只需要改网关层的路由配置,上层业务完全无感;你想调整 RAG 的检索策略,只动编排层,不影响网关的限流逻辑。我见过一些团队把所有逻辑揉在一起,结果换个模型要改十几个地方,这种架构在 POC 阶段能跑,但撑不过半年。
2.3 模型选型:不是越贵越好,也不是越新越好
企业级场景下选模型,我的经验是看三个维度:能力、成本、可控性。
能力不用多说,但要注意一点:不要只看公开榜单。榜单上的分数和你的实际业务场景往往差很远。正确做法是拿你自己的业务数据做评测集,跑一遍再决定。我见过一个团队迷信某榜单第一的模型,结果在自己的合同审核场景里,效果还不如一个中等规模的模型,因为那个大模型对中文法律术语的理解反而不如专门微调过的小模型。
成本这块要算总账。不只是 token 单价,还要算上重试、缓存命中率、并发峰值带来的额外开销。一个单价便宜但经常需要重试的模型,总成本可能比单价贵但一次成功的模型更高。
可控性是最容易被忽略的。外部 API 模型,你控制不了它的版本更新,厂商某天悄悄升级了模型,你的输出格式可能就变了。所以企业级场景里,我一般建议至少保留一个本地部署的开源模型作为兜底,关键业务走本地,非关键业务走外部 API。
3. LLM 网关:企业级落地的第一块硬骨头
3.1 网关到底要做什么
很多人以为网关就是个反向代理,其实远不止。一个合格的企业级 LLM 网关,至少要承担这些职责:
| 职责 | 说明 | 不做会怎样 |
|---|---|---|
| 鉴权 | 校验调用方身份,区分业务线 | 谁都能调,账单和安全都失控 |
| 限流 | 按业务线、按用户控制 QPS 和 token 消耗 | 一个业务把额度跑光,其他人干瞪眼 |
| 路由 | 根据请求特征分发到不同模型 | 无法做灰度、无法做降级 |
| 计费 | 记录每次调用的 token 消耗和成本 | 月底算不清账 |
| 日志审计 | 记录请求和响应,支持追溯 | 出问题查不到原因 |
| 缓存 | 相同请求命中缓存,省成本 | 重复问题反复烧钱 |
| 降级 | 主模型不可用时切备用模型 | 单点故障拖垮全站 |
这张表里的每一项,都是我在实际项目里见过因为缺失而翻车的地方。尤其是限流和缓存,看起来不起眼,但省下来的钱是实打实的。
3.2 路由策略的设计细节
路由不是简单的“A 请求发给模型 1,B 请求发给模型 2”。企业级场景下,路由策略通常要综合考虑几个因素:
第一是业务优先级。核心业务走稳定、能力强的模型,边缘业务走便宜的模型。这个映射关系最好配置化,不要写死在代码里。
第二是请求特征。比如短文本分类任务,用小模型就够了;长文档理解,才需要上大模型。按输入长度和任务类型做路由,能省下大量成本。
第三是模型健康度。网关要实时探测各个模型服务的可用性和延迟,某个模型响应变慢或报错率上升,自动把流量切走。这个机制在外部 API 场景下尤其重要,因为你对厂商的服务状态是没有控制权的。
第四是灰度能力。新模型上线,先放 5% 的流量进去,观察输出质量和成本,没问题再逐步放大。没有灰度能力,你每次换模型都是一次全量赌博。
3.3 缓存设计:省钱的隐藏大招
LLM 调用的缓存和普通 HTTP 缓存不一样,因为同样的输入,模型输出可能不完全一致。所以缓存策略要分场景:
对于确定性任务,比如信息抽取、分类、格式转换,同样的输入应该得到同样的输出,这种可以直接做精确匹配缓存,命中率往往很高。我做过一个项目,内部知识问答的重复问题比例超过 30%,加上缓存之后成本直接降了三分之一。
对于生成性任务,比如文案写作、对话,缓存的价值在于语义相似匹配。用户问“怎么申请报销”和“报销流程是什么”,语义上是一回事,可以用向量相似度做缓存。但这个要小心,相似度阈值设太高会漏,设太低会返回不相关的答案。我的经验是阈值设在 0.92 到 0.95 之间比较稳,具体还要拿业务数据调。
注意:缓存 key 的设计要考虑模型版本。同一个问题,模型升级后答案可能变了,如果缓存 key 里不带模型版本,你会一直返回旧答案。
4. RAG 与知识库:企业级 LLM 的“外挂大脑”
4.1 为什么企业场景离不开 RAG
大模型本身的知识是训练时固化的,它不知道你公司的内部制度、产品文档、客户数据。企业级场景下,大量问题都需要结合私有知识来回答,这就是 RAG(检索增强生成)的价值。
RAG 的基本流程是:用户提问 → 检索相关文档片段 → 把片段和问题一起塞给模型 → 模型基于片段生成答案。听起来简单,但实际落地时,检索质量往往决定了整个系统的上限。模型再强,检索回来的东西不对,答案就是错的。
4.2 文档切分:最容易被低估的环节
我见过太多团队在文档切分上偷懒,直接按固定字数切,结果切出来的片段语义不完整,检索效果一塌糊涂。文档切分要按文档结构来:
- 对于结构化文档(如制度文件、产品手册),按章节、条款切,保持语义单元完整。
- 对于半结构化文档(如 FAQ、表格),按问答对或表格行切。
- 对于非结构化文档(如会议纪要、邮件),按段落切,但要注意合并过短的段落。
切分粒度也要权衡。切得太细,检索精度高但上下文不足;切得太粗,上下文完整但噪声多。我的经验是每个片段控制在 300 到 800 字之间,同时保留一定的重叠(overlap),避免关键信息正好被切断。
4.3 检索策略:从向量检索到混合检索
纯向量检索的问题在于,它对关键词的精确匹配能力弱。比如用户搜一个产品型号“XZ-2000”,向量检索可能返回一堆语义相似但型号不对的文档。所以企业级场景下,我一般推荐混合检索:向量检索 + 关键词检索(BM25),两路结果融合排序。
融合排序可以用 RRF(Reciprocal Rank Fusion)这类算法,简单有效。如果业务对精度要求更高,可以再加一个重排序模型(rerank),对初筛结果做精排。重排序模型通常比生成模型小很多,成本可控,但效果提升明显。
4.4 知识库的更新与版本管理
企业知识是不断变化的,制度会修订,产品会迭代。知识库如果不能及时更新,RAG 就会给出过时的答案,这比不回答还糟糕。
我的做法是给知识库加一套版本管理机制:每个文档片段带上生效时间和失效时间,检索时只返回当前有效的片段。文档更新时,不是直接覆盖,而是新增一个版本,旧版本标记失效。这样既能保证答案时效性,又能追溯历史。
另外,知识库的更新最好和业务系统的发布流程打通。比如产品文档更新了,自动触发知识库重建索引,而不是靠人工记得去手动更新。
5. Agent 平台:从“问答”到“干活”
5.1 Agent 和普通 LLM 应用的区别
普通 LLM 应用是“你问我答”,Agent 是“你给目标,我自己想办法完成”。企业级场景下,Agent 的价值在于能调用工具、执行多步任务。比如“帮我查一下上个月的销售数据并生成报告”,这就不是一个问答能解决的,需要 Agent 去查数据库、调分析工具、生成文档。
Agent 的核心组件包括:规划(Planning)、工具调用(Tool Use)、记忆(Memory)、执行(Execution)。规划负责把大目标拆成小步骤,工具调用负责和外部系统交互,记忆负责保存上下文和历史,执行负责实际落地。
5.2 工具调用的安全边界
Agent 能调工具,就意味着它能产生实际影响。这在企业场景下是双刃剑。我见过一个案例,Agent 被授权调用工单系统,结果因为提示词没写好,它批量创建了几百个无效工单,把运维团队搞崩溃了。
所以工具调用必须设安全边界:
- 权限最小化:Agent 只能调用完成当前任务必需的工具,不能给它全量权限。
- 操作确认:涉及写操作(创建、修改、删除)的,必须有人工确认环节,或者至少要有二次校验。
- 频率限制:单个 Agent 会话内的工具调用次数要有上限,防止失控。
- 审计日志:每次工具调用都要记录,包括调用方、参数、结果,方便事后追溯。
5.3 多 Agent 协作的坑
有些复杂任务需要多个 Agent 协作,比如一个负责检索,一个负责分析,一个负责生成。这个思路是对的,但实现起来坑不少。
最大的坑是通信开销。Agent 之间传递信息,如果每次都把完整上下文传过去,token 消耗会爆炸。我的做法是只传必要的摘要信息,完整上下文放在共享存储里,Agent 按需读取。
第二个坑是死循环。两个 Agent 互相等待对方输出,或者一个 Agent 反复调用同一个工具,都会导致任务卡死。所以要设超时和最大步数限制,超了就中断并上报。
第三个坑是责任不清。任务失败了,到底是哪个 Agent 的问题?所以每个 Agent 的输出都要有明确的格式约定和校验规则,方便定位问题。
6. 模型评测与成本治理:让 LLM 用得起、用得久
6.1 建立自己的评测集
公开榜单只能做初筛,真正决定模型选型的,是你自己的业务评测集。评测集的构建要覆盖:
- 典型场景:业务里最高频的问题类型。
- 边界场景:容易出错的、模糊的、有歧义的输入。
- 对抗场景:故意诱导模型出错的输入,测试安全性。
评测指标不能只看准确率,还要看格式合规率(输出是否符合预期格式)、拒答率(该拒答的有没有拒答)、延迟、成本。我一般会做一个加权评分,不同业务线权重不同。
评测集要持续维护,每次模型升级、提示词调整,都跑一遍回归测试。没有评测集,你的每次优化都是盲人摸象。
6.2 成本治理的实操手段
成本治理不是简单地“少调模型”,而是让每一分钱花得值。几个实操手段:
第一,分级调用。不是所有请求都需要大模型。简单意图识别用小模型,复杂推理才用大模型。这个分级逻辑放在网关层做。
第二,提示词压缩。很多提示词里塞了大量冗余信息,压缩后 token 能省 20% 到 40%。但压缩要小心,别把关键指令压没了,压完要跑评测验证。
第三,输出长度控制。给模型设 max_tokens 上限,防止它啰嗦。同时用提示词引导它简洁回答,比如“用三句话以内回答”。
第四,缓存复用。前面说过的缓存,这里再强调一次,它是成本治理里投入产出比最高的手段。
第五,预算告警。给每个业务线设月度预算,用到 80% 就告警,用到 100% 就限流。这个机制能防止某个业务线失控烧钱。
6.3 成本监控看板
成本要可视化,不然没人有感知。我一般会做一个看板,按业务线、按模型、按天展示 token 消耗和费用。看板上还要有环比和同比,方便发现异常。比如某个业务线突然用量翻倍,要么是业务增长,要么是出了 bug 在死循环调用,看板上一眼就能看出来。
7. 常见问题与排查技巧实录
7.1 输出格式不稳定怎么办
这是最高频的问题。模型有时候返回 JSON,有时候返回带 markdown 代码块的 JSON,有时候还加一句“好的,以下是结果”。解决办法:
- 提示词里明确要求“只输出 JSON,不要任何其他文字”。
- 用结构化输出能力(如果模型支持 function calling 或 JSON mode)。
- 在网关层加一个输出解析和修复层,对常见格式问题做容错处理。
- 实在不行,加一个小的校验模型,专门做格式修正。
7.2 模型响应变慢怎么排查
响应变慢可能的原因很多,排查顺序建议是:
- 先看是不是所有请求都慢,还是特定请求慢。特定请求慢,可能是输入太长。
- 看是不是特定时间段慢,可能是并发高峰。
- 看是不是特定模型慢,可能是厂商侧的问题。
- 看网关到模型的网络延迟,排除网络因素。
- 看是不是重试导致的,重试会放大延迟。
7.3 常见问题速查表
| 问题现象 | 可能原因 | 排查方向 |
|---|---|---|
| 输出格式错乱 | 提示词不明确、模型不支持结构化输出 | 检查提示词、启用 JSON mode |
| 响应超时 | 输入过长、并发过高、模型侧故障 | 检查输入长度、限流配置、模型健康度 |
| 成本异常升高 | 缓存失效、死循环调用、业务量增长 | 检查缓存命中率、调用日志、业务数据 |
| 答案不准确 | 检索质量差、提示词有歧义、模型能力不足 | 检查检索结果、优化提示词、换模型评测 |
| 敏感信息泄露 | 输入未脱敏、输出未过滤 | 加输入脱敏、输出过滤层 |
7.4 几个我踩过的坑
第一个坑是过度依赖单一模型。早期我们所有业务都走一个模型,结果那个模型厂商某天出了故障,全站瘫痪。后来改成多模型路由,主备切换,才稳下来。
第二个坑是忽略提示词的版本管理。提示词改了没记录,出了问题不知道是哪个版本导致的。后来我们把提示词也纳入版本控制,每次变更都有记录和回滚能力。
第三个坑是评测集和线上数据脱节。评测集里的问题都是精心构造的,线上用户的问法千奇百怪。后来我们定期从线上采样,补充到评测集里,评测结果才更有参考价值。
第四个坑是忽视冷启动。新业务接入时,没有历史数据,缓存命中率低,成本会偏高。这个要有预期,别一上来就按稳态成本做预算。
8. 一些关于团队和流程的经验
技术之外,企业级 LLM 落地还有两个容易被忽略的维度:团队分工和流程规范。
团队上,我建议至少有三类角色:平台工程负责网关、基础设施;算法工程负责模型评测、提示词优化、RAG 调优;业务对接负责理解业务需求、定义评测标准。这三类角色缺一不可,一个人全包在早期可以,但规模上来后必然撑不住。
流程上,最重要的是变更管理。模型升级、提示词修改、知识库更新,都要走变更流程,有评测、有灰度、有回滚。我见过太多团队因为“就改了一句话”而直接上线,结果引发线上事故。LLM 系统的不确定性比传统系统高得多,流程上的严谨是对冲这种不确定性的必要手段。
最后分享一个我个人的体会:企业级 LLM 落地,技术只占一半,另一半是组织和流程。很多项目失败不是因为模型不够强,而是因为没人对结果负责、没有评测标准、没有成本意识。把这些问题想清楚,比追最新的模型重要得多。