Skip to content

7.4 多模型支持与私有化部署

7.4.1 支持多种大模型:GPT、Claude、DeepSeek、通义千问

Spring AI 的价值不是要求所有模型都暴露同一种协议,而是用 ChatModel 抽象屏蔽 Provider 差异,再由 ChatClient 提供统一调用方式。OpenAI、Anthropic、Ollama 等实现可以各自使用对应的 ChatModel;业务层仍通过 prompt()call()stream() 和 Tool Calling 处理对话。

IoT DC3 当前实现与这个抽象一致。dc3_model_provider 保存 Provider 类型、base_urlapi_key、默认标记、启用状态和租户信息,Provider 类型目前包括 OPENAI_COMPATIBLEANTHROPIC;具体模型及其能力配置由 dc3_model_config 关联到 Provider,ChatClientFactory 按 7.2.1 节所述方式构建并缓存对应客户端,此处不再重复。

因此,切换模型的准确描述是:先配置 Provider 与 Model,再由请求选择模型或回退到默认模型。只要上层继续使用 ChatClient,Tool 实现通常无需随 Provider 改写;但不同 Provider 的认证、请求选项、Tool Calling 能力和返回行为仍需单独验证,不能把适配器说成“只改配置且完全无差异”。当前项目也没有按任务复杂度或敏感度自动路由模型的策略引擎,这类路由需要后续显式实现。

模型或接入方式当前接入路径适合场景需验证
GPT、DeepSeek、Qwen 等 OpenAI-compatible 服务OPENAI_COMPATIBLEOpenAiChatModel通用对话、中文运维、工具调用端点兼容性、模型能力、成本与数据合规
ClaudeANTHROPICAnthropicChatModel长上下文、日志与报告分析Tool Calling、参数差异与区域合规
Ollama、vLLM 等本地推理端点按实际兼容协议配置对应 Provider数据不出域、私有化验证模型格式、吞吐、显存、上下文长度与函数调用稳定性

模型选型不应依赖宣传参数。更可靠的做法是用同一批设备查询、历史值分析和 Tool Calling 用例,对候选模型测量延迟、成功率、参数正确率、成本和资源占用,再决定默认模型。多模型配置提供的是可替换能力,不等于已经实现自动路由。

7.4.2 私有化部署方案:安全与隐私考量

某位工程师在配置文件中只改了端点地址就完成了模型切换——这个操作背后隐含了一个重要的前提:本地必须有一个运行中的模型服务。私有化部署不是简单的“下载一个模型文件”,它涉及模型获取、推理引擎选型(Inference Engine)、硬件适配和运维管理四个维度。物联网场景中走私有化路线的驱动力,通常来自两条清晰的需求:数据主权和延迟可控。

谁在要求私有化

一家工厂的运维负责人说得直白:“设备位号数据就是我的工艺参数,出了厂区我睡不着觉。”在工业、能源和医疗领域,设备配置参数、运行曲线、故障模式是企业的核心资产。公有云大模型服务虽然承诺传输层加密,但模型推理发生在云上——每次请求的文本都会发送到模型提供商的数据中心。对于内部网络不与外网直连的生产环境,这条路根本走不通。

另一个驱动力是推理延迟。云端的模型调用包含网络传输时间。操作员说“关闭三号反应釜的进料阀”,如果模型需要先走外网再到云端推理,再返回指令,多出的数百毫秒在网络抖动时可能变成数秒。本地部署可以把推理延迟稳定控制在百毫秒以内,不受运营商网络状况影响。

主流方案:Ollama、vLLM 与 LocalAI

当前本地部署大模型的工具链已比较成熟。三个方案在物联网场景中最常用,各有侧重。

Ollama 的封装程度最高,一条 ollama pull qwen2.5:7b 命令就能拉起服务。它的模型库丰富,主流大小的模型都有现成镜像。适合快速验证、单实例、低并发的场景——比如一个工厂只需要同时服务几个运维操作员。

vLLM 需要用户手动从 HuggingFace 拉取模型并指定路径,封装程度中等。它的优势是生产级的高吞吐和多实例高可用。当你要同时服务几十个操作员,或者把推理能力开放给外部 Agent 调用时,vLLM 的连续批处理(Continuous Batching)和 PagedAttention 机制能把 GPU 的利用率压榨到极限。

LocalAI 提供与 OpenAI API 完全兼容的接口,在容器化部署上更灵活。它对模型格式的宽容度更高——同一个部署可以同时加载不同厂商的模型。适合需要在同一台机器上运行多个异构模型的场景。

三个方案都提供 OpenAI 兼容端点,这正是 Spring AI 依赖的协议标准。对 Agentic Center 来说,换推理引擎只需改 base-url,与切换云端模型没有架构差异。配置示例:

properties
# application.properties(示意)
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=deepseek-r1:7b
# 替换为 vLLM 或 LocalAI 时,改这一行即可:
# spring.ai.openai.base-url=http://localhost:8000/v1

