当前位置: 首页 > news >正文

LangChain框架在高炉炼铁智能化领域的应用~系列文章02:从Prompt开始,让大模型听懂高炉的“黑话“

🎯 第2期:从Prompt开始,让大模型听懂高炉的"黑话"

专栏:《LangChain框架在高炉炼铁智能化领域的应用》
前情回顾:上期我们搭建了第一个"高炉助手",但AI刚进场时就是个"钢铁小白"😂
本期重点:Prompt Engineering —— 如何让大模型变成"炼铁专家"


📖 引言:AI的"语言关"

上一期我们留了个尾巴——

你兴冲冲地装好了 LangChain,把 AI 请进了中控室。结果你问它:

👨‍🏭:“炉顶温度偏高,十字测温径向温差有150°C了,是不是布料有问题?”

🤖AI(一脸懵):“您好,作为AI助手,我无法实时获取高炉数据。请查阅相关手册或咨询现场工程师。”

😤 血压上来了有没有!

问题出在哪?不是模型不够强,是你没教会它"说人话"——准确地说,是没教会它说"炼铁人的话"。

这就涉及 LangChain 中最重要的基础技能之一:Prompt Engineering(提示词工程)🎓


📝 什么是 Prompt?别整玄乎的

Prompt,翻译过来是"提示词",本质上就是——你给 AI 写的"岗位说明书"📄

┌─────────────────────────────────────────┐ │ "亲爱的AI员工, │ │ 你的岗位是高炉炼铁专家, │ │ 你需要……(此处省略500字)" │ │ │ │ —— 这就是System Prompt │ └─────────────────────────────────────────┘

在 LangChain 中,Prompt 主要分三类:

类型英文名一句话解释高炉场景类比
🧠系统提示System PromptAI的"人设"告诉AI:你是个有30年经验的炼铁总工
💬用户提示Human Message用户的问题现场操作工的问话
🤖AI回复AI MessageAI的回答总工给出的建议

🔧 LangChain 中的 Prompt 三板斧

第一板斧:PromptTemplate — 变量注入

场景:每天早会都要生成高炉日报,内容格式一样,数据每天不同。

最原始的方式——每次都手写完整的 Prompt:

# ❌ 错误示范:硬编码,每次都要写一遍prompt="请分析高炉A在2025年1月1日的生产数据,风温1200°C,风压0.38MPa..."
✅ LangChain 的正确姿势:PromptTemplate
fromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAI# 📌 定义 Prompt 模板daily_report_prompt=PromptTemplate(input_variables=["furnace_name","date","wind_temp","wind_pressure","si_content"],template=""" 你是一位资深高炉炼铁专家,请根据以下数据生成{date}的{ furnace_name }生产日报。 📊 【关键参数】 - 风温:{wind_temp} - 风压:{wind_pressure} - 铁水硅含量:{si_content} 请从以下三个方面分析: 1️⃣ 炉况评价:当前炉况是否稳定? 2️⃣ 异常提示:是否存在异常趋势? 3️⃣ 操作建议:给出具体的调整建议。 注意:语气要专业,结论要明确,不能模棱两可。 """)# 📌 注入实际数据prompt=daily_report_prompt.format(furnace_name="5号高炉",date="2025年6月5日",wind_temp="1210°C",wind_pressure="0.39 MPa",si_content="0.42%")# 📌 调用模型llm=ChatOpenAI(model="doubao-seed-2-0-lite-260215",temperature=0.3)response=llm.invoke(prompt)print(response.content)

🔍 拆解一下

  • PromptTemplate就像 Excel 模板——数据填进去,报告自动出
  • 使用{}占位符,运行时注入实际参数
  • 不管换几号高炉、换哪天的数据,模板一套搞定!

第二板斧:ChatPromptTemplate — 多人对话管理

场景:高炉中控室不是一个人在战斗,而是操作工、值班主任、工程师之间的对话轮换。

fromlangchain.promptsimportChatPromptTemplatefromlangchain.prompts.chatimportSystemMessagePromptTemplate,HumanMessagePromptTemplate# 📌 构建"多人对话"模板chat_prompt=ChatPromptTemplate.from_messages([# 🧠 System Prompt —— "人设"SystemMessagePromptTemplate.from_template("你是{company_name}的炼铁首席专家,拥有30年高炉操作经验。""你的风格是:专业、果断、数据驱动。""每次回答必须引用数据,给出明确结论,不能含糊其辞。"),# 💬 第一轮对话HumanMessagePromptTemplate.from_template("当前{ furnace_name }的压量关系出现异常:风压{wind_pressure},风量{wind_volume},""透气性指数下降到{permeability}。请分析原因并给出操作建议。"),])# 📌 使用messages=chat_prompt.format_messages(company_name="XX钢铁集团",furnace_name="3号高炉",wind_pressure="0.42 MPa",wind_volume="4800 m³/min",permeability="32.5")llm=ChatOpenAI(model="doubao-seed-2-0-lite-260215",temperature=0.3)response=llm.invoke(messages)print(response.content)
生成的消息结构
System: 你是XX钢铁集团的炼铁首席专家…… Human: 当前3号高炉的压量关系出现异常……

这种结构比单纯的字符串拼接更清晰,模型理解效果也更好 ✅


第三板斧:FewShotPromptTemplate — 给AI看"参考答案"

场景:想让 AI 按特定格式输出炉况诊断结果,但光用文字描述它不一定懂。

最好的办法——给它看几个例子📚

fromlangchain.prompts.few_shotimportFewShotPromptTemplatefromlangchain.promptsimportPromptTemplate# 📌 给AI看几个"标准答案"examples=[{"question":"铁水温度1480°C,硅含量0.35%,炉渣碱度1.15","answer":""" 【炉况判断】炉温正常偏下行 【置信度】80% 【依据】铁温1480°C处于正常区间下限,硅含量0.35%偏低 【建议】适当增加焦比3-5kg/t,关注后续铁温变化 """},{"question":"铁水温度1520°C,硅含量0.65%,炉渣碱度1.25","answer":""" 【炉况判断】炉温偏高 【置信度】85% 【依据】铁温1520°C超过正常上限,硅含量0.65%偏高 【建议】适当减焦或增加矿石量,降低炉热水平 """}]# 📌 定义示例模板example_prompt=PromptTemplate(input_variables=["question","answer"],template="输入:{question}\n输出:{answer}")# 📌 构建 FewShot Promptfew_shot_prompt=FewShotPromptTemplate(examples=examples,example_prompt=example_prompt,prefix="你是一位炉况诊断专家。请按照以下示例格式分析高炉炉况:",suffix="输入:{input}\n输出:",input_variables=["input"])# 📌 测试prompt=few_shot_prompt.format(input="铁水温度1505°C,硅含量0.52%,炉渣碱度1.20")llm=ChatOpenAI(model="doubao-seed-2-0-lite-260215",temperature=0.3)response=llm.invoke(prompt)print(response.content)

✨ 效果:AI 会严格按照示例的格式输出,不会"自由发挥"。


🏭 实战案例:高炉炉况诊断 Prompt 链

把我们学的三板斧组合起来,做一个完整的炉况诊断系统 😎

fromlangchain.promptsimport(PromptTemplate,ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate)fromlangchain_openaiimportChatOpenAIfromlangchain.prompts.few_shotimportFewShotPromptTemplate# 初始化模型llm=ChatOpenAI(model="doubao-seed-2-0-lite-260215",temperature=0.2,# 诊断场景要低温度,更稳定timeout=600)# ───────────── 第一步:炉况评估 Prompt ─────────────furnace_eval_prompt=ChatPromptTemplate.from_messages([SystemMessagePromptTemplate.from_template("你是一位精通高炉炼铁工艺的资深专家。""你擅长通过分析关键参数判断炉况。""请严格按照给定的输出格式回答,不要随意增删内容。"),HumanMessagePromptTemplate.from_template(""" 请评估以下高炉的炉况: 📊 关键参数: - 风温:{wind_temp} - 风量:{wind_volume} - 风压:{wind_pressure} - 透气性指数:{permeability_index} - 铁水温度:{iron_temp} - 硅含量:[Si] = {si_content} - 炉渣碱度:R = {basicity} - 料速:{charging_speed} 批/h 请输出以下格式的评估结果: 【炉温水平】偏热/正常/偏凉 【炉况稳定性】稳定/波动/异常 【重点关注】列出1-2个需关注的指标 【操作建议】1-2条具体建议 """),])# ───────────── 第二步:执行评估 ─────────────messages=furnace_eval_prompt.format_messages(wind_temp="1180°C",wind_volume="4850 m³/min",wind_pressure="0.385 MPa",permeability_index="34.2",iron_temp="1475°C",si_content="0.38%",basicity="1.18",charging_speed="6.5")response=llm.invoke(messages)print("🔍 炉况评估结果:")print(response.content)

🎬 执行效果预览

🔍 炉况评估结果: 【炉温水平】偏凉 【炉况稳定性】波动 【重点关注】铁水温度偏低(1475°C),硅含量已接近下限 【操作建议】 1. 建议加焦3-5批,提高炉热水平 2. 适当降低风量50-100m³/min,稳定压量关系

💡经验之谈:在工业场景中,Temperature(温度参数)要调低(0.1~0.3),否则 AI 每次回答不一样,现场没法用!


⚡ Prompt 进阶技巧:让AI更"听话"

🚫 负面指令(Negative Instructions)

# ✅ 明确告诉AI不要做什么prompt=""" 你是高炉炼铁专家。请遵循以下约束: - ❌ 不要使用模糊词汇(如"可能"、"大概"、"也许") - ❌ 不要输出与高炉无关的内容 - ✅ 必须引用数据支撑结论 - ✅ 结论必须明确(正常/异常/紧急) """

📋 结构化输出约束

