工业 Agent 的边缘部署:Ollama + LangChain4j 本地推理方案

工厂网络不稳定、数据不能出厂、延迟要求毫秒级------云端 LLM 满足不了这些硬性要求。边缘推理让 Agent 在本地跑模型,断网也能工作。


为什么工业场景需要边缘推理?

云端 LLM(DeepSeek、GPT-4)的限制:

  1. 网络依赖------工厂网络不稳定,断网 = Agent 瘫痪
  2. 数据合规------设备数据不允许出厂区
  3. 延迟------云端往返 2-5 秒,实时控制场景不可接受
  4. 成本------大量设备 × 高频查询 × 按 token 计费 = 账单爆炸

边缘推理的方案:在本地跑一个小模型,能处理的本地处理,处理不了的再上云。


Ollama:本地模型最简部署

bash 复制代码
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 拉取模型(7B 参数,约 4GB)
ollama pull qwen2.5:7b

# 启动服务(默认端口 11434)
ollama serve

Ollama 暴露 OpenAI 兼容 API(/v1/chat/completions),LangChain4j 直接用 OpenAiChatModel 对接:

java 复制代码
@Bean("edgeModel")
public ChatModel edgeModel() {
    return OpenAiChatModel.builder()
            .baseUrl("http://localhost:11434/v1")
            .apiKey("ollama")     // Ollama 不需要真实 key
            .modelName("qwen2.5:7b")
            .temperature(0.3)
            .timeout(Duration.ofSeconds(30))
            .build();
}

ModelRouter:边缘优先 + 云端兜底

不是简单的「用本地模型替代云端」,而是智能路由

markdown 复制代码
用户请求 → ModelRouter
              ↓
          EdgeModel(Ollama 本地)
              ↓
         质量检查 → 通过 → 返回边缘结果
              ↓
           不通过 / 超时 / 异常
              ↓
         CloudModel(DeepSeek 云端)→ 返回云端结果
java 复制代码
@Component
public class ModelRouter {

    public RouterResult chat(String message) {
        // 1. 先试边缘
        try {
            String reply = edgeModel.chat(message);
            if (isQualityAcceptable(reply)) {
                return new RouterResult("edge", reply, latency, false);
            }
        } catch (Exception e) {
            // 边缘失败(超时、模型未加载等)
        }

        // 2. 退化到云端
        String reply = cloudModel.chat(message);
        return new RouterResult("cloud", reply, latency, true);
    }

    private boolean isQualityAcceptable(String reply) {
        if (reply == null || reply.length() < 20) return false;
        if (reply.contains("我无法") && reply.length() < 50) return false;
        return true;
    }
}

质量检查是关键------太简单的回复、明显的拒绝回复都触发云端兜底。


模型选型

模型 参数量 显存需求 工业诊断能力 适合场景
qwen2.5:7b 7B 4GB 中等 通用对话、简单诊断
qwen2.5:14b 14B 8GB 良好 复杂诊断、知识检索
deepseek-v2:16b 16B 10GB 良好 代码生成、推理
llama3.1:8b 8B 5GB 一般 英文优先场景

推荐 :工业场景用 qwen2.5:7b 起步。中文能力强,7B 在消费级 GPU(RTX 3060 12GB)或 Mac M 系列上流畅运行。


配置开关

yaml 复制代码
# application.yml
edge:
  enabled: true        # 关闭则回退到纯云端
  ollama:
    base-url: http://localhost:11434/v1
    model: qwen2.5:7b

edge.enabled=false 时所有边缘组件不加载,零侵入。


边缘 vs 云端的权衡

维度 边缘(Ollama) 云端(DeepSeek)
延迟 0.5-2s 2-5s
断网可用
数据隔离 ✅ 不出厂区 ❌ 需联网
推理质量 7B 中等 / 14B 良好 顶级
成本 硬件一次性投入 按 token 持续计费
维护 需管理本地模型版本 零维护

最佳实践:边缘处理 80% 的简单查询(告警、数据、一般对话),云端处理 20% 的复杂诊断。


API 接口

bash 复制代码
# 边缘优先路由
POST /api/edge/chat
{"message": "CNC-001 有什么告警?"}
# 返回
{
  "source": "edge",        # 或 "cloud"
  "fallback": false,       # 是否触发了云端兜底
  "latencyMs": 1200,
  "reply": "CNC-001 当前有2条告警..."
}

# 路由统计
GET /api/edge/stats
# 返回
{ "edgeHits": 45, "cloudFallbacks": 8, "edgeErrors": 2 }

工业边缘部署的四个硬性要求

  1. 断网运行------网络断了 Agent 不能停
  2. 数据不出厂------设备遥测数据必须在本地处理
  3. 冷启动快------模型加载不能超过 30 秒
  4. 资源受限------边缘设备可能只有 8-16GB 内存

Ollama + 7B 模型满足以上全部要求。如果边缘设备资源更充裕(工控机 + GPU),可以上 14B 甚至 32B 模型。


下一步

边缘推理解决了「在哪跑」,但还缺安全保障。下一篇文章实现三层安全护栏------输入过滤、输出审核、操作拦截------防止 Agent 在工业环境中做出危险动作。


代码仓库:github.com/LaoLiang-ag...


本文由 LaoLiang 原创,首发于掘金/知乎/微信公众号。转载请联系作者。

相关推荐
冻感糕人~1 小时前
大模型学习指南:收藏这份AI Agent四层工程地图(小白程序员必备)
java·大数据·人工智能·学习·大模型·agent·大模型学习
深念Y3 小时前
AI编程Agent工具定义对比分析
agent·ai编程·开源项目·工具·tool·hermes·ccsiwtch
久爱物联网12 小时前
个人站点(博客)开发案例 - 功能齐全,在线客服-即时通讯-物联网控制、广告位管理、按钮级权限控制
物联网·个人博客·即时通讯在线客服·物联网控制·博客发布系统·新闻发布系统
tkevinjd12 小时前
MiniCode 项目详解6:原项目控制系统的10个缺陷(已修复)
python·llm·agent
兆龙电子单片机设计13 小时前
【STM32项目开源】STM32单片机语音分类垃圾桶-蓝牙APP
stm32·单片机·嵌入式硬件·物联网·开源·自动化·毕业设计
厦门辰迈智慧科技14 小时前
管网遥测终端机赋能城市安全的核心价值
物联网·遥测终端机·管网遥测终端机·排水管网遥测终端·管网遥测终端
七仔啊14 小时前
modbus快速入门
物联网
smartfish_liu15 小时前
分享: 如何利用workbuddy来构建批量自动化任务.
llm·agent
oil欧哟17 小时前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding