🎯 第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:
python
# ❌ 错误示范:硬编码,每次都要写一遍
prompt = "请分析高炉A在2025年1月1日的生产数据,风温1200°C,风压0.38MPa..."
✅ LangChain 的正确姿势:PromptTemplate
python
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# 📌 定义 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 --- 多人对话管理
场景:高炉中控室不是一个人在战斗,而是操作工、值班主任、工程师之间的对话轮换。
python
from langchain.prompts import ChatPromptTemplate
from langchain.prompts.chat import SystemMessagePromptTemplate, 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 按特定格式输出炉况诊断结果,但光用文字描述它不一定懂。
最好的办法------给它看几个例子 📚
python
from langchain.prompts.few_shot import FewShotPromptTemplate
from langchain.prompts import PromptTemplate
# 📌 给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 Prompt
few_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 链
把我们学的三板斧组合起来,做一个完整的炉况诊断系统 😎
python
from langchain.prompts import (
PromptTemplate,
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate
)
from langchain_openai import ChatOpenAI
from langchain.prompts.few_shot import FewShotPromptTemplate
# 初始化模型
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)
python
# ✅ 明确告诉AI不要做什么
prompt = """
你是高炉炼铁专家。请遵循以下约束:
- ❌ 不要使用模糊词汇(如"可能"、"大概"、"也许")
- ❌ 不要输出与高炉无关的内容
- ✅ 必须引用数据支撑结论
- ✅ 结论必须明确(正常/异常/紧急)
"""
📋 结构化输出约束
python
# 让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)
python
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期连载不迷路!
作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。
👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为) 。
🔔 关注专栏,不错过后续精彩内容!