# 让AI输出JSON格式,方便下游解析prompt=""" 分析以下数据并输出JSON格式的结果: {json_data} 请严格按照以下Schema输出: {{ "furnace_status": "stable|unstable|crisis", "confidence": 0.0~1.0, "abnormal_params": ["param1", "param2"], "suggestions": ["suggestion1", "suggestion2"] } """

🔄 思维链(Chain-of-Thought)

prompt=""" 请逐步思考以下高炉炉况诊断问题: 1️⃣ 首先,列出所有异常参数 2️⃣ 其次,分析参数之间的关联性 3️⃣ 然后,找出最可能的根本原因 4️⃣ 最后,给出操作建议 数据:{data} 请按上述步骤逐一输出你的思考过程。 """

这种"先思考再回答"的方式,能显著提升复杂诊断的准确率 📈


📊 本期小结

内容核心要点
Prompt分类System / Human / AI Message
PromptTemplate变量注入,一套模板打天下
ChatPromptTemplate多轮对话管理
FewShotPromptTemplate给AI看样例,输出更规范
工业场景要点低温、结构化、负面指令

💡 小贴士:写好 Prompt 的核心秘诀就一句话——“把AI当成一个刚入职的实习生,你要事无巨细地告诉他该怎么做”


📌 下期预告

第3期:《模型调用篇:选对模型,高炉炼铁事半功倍》🚀

Prompt 写好了,模型怎么选?是选豆包还是 GPT?是选 DeepSeek 还是 Kimi?

不同的模型有不同的"性格"——有的擅长推理,有的擅长代码,有的便宜好用……

下一期,我们手把手教你如何在 LangChain 中配置和切换模型,找到最适合"高炉场景"的 AI 大脑!💪

🌟别忘了收藏+关注,16期连载不迷路!

作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。

👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)
🔔 关注专栏,不错过后续精彩内容!

http://www.jsqmd.com/news/1001109/

相关文章:

  • 破解双层床选型痛点:SURE安全空间方法论如何打造高适配住宿解决方案? - 资讯快报
  • 2026 保姆级教程:微信投票活动怎么制作 - 资讯快报
  • 当钉钉遇上 OpenClaw:会诞生怎样的企业级智能助手?
  • Java计算机毕设之基于JavaScript的个性化音乐推荐系统的设计与实现基于JavaScript的网页音乐播放器的设计与实现个性化音乐智能推荐系统(完整前后端代码+说明文档+LW,调试定制等)
  • 苏州托福雅思培训机构排名前十|留学党必看!靠谱机构首选爱特精英 - 新闻快传
  • 5分钟快速上手Translumo:Windows平台免费实时屏幕翻译工具终极教程
  • i.Evolution开发板:模块化设计如何重塑嵌入式开发流程
  • 计算机毕业设计之新能源汽车电池健康及能耗分析系统
  • 别再死记硬背了!用PyTorch 2.0+的torch.inference_mode(),一次搞定eval和no_grad
  • DSP56720双核音频处理器:架构解析与多核协同设计实战
  • 2026 北京字画上门回收排名|专业靠谱,全城快上门 - 光耀华夏品牌榜
  • 实验6-3:2012年浏览器全景分析-大屏交互设置
  • CESM地球系统模型完整开发包:含自动依赖管理、多平台编译配置与全版本子模块同步工具
  • 微信端图文、视频投票活动详细制作方法|中正投票完整实操详解 - 资讯快报
  • 大模型接入层演进:星链4SAPI的企业级落地价值与技术选型思考
  • 3步拯救损坏二维码:QRazyBox修复工具实战指南
  • UniShare框架:多任务学习在社交分享推荐中的应用
  • 2026青岛配眼镜去哪配更放心,精简速查手册 - 配眼镜新资讯
  • Motorola M5407C3评估套件:基于MCF5407 ColdFire的高性能嵌入式开发实战
  • 从“冲突”到“解决”:一个真实案例看懂SLR(1)如何拯救有问题的LR(0)文法
  • Windows本地调试Hadoop HDFS必备的winutils.exe与配套DLL/LIB文件集合
  • 本地 / 云端 / 命令行三方案,OpenClaw 微信接入深度详解
  • AI 拓展坞技术深剖:沸蛇 VITA Mate1 的四芯片架构、双网冗余设计与 AI 功能落地逻辑
  • 飞思卡尔Kinetis K10 MCU实战:FlexMemory与低功耗设计解析
  • 从阿里腾讯的铂金会员身份,聊聊OCP NVMe规范如何重塑国内数据中心硬件选型
  • 从Vue2升级到UniApp Vue3,你的生命周期函数写法该更新了(含H5/小程序差异处理)
  • #Linux监控与安全Day02:Zabbix 自动发现,Zabbix 报警机制(邮箱),Zabbix 主动监控,监控 Nginx 服务
  • STM32裸机环境下可直接用的静态矩阵运算模块(含修复转置+稳定求逆)
  • Multi-Node LLM Serving: Architecture, Frameworks Best Practices (LLM Generated)
  • Java Flight Recorder 深度实践:从录制到分析的生产级性能诊断