发布时间:2026/6/16 21:58:22
LangChain框架在高炉炼铁智能化领域的应用~系列文章09:工具调用Tool — 让AI学会操作高炉仪表盘
第9期工具调用Tool — 让AI学会操作高炉仪表盘专栏《LangChain框架在高炉炼铁智能化领域的应用》前情回顾上期我们构建了高炉Agent有了自主决策大脑本期重点Tool —— Agent的双手让AI真正动手操作 引言大脑再好也得有手上期我们把 Agent 比作有自主意识的 AI 员工。但你想过没有——一个员工光有大脑没有手能干啥 Agent (大脑) ↓ 思考我需要查一下当前风压数据 ↓ 决策还需要查一下历史趋势对比 ↓ 结论炉况有异常需要报警 ↓ 但……手呢谁来点鼠标谁来按按钮 卡住了这就是Tool工具的作用——它们是 Agent 的双手让 AI 能真正操作外部系统人 大脑(思考) 双手(操作) Agent LLM(决策) Tool(执行)️ LangChain 中的 Tool 体系工具的分类Tool 类型树 │ ├── 数据获取类 —— 查参数、查数据库、查知识库 ├── 计算分析类 —— 数值计算、统计分析、公式推导 ├── ✉️ 通知通讯类 —— 发飞书、发邮件、发短信 ├── 控制操作类 —— 调整参数、下发指令 └── 外部API类 —— 调用第三方服务高炉场景的工具清单工具类型作用Agent调用场景get_furnace_params数据获取查实时参数“看看当前炉况”get_param_history数据获取查历史趋势“铁温最近在下降吗”search_kb数据获取搜知识库“上次悬料怎么处理的”calculate_ti计算分析算透气性指数“帮我算下透气性”send_alert通知通讯发飞书告警“发现异常通知值班”write_report数据输出生成日报“帮我生成今天的日报” 进阶篇从基础工具到高阶技巧技巧1️⃣ 带参数校验的工具fromlangchain.toolsimporttoolfrompydanticimportBaseModel,Field# 定义工具的参数模型自动做校验classFurnaceQueryInput(BaseModel):高炉参数查询的输入校验furnace_name:strField(description高炉名称如5号高炉、6号高炉,min_length2,max_length20)param_type:strField(description参数类别temperature(温度) / pressure(压力) / all(全部),pattern^(temperature|pressure|all)$)tool(args_schemaFurnaceQueryInput)defquery_furnace_with_filter(furnace_name:str,param_type:str)-str:按类别筛选查询高炉参数all_params{5号高炉:{temperature:{风温:1205°C,铁水温度:1490°C},pressure:{风压:0.392MPa,顶压:0.22MPa}}}furnace_dataall_params.get(furnace_name,{})ifparam_typeall:result{}forvinfurnace_data.values():result.update(v)returnstr(result)returnstr(furnace_data.get(param_type,{}))# ✅ Agent调用时如果参数不对会自动报错提示技巧2️⃣ 组合式工具tooldefcomprehensive_furnace_analysis(furnace_name:str)-str: 综合高炉炉况分析一次调用完成参数查询关键指标计算初步诊断 furnace_name: 高炉名称 # 1. 获取参数paramsget_furnace_params_data(furnace_name)# 抽取公共逻辑# 2. 计算复合指标wind_volumefloat(params[风量].replace(m³/min,))wind_pressurefloat(params[风压].replace(MPa,))permeabilitywind_volume/(wind_pressure*10000)# 透气性指数# 3. 初步诊断iron_tempfloat(params[铁水温度].replace(°C,))ifiron_temp1480:temp_status⚠️ 偏低elifiron_temp1520:temp_status⚠️ 偏高else:temp_status✅ 正常returnf 【{furnace_name}综合诊断】 关键参数{params} 透气性指数{permeability:.1f}️ 铁温状态{temp_status}技巧3️⃣ 带状态的上下文感知工具fromdatetimeimportdatetime# 全局上下文模拟_global_context{current_shift:甲班,operator:张工,last_alert_time:None}tooldefsend_shift_alert(message:str,level:strinfo)-str: 发送班次告警/通知 message: 告警内容 level: 告警级别 (info/warning/critical) nowdatetime.now()_global_context[last_alert_time]now urgency{info:,warning:⚠️,critical:}iconurgency.get(level,)alertf{icon}【{level.upper()}】{now.strftime(%H:%M:%S)} 值班:{_global_context[current_shift]}-{_global_context[operator]}{message}# 真实场景这里会调用飞书/短信APIprint(f 告警已发送:{alert})returnf告警已发送{message} 实战高炉智能体完整工具集把前面所有技巧整合打造高炉Agent的完整工具箱 # bf_toolkit.py# 高炉Agent完整工具集fromlangchain.toolsimporttoolfromlangchain.agents.middlewareimportwrap_tool_callfromlangchain.messagesimportToolMessagefromtypingimportOptional,ListfrompydanticimportBaseModel,Fieldimportjson# ─────────── 1. 数据获取类工具 ───────────tooldefget_real_time_params(furnace_name:str)-str: 【高炉必用】获取高炉实时运行参数 furnace_name: 高炉名称编号如5号高炉 # 模拟连接SCADA系统params{5号高炉:{timestamp:2025-06-05 14:30:00,风温:1205°C,风压:0.392MPa,风量:4920m³/min,铁水温度:1490°C,硅含量:0.42%,炉渣碱度:1.18,透气性指数:33.8,料速:6.3批/h,顶温:185°C,顶压:0.22MPa}}dataparams.get(furnace_name)ifnotdata:returnf❌ 未找到{furnace_name}的实时数据returnjson.dumps(data,ensure_asciiFalse,indent2)tooldefget_historical_data(furnace_name:str,param_name:str,hours:int24,interval:str1h)-str: 【趋势分析】查询参数的历史变化趋势 furnace_name: 高炉名称 param_name: 参数名称 hours: 回溯小时数默认24 interval: 数据间隔默认1h # 模拟历史数据importrandom base_value{铁水温度:1500,硅含量:0.45,风温:1200,风压:0.39}basebase_value.get(param_name,100)trendbase-hours*0.5# 模拟下降趋势points[]foriinrange(min(hours,24)):valtrendi*0.3random.uniform(-0.5,0.5)points.append({time:f{i:02d}:00,value:round(val,2)})returnjson.dumps({furnace:furnace_name,param:param_name,trend:下降ifpoints[-1][value]points[0][value]else上升,data:points},ensure_asciiFalse)# ─────────── 2. 计算分析类工具 ───────────tooldefcalculate_comprehensive_index(wind_volume:float,wind_pressure:float,iron_temp:float,si_content:float)-str: 【专业计算】计算高炉综合评价指标 wind_volume: 风量 (m³/min) wind_pressure: 风压 (MPa) iron_temp: 铁水温度 (°C) si_content: 硅含量 (%) # 透气性指数tiwind_volume/(wind_pressure*10000)ifwind_pressure0else0# 炉热指数heat_indexiron_temp*0.7si_content*100*0.3# 综合评价score0score30if1100iron_temp1250else10score30if0.35si_content0.55else10score20if30ti38else5score20if1480iron_temp1520else5returnjson.dumps({透气性指数:round(ti,1),炉热指数:round(heat_index,1),综合评分:score,评价:优秀ifscore80else良好ifscore60else需关注,计算时间:2025-06-05 14:30:00},ensure_asciiFalse)# ─────────── 3. 告警通知类工具 ───────────tooldefsend_production_alert(furnace_name:str,alert_type:str,message:str,severity:strwarning)-str: 【告警通知】发送生产告警通知到中控室 furnace_name: 高炉名称 alert_type: 告警类型 (temperature/pressure/status) message: 告警内容 severity: 严重级别 (info/warning/critical) alert_record{timestamp:2025-06-05 14:30:00,furnace:furnace_name,type:alert_type,severity:severity,message:message,status:已发送}# 模拟发送通知icons{info:,warning:⚠️,critical:}print(f{icons.get(severity,)}已向{furnace_name}中控室发送告警)returnjson.dumps(alert_record,ensure_asciiFalse)# ─────────── 4. 工具错误处理 ───────────wrap_tool_calldefbf_tool_middleware(request,handler):高炉工具的全局错误处理中间件try:resulthandler(request)returnresultexceptValueErrorase:returnToolMessage(contentf参数错误:{str(e)}请检查输入参数格式,tool_call_idrequest.tool_call[id])exceptExceptionase:returnToolMessage(contentf工具执行异常:{str(e)}请稍后重试或联系系统管理员,tool_call_idrequest.tool_call[id])# ─────────── 5. 构建带完整工具集的Agent ───────────defbuild_full_agent():构建带完整工具集的高炉Agentfromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAI llmChatOpenAI(modeldoubao-seed-2-0-lite-260215,temperature0.2,timeout600)all_tools[get_real_time_params,get_historical_data,calculate_comprehensive_index,send_production_alert]agentcreate_agent(modelllm,system_prompt 你是高炉炼铁智能体拥有完整的高炉操作工具集。 【可用工具及使用场景】 1. get_real_time_params - 查实时参数任何时候先查数据 2. get_historical_data - 查历史趋势分析问题时使用 3. calculate_comprehensive_index - 计算综合评价指标 4. send_production_alert - 发送告警通知发现异常时使用 【工作流程】 1️⃣ 先获取实时数据 2️⃣ 如有需要查询历史趋势 3️⃣ 计算综合评价指标 4️⃣ 给出分析结论和建议 5️⃣ 如有异常及时发送告警 【安全规则】 - 告警需确认数据准确性后再发送 - critical级别告警必须附带数据依据,toolsall_tools,middleware[bf_tool_middleware])returnagent# ─────────── 运行测试 ───────────if__name____main__:agentbuild_full_agent()# 测试完整的炉况分析告警resultagent.invoke({messages:[{role:user,content:检查一下5号高炉炉况铁水温度1490°C硅含量0.38%风温1205°C风压0.392MPa风量4920m³/min。帮我分析并给出建议如果异常就发告警。}]})print(result[messages][-1].content)⚡ Tool 开发黄金法则法则1单一职责# ❌ 错误一个工具干所有事tooldefdo_everything(data:str)-str:...# ✅ 正确每个工具只干一件事tooldefget_temperature(furnace:str)-str:...# 只查温度tooldefget_pressure(furnace:str)-str:...# 只查压力法则2详细的工具描述# ❌ 抽象描述tooldefget_data(name:str)-str:获取数据...# ✅ 具体描述模型需要靠描述决定是否调用tooldefget_furnace_params(name:str)-str: 当用户需要查询高炉的实时运行参数时使用此工具。 参数包括风温、风压、风量、铁水温度、硅含量等。 适用于判断炉况、查看指标、日常巡检。 name参数为高炉编号如5号高炉。 ...法则3防呆设计tooldefquery_furnace(furnace_name:str)-str:查询高炉参数# 自动容错valid_names{5号高炉,5#高炉,BF-5,5号炉}iffurnace_nameinvalid_names:furnace_name5号高炉# 统一名称# ... 本期小结知识点一句话总结Tool是什么Agent的双手让AI能操作外部系统参数校验用 Pydantic 做输入校验防止乱传参组合工具一次调用完成多步操作错误处理用中间件统一处理工具异常开发法则单一职责、详细描述、防呆设计核心心法Tool 是 Agent 能力的边界——Agent 再聪明也只能做 Tool 允许它做的事。把工具设计得好用、可靠、安全Agent 才能发挥最大价值 下期预告第10期《多模态应用看图识炉视频监控高炉状态》️到目前为止我们的AI只处理文字——你问它答全是文本。但高炉现场有大量的图像和视频数据 炉顶红外热像图 风口摄像头画面 铁口出铁监控️ 炉壳表面温度扫描如果用文字描述要写1000字一张图只需要1秒钟下一期我们进入多模态世界——让AI不仅能读文字还能看图像从此你的高炉AI长了一双火眼金睛距离完结还有6期收藏追更不迷路~作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容

相关新闻

Visio替代方案与高效绘图技巧:从破解风险到专业工具选择
2026/6/16 20:58:22

Visio替代方案与高效绘图技巧:从破解风险到专业工具选择

1. 项目概述:关于Visio及其获取方式的深度探讨在办公软件和绘图工具领域,Microsoft Visio是一个绕不开的名字。无论是绘制流程图、组织结构图、网络拓扑图,还是进行软件架构设计,Visio以其丰富的内置模板、强大的连接线和形状库&a…

阅读更多
NXP DPAA PME驱动API深度解析:从内核编程到高性能数据平面实践
2026/6/16 20:58:22

NXP DPAA PME驱动API深度解析:从内核编程到高性能数据平面实践

1. 项目概述与PME核心价值在嵌入式网络处理和数据平面加速领域,模式匹配引擎(Pattern Matching Engine, PME)是一个能显著提升系统性能的硬件加速器。它专门用于在高速数据流中,实时、高效地搜索和匹配预定义的模式,比…

阅读更多
从Notebook到生产:机器学习模型落地的四层加固实践
2026/6/16 20:58:22

从Notebook到生产:机器学习模型落地的四层加固实践

1. 项目概述:当模型走出Jupyter,真正开始呼吸真实世界空气“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题本身就像一句暗号,懂的人一眼就明白:这不是又一篇讲如何用sklearn拟合鸢尾花的教程…

