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 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期连载不迷路!

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

👍 如果觉得有帮助,请点赞、收藏、转发!

版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)

🔔 关注专栏,不错过后续精彩内容!

相关推荐
探物 AI1 小时前
零基础入门3D点云深度学习:从PointNet开始,理解3D数据处理
人工智能·深度学习·3d
真上帝的左手1 小时前
19. 大数据-数据治理-数据标准
大数据·数据分析
硅谷秋水1 小时前
Nautilus:从单一提示词到即插即用机器人学习
人工智能·深度学习·机器学习·机器人
工头阿乐1 小时前
Claude Code 安装手册
人工智能
洛星核1 小时前
Aider 安装、使用方法详细全解
人工智能·github·人机交互·ai编程·agi
cxr8281 小时前
蜂群智能系统中“非必要不添加“原则的有效性再审视:基于分布式决策与通信复杂度的理论推导
人工智能·分布式·智能体
Asize1 小时前
Bun + TypeScript:AI 时代的后端开发入门
人工智能·typescript·bun
Jerryhut1 小时前
opencv对齐算法及其应用
人工智能·opencv·算法
KIO no way1 小时前
AI智能同步和手动同步哪个好_我用三个月数据说话
人工智能