🎯 第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 Prompt | AI的"人设" | 告诉AI:你是个有30年经验的炼铁总工 |
| 💬用户提示 | Human Message | 用户的问题 | 现场操作工的问话 |
| 🤖AI回复 | AI Message | AI的回答 | 总工给出的建议 |
🔧 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期连载不迷路!
作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。
👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)。
🔔 关注专栏,不错过后续精彩内容!