阅读更多
MainsailOS:3D打印机控制系统的终极集成方案
2026/6/16 22:58:22

MainsailOS:3D打印机控制系统的终极集成方案

MainsailOS:3D打印机控制系统的终极集成方案 【免费下载链接】MainsailOS This Raspberry Pi distribution for managing Klipper 3D printers with Mainsail provides all you need. 项目地址: https://gitcode.com/gh_mirrors/ma/MainsailOS 在3D打印技术日…

阅读更多
如何快速掌握跨平台文本编辑器:Notepad--的完整使用指南
2026/6/16 22:58:22

如何快速掌握跨平台文本编辑器:Notepad--的完整使用指南

如何快速掌握跨平台文本编辑器:Notepad--的完整使用指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- No…

阅读更多
Win11Debloat:重新定义Windows系统的纯净与高效
2026/6/16 22:58:22

Win11Debloat:重新定义Windows系统的纯净与高效

Win11Debloat:重新定义Windows系统的纯净与高效 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customiz…

阅读更多
感知机:NLP中不可绕过的线性分类思想与决策边界原理
2026/6/16 22:58:22

感知机:NLP中不可绕过的线性分类思想与决策边界原理

1. 从手写数字识别开始:为什么今天还要讲“感知机”这个老古董? 你打开任何一本现代深度学习教材,翻到NLP章节,大概率会直接跳到Transformer、BERT、LLaMA这些响当当的名字。但如果你真想搞懂这些大模型底层到底在“算什么”&…

