导航收藏不迷路—制造业数据与AI践行者老蒋的技术博客全系列文章汇总持续更新文章摘要这篇文章是以虚拟灯塔工厂“智联工坊”为样本手把手搭建一个具备OEE计算、设备手册检索、排班查询三大能力的制造知识库工具调用Agent。基于LangChain ReAct模式完整覆盖从数据模拟、向量库构建到命令行与Web界面交互的全流程实战直击制造现场多系统切换痛点。源码可开源可直接复用。开篇我为什么写这篇文章在智联工坊我们的虚拟智能硬件灯塔工厂的车间里班组长小刘每天至少要切换三个系统查OEE要翻MES报表、设备报警要翻500页PDF维修手册、问排班要打电话给调度室。每查一次5-10分钟就没了。本文要解决的痛点把这三个割裂的动作整合成一个统一的AI Agent对话入口。班组长只需用大白话问一句Agent自动判断意图、调用对应工具、秒级返回结果。适合谁读制造企业的IT工程师、数据架构师以及正在尝试将AI Agent引入生产管理场景的开发者。脱敏声明本文基于虚拟工厂“智联工坊”场景所有数据均已脱敏处理设备型号及故障码均为模拟构造。正文四步从零搭建第一步理解工程目录骨架本项目的核心设计思想是common/管基建cases/管案例。每个案例完全独立互不干扰后续Case02、Case03可以直接复用common/中的共享能力。文件架构目录如下javy21_manufacturing_ai_practice/ ├── common/ # 共享基建层所有案例共用 │ ├── utils.py # 日志、环境变量加载 │ ├── llm_client.py # 统一LLM加载Ollama/VLLM切换 │ ├── chroma_client.py # 向量库单例连接器 │ └── base_agent_builder.py # Agent构建基类 │ ├── cases/ │ └── case01_tool_agent/ # 本案例工具调用Agent │ ├── config.py # 专属配置端口、路径 │ ├── tools/ # 三个核心工具 │ │ ├── oee_calculator.py # OEE计算器 │ │ ├── manual_retriever.py # 设备手册检索 │ │ └── shift_query.py # 排班查询 │ ├── agent/ │ │ └── builder.py # Agent组装仅需5行代码 │ ├── scripts/ # 四步执行脚本 │ │ ├── 01_generate_mock_data.py │ │ ├── 02_init_chroma.py │ │ ├── 03_test_cli.py │ │ └── 04_run_web.py │ └── web/ # Web对话界面 │ ├── app.py │ └── templates/index.html └── data/processed/ # 生成的模拟数据 └── production_records.csv第二步Step 1 —— 生成模拟数据运行scripts/01_generate_mock_data.py生成智联工坊三条产线交互屏组装A线、环境监测校准B线、定位器贴片C线近7天的产量、良品、排班数据。cd cases/case01_tool_agent/scripts python 01_generate_mock_data.py执行效果2026-07-19 11:50:29 - __main__ - INFO - ✅ 模拟数据生成成功: 21 条记录 - data/processed/production_records.csv生成的CSV包含以下字段date、production_line、product、total_output、good_output、planned_time_minutes、shift。第三步Step 2 —— 构建向量知识库运行scripts/02_init_chroma.py将设备故障知识预设5条可扩展导入Chroma向量库用于后续的手册检索。python 02_init_chroma.py执行效果2026-07-19 11:50:29 - __main__ - INFO - ✅ 向量库构建成功共 5 条知识知识库预设内容示例交互屏E401错误触摸屏驱动通信超时请重启工控机并检查USB连接线。环境监测仪A02报警PM2.5传感器偏移需使用标准气样重新校准。第四步Step 3 —— 命令行CLI测试运行scripts/03_test_cli.py进入交互式命令行测试模式验证Agent的三个工具是否能被正确调用。python 03_test_cli.py启动界面 智联工坊 · 制造AI助手 CLI 测试模式 示例命令可直接复制粘贴 OEE 计算计算交互屏组装A线今天的OEE 手册检索设备报错E401怎么处理 ️ 排班查询定位器贴片C线明天什么班次测试用例1OEE计算 你: 计算交互屏组装A线在2026-07-12的OEE Entering new AgentExecutor chain... Thought: 需要调用calculate_oee工具来计算OEE。 Action: calculate_oee Action Input: {line_name: 交互屏组装A线, date: 2026-07-12} Observation: {line: 交互屏组装A线, oee: 86.39, quality_rate: 97.0, ...} Thought: 我已获得OEE计算结果 Final Answer: 交互屏组装A线在2026-07-12的OEE为86.39% Agent: 交互屏组装A线在2026-07-12的OEE为86.39%其中良品率为97.0%可用性为93.75%。测试用例2手册检索 你: 设备报错E401怎么处理 Agent: 【智联工坊维修手册匹配】 交互屏E401错误触摸屏驱动通信超时请重启工控机并检查USB连接线。测试用例3排班查询 你: 定位器贴片C线明天什么班次 Agent: 定位器贴片C线在2026-07-20的排班为白班第五步Step 4 —— 启动Web界面运行scripts/04_run_web.py启动Flask Web服务在浏览器中体验图形化对话界面。python 04_run_web.py浏览器打开http://localhost:5001即可看到工业风格的对话界面核心代码解析工具定义以OEE计算器为例每个工具继承BaseTool定义name、description和args_schema。description的清晰度直接影响Agent的意图识别准确率。class CalculateOEETool(BaseTool): name: str calculate_oee description: str 计算指定产线在指定日期的OEE(百分比)。需要产线名称和日期。 args_schema: Type[BaseModel] OEEInput def _run(self, line_name: str, date: Optional[str] None) - str: # 防御性JSON解析解决Agent嵌套JSON问题 if line_name.strip().startswith({) and line_name.strip().endswith(}): data json.loads(line_name) line_name data.get(line_name, line_name) date data.get(date, date) # ... 核心计算逻辑Agent组装本案例的builder.py仅需5行代码——继承BaseAgentBuilder覆写_register_tools()方法即可完成Agent组装。class ManufacturingToolAgentBuilder(BaseAgentBuilder): def _register_tools(self) - List[BaseTool]: return [ CalculateOEETool(), SearchManualTool(), QueryShiftTool() ]关于“本地模型 vs 企业GPU”的补充说明本文代码同时支持OllamaCPU和VLLMGPU两种模式可根据具体情况进行灵活配置。总结价值提炼本文解决了什么通过AI Agent将制造现场三个高频操作OEE计算、手册检索、排班查询融合为一个极简对话入口单次查询从5分钟缩短至15秒。可复用的方法论三层加固策略Prompt规则约束 工具描述语义区分 _run()防御性解析确保Agent准确调用工具。工程架构common/cases/隔离策略支持后续无限扩展互不干扰。一鱼多吃本次实战中产生的6个典型踩坑点将独立成篇发布在《数据与AI工程排坑笔记》专栏。智能工厂对标本方案对应GB/T 39116-2020中“生产作业”能力域主域——提升OEE计算效率以及“数据资源”能力域辅域——实现知识库的结构化检索。可直接用于国家智能制造能力成熟度三级集成级申报材料中的技术佐证。系列导航本文所属专栏[AI赋能数据开发工程手册]上一篇多工具协同Agent实战用LangChain构建越南市场情报系统-CSDN博客下一篇《Agent的记忆系统让智联工坊AI记住班组长偏好》Case02即将发布关于作者制造业数据与AI践行者老蒋23年IT老兵。聚焦制造业数据架构与AI融合落地主导多个国家级/省级数智化项目申报并成功获批。全流程实战全源码开源。交流互动您在将AI Agent引入制造场景时是否遇到过工具意图识别不准的问题欢迎评论区交流。