工业 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 小时前
调查研究-206 DeepSeek DSpark 深度解析:大模型推理加速,正在从“模型能力”转向“系统工程”
人工智能·agent·deepseek
花千树_0102 小时前
多工具调用只是开始:用 Regnexe 构建真正会反思的 Java Agent
langchain·agent
葫芦和十三3 小时前
图解 MongoDB 22|读写关注:持久性与一致性的档位选择
后端·mongodb·agent
葫芦和十三10 小时前
图解 MongoDB 21|选举与 failover:Primary 是怎么选出来的
后端·mongodb·agent
带刺的坐椅12 小时前
从 Claude Code 隐私争议,看 SolonCode 的设计选择
ai·llm·agent·claudecode·soloncode·codingplan
后端小肥肠17 小时前
小红书虚拟商品怎么做?我先用 Skill 跑通了壁纸品类
人工智能·aigc·agent
Java陈序员18 小时前
企业级!一个基于 Java 开发的开源 AI 应用开发平台!
spring boot·agent·mcp
Chen6667818 小时前
我让一个Agent Team长时间自治运行后,发现问题不在“怎么组队”
agent