写这第5篇技术文章的时候,刚好是55873生态从架构图变成可运行系统的第四周。这套东西的定位很直接:把6+1+3混合模型、四层智能体架构、安全策略编排三者糅在一起,做成一套能交付、能迭代、能出活的AI应用底座。如果你正在为“到底该用哪个模型”“任务怎么分给多个模型”“智能体编排怎么才不会乱”“安全策略怎么落地”这几件事焦虑,这篇基本能给你一套现成的参考答案。这篇文章也不打算把每个知识点铺开讲成教科书,而是站在实操角度,把设计思路、关键细节、部署过程和踩过的坑一次说透。
先交代一下背景。我们团队做AI应用已经有两年多,前两年主要拿单一通用大模型接业务,一开始还行,越往后越顶不住:响应慢、成本高、某些垂直场景效果拉胯、还经常被安全合规卡住上线。后来我们把思路彻底换掉,不再追求“一个大模型搞定一切”,而是做了模型矩阵,配合智能体编排层统一调度,再前置一套安全策略编排,这就是55873生态的由来。整体跑下来,效果比之前单模型方案稳定太多,尤其在高并发和复杂任务场景下的表现,完全不是一个量级。
1. 整体设计思路:混合模型、智能体编排、安全策略为什么必须绑在一起
很多团队做AI应用,习惯把“选模型”当成第一件事,选完模型才开始想后面的业务逻辑。这种做法在Demo阶段没问题,一旦要上线,就会发现模型只是整个系统里的一环,真正的复杂度在模型之外——怎么让多个模型在一条链路上协作,怎么在保证效果的同时控制成本和延迟,怎么让内容安全规则不被绕过。55873生态从一开始就把这三件事当成一个整体来设计,这也是它能落地的根本原因。
1.1 从“单模型打天下”到混合模型矩阵
单模型的瓶颈,用一句话概括就是“不可能三角”。同一个模型,很难同时在效果、速度、成本三个维度上都做到最优。你让最强的70B参数量模型处理所有请求,效果确实好,但响应时间经常让人抓狂,推理服务的成本也扛不住日常全量流量。你换成7B小模型,速度快了不少,但复杂推理和长文本理解的质量又明显下降。
混合模型的思路其实不复杂:把任务按难度和类型分流,难的任务交给大模型,简单的交给小模型,专业的任务交给领域模型。关键是怎么分,以及谁来分。这套体系里,6+1+3一共10个模型协同工作,通过编排层统一路由,而不是让每个模型各自为政。实际跑下来,大部分简单咨询请求都落在小模型上,平均响应时间比单大模型方案下降了接近一倍,成本也节省了一半以上,复杂任务的准确率反而还略有提升。
1.2 四层智能体架构解决编排的失控问题
模型多了以后,第二个问题立刻浮出水面:多个模型之间怎么协同。早期我们试过在业务代码里直接写死调用顺序,比如“先调用A模型,再调用B模型,再把结果拼起来”。这种方式对付两三个模型还行,模型一多,业务逻辑里充满了模型调用代码,改一个环节就要动一片,整个系统像一团乱麻。
四层智能体架构就是用来解决这个问题的。从上到下分成接入感知层、编排决策层、执行工具层、治理审计层,每一层各管一件事。接入感知层负责统一接收请求,编排决策层负责理解意图、拆分任务、选择模型,执行工具层负责真正调用外部能力,治理审计层负责全链路监控和合规审计。层与层之间通过定义好的接口通信,任何一层的改动都不会影响其他层。这套结构的核心价值在于,它把原来散落在业务代码里的“临时编排”变成了一个正式的、可维护的基础设施。
1.3 安全策略为什么必须在设计期就介入
很多团队把内容安全当成上线前的合规检查,产品做完了再套一层过滤词表,结果一上线就出事。只要有人用越狱提示词绕过了检查,或者通过多轮对话把敏感信息拼出来,轻则整改,重则平台被罚。55873生态把安全策略编排提升到与模型和编排平行的位置,原因很简单:安全不是应用层的事,而是整个系统的事。
输入侧要拦截恶意请求,输出侧要防止敏感内容外泄,模型调用之间要考虑权限隔离,所有行为要能追踪审计。这些如果等系统写完再补,等于把地基挖掉重来。我们在这套生态里把安全策略做成了独立引擎,规则可以热更新,并且嵌入到每一层,而不是只在入口挂一道闸。实践证明,这种方式在面对真实攻击时,比单一过滤方案靠谱得多。
2. 6+1+3混合模型体系:模型矩阵的分工逻辑
6+1+3这个组合,不是拍脑袋凑出来的,是经过好几轮业务需求梳理后定下来的模型矩阵。核心思路就一句话:每个模型只干自己擅长的事,然后用总控模型把大家组织起来。
2.1 6个基础模型的角色分配与选型逻辑
6个基础模型,每个都承担一类基础能力。这里我按实际分工列一下,给准备做模型矩阵的同学一个参考:
| 模型 | 定位 | 典型场景 | 选型理由 |
|---|---|---|---|
| 通用对话主力模型 | 复杂对话、多轮交互 | 客服、助手、内容创作 | 语义理解最强,带复杂指令跟随能力 |
| 轻量快速响应模型 | 简单问答、分类打标 | 意图前置判断、短文本回复 | 参数量小、推理快,占机器资源低 |
| 代码与逻辑推理模型 | 代码生成、结构化推理 | 代码审查、SQL生成、重构辅助 | 在代码数据上做了专项训练 |
| 长文本处理模型 | 文档解析、摘要、RAG | 合同分析、报告生成、知识库问答 | 支持更长上下文,检索增强效果稳 |
| 多模态理解模型 | 图像识别、OCR、图表分析 | 单据识别、图片问答 | 支持视觉输入,配合文本理解 |
| 数学推理模型 | 复杂计算、逻辑求解 | 数据计算、公式推导 | 在数学推理任务中表现突出 |
这6个模型的选型逻辑,有一条主线:按任务的认知复杂度排序,认知复杂度高的任务用大模型,低的用轻量模型。比如“今天天气怎么样”这种,直接让轻量模型回答,没必要动用主力模型。而“帮我分析这份合同的潜在风险”就必须走长文本模型和主力模型配合的链路。这里有个容易忽略的点,不同场景的数据分布差异极大,所以选型不能只看公开榜单分数,要在自己业务数据上做评测。我们当时跑了大概半个月的评测,把每个模型在自建数据集上的召回率、准确率、响应延迟和成本都拉出来对比,才最终定下这6个。
2.2 “+1”总控模型:掌控全局的调度核心
“+1”这套体系里指总控模型,也有人叫路由模型或者Orchestrator。它的作用不是直接回答问题,而是理解用户请求的意图,判断这个任务应该给哪个模型,或者在多个模型之间拆分任务流程。可以说,它是整套智能体架构的“大脑”,也是6+1+3能高效运转的关键。
很多人会问,为什么不用规则来做路由,非要再养一个模型?因为真实用户的意图实在太绕了,同样一句“帮我写个邮件,再翻译成英文,顺便看看有没有语法错误”,里面就涉及主力模型和轻量模型两个环节,规则写起来复杂且不好维护。总控模型就灵活得多,它在训练时专门做了意图识别和任务拆解的专项微调,能够把模糊的自然语言请求转化成清晰的任务序列。
总控模型的选择也有讲究。太小的模型意图理解不准,太大又牺牲了响应速度。我们最终选了一个中等规模的模型,做了任务拆解和工具调用的针对性微调。实测下来,它能把编排的准确率稳定在95%以上,自身响应控制在100毫秒级别,这为整条链路留出了足够的时间预算。
2.3 “+3”专用模型:补齐垂直领域的短板
3个专用模型,解决的是“通用模型不够专”的痛点。通用大模型虽然知识面广,但在某些垂直领域缺乏行业深度,输出的内容经不起专业推敲。比如医疗问答,通用的模型可能含糊其辞,而一个用中医药知识图谱和大量诊疗问答数据微调过的专用模型,回答就会规范很多,能给到相对有参考价值的内容。这就是专用模型存在的意义。
我们这套体系里的3个专用模型,分别覆盖了三个业务重点方向:内容安全审查、行业知识问答、图像生成。内容安全审查模型负责语义级的安全判断,能识别出关键词过滤容易绕过的隐晦表达,比如谐音、拆字、隐喻;行业知识问答模型则在垂直场景里做深度回答;图像生成模型专注AI绘画场景,在风格一致性上比通用模型更可控。这里要特别提醒一句,专用模型的微调一定要用高质量的数据集。我们自己构建行业知识问答模型时,整理清洗了几十万条语料,光是去重和过滤低质量内容就花了一周。数据质量直接决定微调效果,这条经验值一万个金币。
3. 四层智能体架构:每一层该怎么设计和落地
这四层架构不是概念模型,每一层都有明确的职责边界、接口规范和运行机制。下面按从外到内的顺序,一层一层拆开讲。
3.1 接入感知层:统一收口所有请求的入口
接入感知层是整个系统的门户,所有外部请求先到这一层。它的核心职责有三个:来源校验、基础解析、访问控制。也就是说,请求到了这一层,先确认调用方有没有权限,再对请求体做格式解析和校验,最后做一次基础的限流。只要这三个步骤有一项不过,请求就不会被放行到后面的编排层。
这一层的设计难点在于“既要收得紧,又要放得开”。收得紧指的是安全校验不能松,放得开指的是不能因为校验太慢而拖累正常请求。我们在这里用了异步处理模式,把请求校验和业务转发完全解耦。身份认证用API Key加上签名校验,限流用令牌桶算法配合动态配额,高峰期主动丢弃超出配额的低优先级请求。实测这套方案能扛住几倍于日常峰值的突发流量,正常情况下新增的校验延迟只有几毫秒,对整体链路的影响可以忽略不计。
3.2 编排决策层:总控模型与任务规划的主战场
这一层是整个四层架构里最核心的环节。前面说的总控模型就在这一层运行。请求经过接入层之后,编排决策层要做的事包括:理解用户的完整意图、判断任务类型、拆分任务步骤、决定调用哪几个模型、以什么顺序调用、每一步需要哪些外部工具。
实际操作中,这一层需要设计一套清晰的“任务协议”。我们从一开始就定了任务状态机,明确每个任务可能的状态,比如待调度、执行中、等待工具结果、已完成、失败、需人工介入。遇到复杂任务时,编排层会把大任务拆成若干个子任务,每个子任务独立进入调度循环。这样的好处是,单个子任务失败时,不需要把整个请求都推翻重来,只需要单独重试失败的部分。我们第一次上线时还没有这套机制,一个中间环节失败,整条链路的活白干,用户端直接拿到一个“服务异常”的报错,体验极差。
调度引擎的选择上,我们没有直接用现成的工作流引擎,而是基于一个轻量化的异步框架自己封装了一层。原因在于现成工作流引擎一般是为确定性流程设计,而智能体编排的流程本身是模型动态决策的,不是预先写死的,灵活性是首要考虑。如果你从零开始做,可以直接用Python的asyncio配合状态机库实现,不需要一上来就上重框架。
3.3 执行工具层:让模型拥有“动手”的能力
模型本身只能“说话”,真正让它干活的是执行工具层。这一层负责把编排决策层调度的任务落实成实际操作,比如调用外部API、读写数据库、执行代码、访问文件系统。用大白话说,编排层是大脑,执行工具层是手和脚。
我们在执行工具层引入了一套工具注册中心,所有可以被模型调用的工具都按统一格式注册,包括工具的输入参数定义、调用方式、超时时间、权限等级。模型需要通过结构化输出的方式声明要调用的工具和参数,执行层解析后调用真实接口,再把结果返回给模型做下一步决策。这套机制就是业界常说的Function Calling,但我们在权限和超时上做了强化,不安全的工具、耗时过长的工具都会被拦截或标记人工审批。
这里要提醒一下,工具调用的结果质量直接决定最终回复的质量。举例来说,模型让你从数据库里查询一个订单状态,工具返回的字段永远是程序自动生成的,格式固定、无歧义,模型只需要直接把结果翻译成用户能看懂的话就行。但如果工具返回信息残缺,模型就只能靠猜,最终回复必然不可靠。所以工具返回的数据结构一定要设计得足够完整,这一步值得花时间打磨。
3.4 治理审计层:可观测性与权限控制的最后一公里
治理审计层是很多团队最后才考虑、甚至完全不考虑的一层,但这恰恰是系统能长期稳定运行的关键。它负责记录整条链路的全量日志,追踪每个请求从进入到返回的完整轨迹,同时做权限的二次校验和性能指标的收集。
我们做了一个叫“链路追踪索引”的东西,每个用户请求在踏入接入层时就生成唯一的会话ID,之后经过的每一层都往上挂载日志。出了一个线上问题,只要搜这个会话ID就能看到完整的时间线,问题在哪一层、哪次调用超时、哪个环节返回了异常内容,一目了然。这个能力在系统初期可能觉得没必要,但一旦进入大流量环境,没有它排错就是大海捞针。治理层的另一个职责是权限控制,不同层级的用户能调用的模型和工具有严格区分,比如普通用户只能调用轻量模型,VIP用户才能用主力模型,内部员工才能访问代码生成工具,这些都是在治理层统一管控的。
4. 安全策略编排:从规则引擎到全链路治理
安全策略编排是整个生态里最不让用户感知、但最能决定系统生死的一层。我把它单独列出来讲,一是因为它足够重要,二是因为它的实现方式和普通的API安全有本质区别。普通API安全管的是“谁能访问”,安全策略编排管的是“模型说了什么、做了什么”,这完全是另一个维度的问题。
4.1 输入侧防护:既防恶意攻击,也防用户误操作
输入侧防护要拦住三类东西:恶意攻击、敏感信息、模型误用。恶意攻击包括提示词注入、身份冒充、越权尝试;敏感信息包括个人隐私数据、公司机密;模型误用包括让模型执行危险操作,比如写钓鱼邮件、生成违规内容。
我们的输入侧防护不是靠单个模块完成的,而是一套组合拳。第一步是基础的规则过滤,用关键词库加正则表达式做第一轮筛查;第二步是模型化检测,让内容安全审查模型对文本做语义级判断;第三步是深度校验,结合知识图谱识别实体和关系,比如判断一段话里是否涉及具体人员、具体地区的敏感描述。三层机制是串联执行的,任何一层判断有风险都会触发策略动作,动作可以是阻断、转人工审核,或者降级回复。
这里分享一个经验:不要把安全规则全部写死在代码里。我们专门做了一个策略配置中心,所有规则可以动态调整和灰度发布。因为攻击手法是持续演进的,你今天拦得住的,明天可能就被绕过了。策略能力需要像反病毒库一样可持续更新,这是安全策略编排“编排”二字的真正含义。
4.2 策略引擎的核心机制:优先级、动作与熔断
策略引擎是安全编排的执行大脑。它接收每一层送来的安全检查请求,然后按照预先配置的策略集合做决策。设计上,我们引入了一个核心概念叫“策略优先级链”。一条请求进来,可能会命中多条策略,这时不是简单地把动作叠加,而是按优先级取最高动作。
举一个实际例子,一条输入文本同时命中了“包含外部链接”和“疑似提示词注入”两条策略,外部链接的规则动作是“替换链接”,提示词注入的动作是“阻断请求”,那么引擎最终执行的是阻断。这个优先级链必须经过精心设计,否则会出现策略之间互相打架的情况。比如一条规则要求放行VIP用户,另一条要求阻断包含违规词的内容,如果放行优先级高于违规拦截,VIP用户违规就拦不住,这在审计里就是重大漏洞。
除了优先级,策略引擎还要支持熔断能力。所谓熔断,就是当系统检测到查询量异常、或者在短时间内的违规命中率突然飙升,引擎会自动进入高防御模式,放宽触发条件、提高阻断力度。这有点像我家里用的“熔断器”,电流过大自动跳闸保护线路。没有熔断机制的安全系统,在遭受集中攻击时容易被打穿。
4.3 输出侧过滤与审计追踪:让每一次回答都有据可查
输出侧的安全很容易被忽视,很多人觉得输入已经检查过了,输出应该没问题。但模型生成的内容是无法预判的,输入干净不代表输出就干净。比如输入一个正常的问题,模型可能被诱导输出敏感内容。所以输出侧过滤必须和输入侧一样严格。
输出侧过滤的核心手段有两个:敏感信息检测和内容合规校验。敏感信息检测就是扫描输出文本里有没有泄漏手机号、身份证号、银行卡号等个人信息,检测到就直接打码。内容合规校验则是对整体语义做安全判断,发现违规内容时就进行重写或终止输出。我们要求所有过滤动作都记录在审计日志里,保留完整的输入、输出、模型选择、策略命中信息。这样做的好处是,万一外部监管或用户投诉找上门,你能回溯当时发生了什么,而不是一问三不知。
5. 实操记录:从部署到联调的完整过程
前面讲的全是设计和原理,接下来这部分是实际操作记录。我会把整个55873生态从零到一的部署过程捋一遍,重点讲部署架构、关键配置、联调数据,这些都是可以直接复用的经验。
5.1 推理服务化部署与参数配置
第一步是把模型部署成可服务的接口。我们跑了两种部署方式:一种是商用的API模型,开箱即用,直接按官方文档接入即可;另一种是本地开源模型,需要自己部署推理服务。本地模型的推理部署我们用的是业界主流的推理框架,配合显存优化方案,把模型的加载和推理性能压到最优。
这里给出一个本地模型的启动配置参考,避免踩坑。我们跑轻量模型时,量化方式选INT8,显存占用直接降了一半还多,推理速度比FP16模式提升了差不多30%。主力模型因为要保证效果,保留FP16精度,但需要配合张量并行来分散显存压力。启动之后,药立刻压测一下显存占用,如果显存使用率长期超过90%,就需要考虑减少并发数或换更大的显卡,否则推理服务会频繁报OOM错误,严重影响稳定性。
混合部署下必须做好网络分区的设计。本地推理服务放在内网,通过内部网关对外提供统一接口,云端API模型走公网。编排层通过一个统一的模型网关访问所有模型,业务代码永远不知道模型在哪里,这样本地和云端模型的切换对上层透明,后面做模型更换或升级也方便得多。
5.2 编排层核心代码的结构与运行机制
编排层的代码结构很关键,我直接说核心模块的划分方式。我们主要拆成五个模块:意图解析器、任务规划器、调度执行器、状态管理器、上下文记忆模块。意图解析器负责接收接入层传来的请求,调用总控模型做意图识别和任务拆解;任务规划器把解析出的任务整理成可执行的DAG结构,明确先后顺序和依赖关系;调度执行器负责把这些任务真正分发到对应的模型和工具;状态管理器记录每个任务的执行状态,支持重试和回滚;上下文记忆模块负责在整条链路中传递上下文信息,保证多轮对话的连贯性。
这里一定要强调上下文传递的设计。刚开始实现的时候,我们简单地把所有历史对话一股脑拼接到当前请求里,结果上下文越长,模型响应越慢,还容易丢失重点信息。后来优化成滑动窗口机制:只保留最近几轮对话,加上一个动态更新的“核心摘要”区域,摘要由模型定期对前面的对话生成。这样做之后,上下文长度基本可控,信息保留率也大大提升。如果你自己实现智能体编排,上下文管理一定要提前想清楚,否则后面的坑非常多。
5.3 安全策略与模型服务的集成方式
安全策略的集成,不是简单在入口挂一个过滤器,而是要以中间件的方式嵌入到整个请求链路里。我们的做法是安全策略引擎对外提供一套过滤接口,接入感知层在请求进入时调用一次输入侧过滤,编排决策层在每次调用模型前再次校验,执行工具层拿到结果后也要过一遍输出侧过滤,所有校验结果同步到治理审计层。
这里有一个不得不注意的点:安全过滤本身会引入额外延迟,每一步过滤都要和模型调用串行执行,叠加起来对整体响应时间的影响不小。为了压住这个延迟,我们把过滤服务单独部署成独立节点,并且做成无状态服务,通过横向加节点的方式做负载均衡。还引入了一个本地缓存,高频重复的请求,比如热门问题,缓存里的安全校验结果直接复用,不需要每次都重新跑一遍模型审查。实测这个优化让安全环节的平均耗时下降了大约60%。
5.4 整体联调与压测结果
联调阶段最怕的是各模块单独跑都没问题,一连起来就各种异常。我们第一次端到端联调的时候,就出现过入参格式对不上模型返回结构的问题,还有工具超时时间设置不合理导致任务一直被卡住的情况。这些问题的排查过程我都写在了下一章,这里只说一下最终压测数据。
压测分别在两个场景下进行:日常流量和高峰流量。日常流量下我们模拟了真实的用户请求分布,高峰流量下把并发数拉高了十几倍。结果如下:日常场景平均端到端响应时间是1.2秒,高峰场景下平均2.8秒,系统没有出现崩溃和超时堆积。对比之前单模型方案,日常场景响应时间压缩了差不多一半,成本下降了约40%,复杂任务的成功率从原来的78%提高到91%。这个结果基本验证了6+1+3混合模型加四层智能体架构的可行性,也让我们更有底气把这套系统推向更多业务方。
6. 常见问题与排查技巧实录
整个落地的过程中,我们积累了一批典型问题的排查经验,整理成下面的速查表。如果你正在搭类似的系统,大概率也会遇到其中几个,提前了解能省不少时间:
| 常见问题 | 典型现象 | 排查思路 | 解决方法 |
|---|---|---|---|
| 部分模型答非所问 | 同一问题不同模型给的答案质量相差很大 | 先看路由选择是否正确,再看提示词模板是否适配 | 优化总控模型意图识别,针对不同模型定制提示词模板 |
| 编排链路延迟过高 | 响应时间明显超标 | 按会话ID追踪时间线,定位耗时环节 | 改异步调用、增加缓存、对小模型提前做预热 |
| 安全策略误伤正常请求 | 正常问题被拦截或被打码 | 检查命中策略的日志和规则优先级 | 调整规则阈值、增加白名单、重排策略优先级链 |
| 本地模型与API模型混跑异常 | 部分请求走本地时结果质量差、超时多 | 检查本地模型量化精度和推理服务负载 | 换回更高精度、增加推理节点、设置合理的超时重试 |
6.1 模型“答非所问”的根因排查
这个问题我们遇到过不止一次,表现是同一个问题在路由后分给了某个模型,回答出来的内容跟用户问的完全不搭边。排查了好几天才发现根因有两类。第一类是总控模型意图理解错位,把本应给长文本模型的文档分析任务错误地分给了轻量模型,轻量模型的语义理解能力跟不上,自然给不出好答案。第二类是提示词模板和模型不匹配,每个模型的系统提示词风格都不一样,用一个模板套所有模型,有些模型的理解就偏了。
解决方法是双管齐下。一方面用业务数据持续微调总控模型,提高意图识别的准确率;另一方面把提示词模板做成了模型适配层,每个模型都有自己专属的模板版本,根据模型标签动态选择。改完之后,这类问题的发生率降了特别多,基本从日常频发变成了偶发。
6.2 编排链路延迟高,问题出在哪里
有一次我们上线新功能后,用户反馈明显变慢,排查发现端到端延迟从平时的1秒多涨到了4秒。用链路追踪一看,定位到一个外部工具调用节点,那个工具的响应时间在高峰期飙到了2秒以上,而且我们是同步等待的,等于整条链路被这个环节卡住。
解决方式很直接:把同步调用改成了异步调用加超时控制,工具节点还在慢慢响应,但编排层不再死等,而是先在规定时间内拿结果,拿不到就先执行其他分支,最后再汇总。同时还加了一层缓存,低频变化的数据结果直接复用,避免每次都调外部接口。优化之后,链路延迟恢复到了正常水平。
6.3 安全策略误伤正常请求,如何降低误杀率
安全策略最大的矛盾就是“漏拦和误杀”的平衡。拦得狠了,正常用户受影响;拦得松了,真正有风险的内容又会漏过去。我们曾经有一条基于关键词的过滤规则,不小心把一个常用词加入了黑名单,结果半天之内大量正常请求被拦截,用户在客户端看到的提示都是“内容涉嫌违规”,排查日志才发现是规则配置的问题。
从那次之后,我们形成了一套制度:所有新增高危过滤规则必须在小流量灰度验证一段时间,观察误报率和召回率,确认不会误伤正常请求后再全量上线。同时给策略引擎加了一个“人工复核队列”,被拦截的内容先进入人工审核,而不是直接阻断,这样既保证了安全底线,也给了正常请求一个申诉和放行的机会。这套机制上线后,误杀率下降了一半多。
6.4 本地模型与API模型混跑的边界与坑
本地模型最大的价值是数据私密性和成本可控,但它也有自己的隐患。我们在早期混跑阶段遇到过一种奇怪的现象,某个本地轻量模型回答内容突然质量大幅下降,排查发现是推理服务所在的机器显存占用过高,触发了量化裁切,等于模型在精度受损的状态下运行,输出自然就差了。后来给推理服务加了严格的显存监控和自动清理机制,才解决了这个问题。
另外一个坑是超时设置。本地模型推理速度受服务器负载影响很大,高峰期响应时间可能是空闲期的几倍。如果外部请求的超时时间设置得过短,高峰期就会出现大量请求超时失败。我们最后把超时时间做成了动态调整,根据推理服务当前负载动态计算合理的超时阈值,既不会让用户无限等待,也不会在高峰期误杀请求。
搞完这一整套系统,我自己最大的体会是:做AI应用,模型能力只是起点,模型之外的工程能力才是决定系统能跑多久、跑多稳的关键。6+1+3这套模型矩阵本身不稀奇,稀奇的是能用四层架构把它们高效组织起来,同时让安全策略贯穿始终。最后再分享一个小技巧:这套系统上线后,记得建立模型效果和成本的常态化监控报表,每两周过一遍数据,哪些模型的任务命中率变低、哪个模型的单次成本偏高,就及时调优。模型和业务都在不断变化,只有持续观测、持续调整,整套体系才能越跑越顺。