硬件是现实约束

GPU 资源是大多数团队面对的门槛。不同参数规模的模型对显存需求差异明显。以典型7B参数规模的模型为例,在消费级GPU上可以正常运行,但实际能跑多快、能支持多长的上下文序列,取决于量化精度和序列长度。更大参数规模的模型(例如达到百亿参数级别),对显存和内存的要求会显著提高。当模型参数量超过单卡容量时,需要多卡并行或 CPU Offloading——把部分层放到 CPU 内存中,牺牲推理速度换取可用性。Ollama 和 vLLM 都支持这种技术。在 IoT 数据查询场景中,一次推理 3~5 秒的延迟通常可以接受,远好于完全无法部署。

混合模式:分层决策,不二选一

不是所有请求都需要私有化。更稳妥的混合路由先按数据分级、工具权限、成本和已测任务质量做决策:敏感数据或低风险查询可走经过验收的本地模型,允许出域且需要更强能力的任务才进入获批的云模型。具体模型名称和能力会变化,本书不把某个品牌与“简单”或“复杂”永久绑定。Agentic Center 的 dc3_model_provider 表支持配置多个提供商并可按会话选择模型;若要自动路由,还需另行实现策略、降级、审计与评测闭环,而不只是补一个 if

java
// 代码:按请求特征选择模型后端
public ChatClient selectModel(ChatRequest request) {
    if (request.containsSensitiveTags()) {
        return ollamaChatClient; // 敏感数据,走本地
    }
    if (request.isSimpleQuery()) {
        return ollamaChatClient; // 低延迟优先
    }
    return openAiChatClient; // 复杂任务,走云端
}

这套做法把一个看似二选一的问题,变成了可分层调控的决策。

工程检查清单:开始私有化部署前

  1. 确认模型参数规模和所需显存估算,核对服务器 GPU 配置(参考模型发布页的推荐要求)。
  2. 选择推理引擎:Ollama 适合快速验证,vLLM 适合生产高吞吐,LocalAI 适合异构模型共存。
  3. 拉取模型镜像并验证 OpenAI 兼容端点可用。
  4. 修改 Agentic Center 配置文件的 base-url 指向本地推理服务。
  5. 验证工具调用链是否完整:发一条“查询所有离线设备”的测试消息。
  6. (可选)部署混合路由逻辑,按查询类型和敏感度分级分流。

私有化不是全有或全无的选择。用对方法,可以在数据主权、响应速度和模型能力之间找到自己的平衡点。

图 7-12 私有化与混合部署架构敏感与简单查询留在本地引擎处理,复杂任务可出域走云端;换推理引擎通常只改 base-url,但按敏感度分流的策略路由仍需显式实现。图 7-12 私有化与混合部署架构敏感与简单查询留在本地引擎处理,复杂任务可出域走云端;换推理引擎通常只改 base-url,但按敏感度分流的策略路由仍需显式实现。企业内部网络请求分流敏感/简单复杂任务Agentic Center对话入口与工具编排路由决策敏感度/复杂度判断本地推理引擎Ollama / vLLM / LocalAI · 数据不出域云端推理引擎外部 Provider · 仅发送允许出域的数据云外网蓝色=Agentic Center 核心实线=数据安全路径;虚线=跨网络路径企业内部网络边界用虚线表示图 7-12 私有化与混合部署按敏感度和任务复杂度选择推理后端;当前平台支持按会话选模型,自动策略路由仍需显式实现。
图 7-12 私有化与混合部署架构

7.4.3 MLOps 与 LLMOps:从版本登记到生产回归

把模型部署成一个 HTTP 服务,只解决了“能够调用”的问题。生产系统还必须回答:当前请求用了哪个模型、哪版 Prompt、哪份知识索引、哪些 Tool、什么权限策略;升级后效果是否退化;出问题时能否只回退一个组件。传统 MLOps 主要治理数据、特征、训练代码、模型和部署,LLMOps 则把 Prompt、上下文、RAG 索引、Tool schema、评测集和安全策略一起纳入发布单元。

AI 应用不是一个模型,而是一组有依赖关系的资产

建议为每次发布生成不可变 manifest,至少记录:

  • 模型 Provider、模型 ID 和服务版本;
  • 系统 Prompt、业务模板及其哈希;
  • Tool 名称、描述、输入 schema、风险等级和后端 API 版本;
  • RAG 语料快照、切分器、Embedding、reranker、索引和过滤策略;
  • 安全策略、租户范围、审批规则和输出过滤版本;
  • 离线评测集、攻击集和通过阈值;
  • 发布人、审批人、时间、变更原因和回退目标。

只有模型版本而没有 Tool schema 版本,可能让新模型按旧参数调用新接口;只有索引版本而没有语料快照,无法解释知识回归;只保存 Prompt 文本而不记录策略,无法复现为什么同一请求在两个租户下得到不同工具目录。