阅读更多
代码路由系统:多模型动态决策与高效生成实践
2026/6/16 22:58:22

代码路由系统:多模型动态决策与高效生成实践

1. 项目概述:这不是一个“模型”,而是一套动态决策系统“Claude Code Router: Multi-Model Routing for Efficient Coding”——光看标题,很多人第一反应是:“哦,又一个调用多个大模型的API封装工具?”但实…

阅读更多
Django REST Framework实战:从零构建企业级API服务
2026/6/16 21:58:22

Django REST Framework实战:从零构建企业级API服务

Django REST Framework实战:从零构建企业级API服务 【免费下载链接】Python-100-Days Python - 100天从新手到大师 项目地址: https://gitcode.com/GitHub_Trending/py/Python-100-Days 在当今前后端分离的开发模式中,API已成为连接客户端与服务端…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/16 18:17:55

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/16 20:00:23

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/16 0:39:53

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)
2026/6/16 0:57:58

2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)

(先给结论,节省时间) 只想最快把简历“拉到及格线更贴JD”:优先从 鹅来面 开始——先做简历评分与岗位匹配度,再按建议改一版可投递稿。投递量很大、需要职位管理:偏向 Teal(职位追踪 多份简历…

阅读更多
Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)
2026/6/16 0:57:58

Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法
2026/6/16 0:57:58

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memre…

阅读更多
GIT修改用户名
2026/6/16 5:55:51

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/16 16:55:24

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/15 21:13:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多