MLOps 与 LLMOps 的边界

维度MLOps 重点LLMOps 新增重点
数据训练/验证数据、特征、标签Prompt、会话、RAG 语料、工具返回、人工反馈
资产模型、训练代码、特征流水线模型、Prompt、索引、Tool schema、策略、评测集
评测精度、召回、漂移、服务指标忠实性、拒答、轨迹、越权、成本、非确定性波动
发布模型注册、灰度、回滚组件独立版本、只读先行、自主度分级、策略回退
监控数据/概念漂移、预测质量无证据回答、工具失败、注入、人工拒绝、上下文污染

两者不是替代关系。预测性维护模型仍需要数据切分、模型注册和漂移监控;调用它的 Agent 还要治理 Prompt、Tool 和审批策略。

发布门:先证明没有破坏,再逐步放权

一个稳妥的发布流程可分为五道门:

  1. 离线回归:在版本化 golden set、不可回答集和安全攻击集上运行;
  2. 影子流量:新版本读取真实请求但不产生外部副作用,与旧版本比较;
  3. 灰度租户:只对限定租户、设备和用户开放;
  4. 只读先行:先开放查询 Tool,再开放需要确认的写操作;
  5. 扩大范围:指标稳定且事故预案演练通过后,才增加设备和场景。

任何阶段都不应让模型自己决定是否通过发布门。评测执行、策略判断和审批必须位于模型之外。

在线 traces:从结果追到版本和副作用

每个请求应生成可关联的 trace,记录模型和 Prompt 版本、检索文档及版本、Tool 目录、工具参数摘要、权限决策、Action 确认、后端回执、最终回答、token、时延和成本。敏感参数可脱敏或存哈希,但不能完全失去关联性。

监控至少包含:请求成功率与 P95 时延、token 和单任务成本、RAG 无证据回答率、Tool 成功/超时/重试率、人工拒绝率、Action 过期率、跨租户拦截和安全测试命中。业务结果延迟出现时,还应将设备告警、工单和最终状态回连到原 trace。

漂移不只发生在模型

  • 数据漂移:设备分布、季节或工况变化;
  • 概念漂移:同一特征与故障之间的关系变化;
  • 知识漂移:手册、固件和 SOP 更新;
  • 接口漂移:Tool schema 或后端 API 变化;
  • 策略漂移:权限、审批和风险阈值变化;
  • 行为漂移:Provider 在模型 ID 不变时更新服务实现。

因此持续评测不能只在模型升级时触发。语料、Tool、策略和关键依赖发生变化时,都应运行对应回归集。

回退必须按组件设计

全量回退往往过慢。工程上应分别准备模型、Prompt、检索配置、Tool schema 和策略回退,并支持将系统从受约束 Agent 降级为 Copilot、只读问答或确定性规则。回退后仍要保持 trace 可读,避免旧模型配到新 Tool。

text
资产登记
  → 离线评测
  → 影子流量
  → 灰度租户/只读工具
  → 在线 traces 与持续评测
  → 扩大范围或按组件回退

发布记录的价值不在于增加流程,而在于把“感觉新版本更好”变成可审计判断:哪个组件变化、哪些指标改善、哪些风险增加、谁批准,以及如何恢复到最后一个已知安全组合。

图 7-13 MLOps 与 LLMOps 的边界及五道发布门MLOps 治理模型与数据,LLMOps 新增 Prompt、索引、Tool schema、策略与评测集,经五道发布门逐步放权。图 7-13 MLOps 与 LLMOps 的边界及五道发布门AI 应用是一组有依赖关系的资产,而不只是一个模型维度MLOps 重点LLMOps 新增重点数据训练/验证数据、特征、标签特征流水线Prompt、会话、RAG 语料、工具返回、人工反馈新增资产模型、训练代码、特征流水线模型、Prompt、索引、Tool schema、策略、评测集新增评测精度、召回、漂移、服务指标忠实性、拒答、轨迹、越权、成本、非确定性波动新增发布模型注册、灰度、回滚组件独立版本、只读先行、自主度分级、策略回退新增监控数据/概念漂移、预测质量无证据回答、工具失败、注入、人工拒绝、上下文污染新增五道发布门:先证明没有破坏,再逐步放权① 离线回归golden set + 不可回答集 + 攻击集② 影子流量读真实请求、无外部副作用③ 灰度租户仅限定租户、设备、用户开放④ 只读先行先查询 Tool,再需确认的写操作⑤ 扩大范围指标稳定、演练通过后增加场景图 7-13 MLOps 治理数据与模型,LLMOps 把 Prompt、索引、Tool schema、策略与评测集纳入发布单元;发布经离线回归、影子流量、灰度租户、只读先行、扩大范围五道门逐步放权。
图 7-13 MLOps 与 LLMOps 的边界及五道发布门

从工业软件到 AI 智能体 · 构建面向智能体演进的多协议、云原生、开源工业物联网平台