第6期链式调用Chain — 串联高炉数据处理的流水线专栏《LangChain框架在高炉炼铁智能化领域的应用》前情回顾上期我们给AI装上了记忆让它不再是金鱼脑本期重点Chain链—— 把零散的AI调用串成自动化流水线 引言从作坊到流水线前面5期我们分别学了期数学的东西就像……第1期LangChain基础建了一个AI炼铁作坊第2期Prompt工程给作坊里的师傅写了操作手册第3期模型调用选了台好机床第4期输出解析器装了质检员第5期记忆系统给了师傅记事本但问题是——目前这些步骤都是散装的❌ 现状各自为战 数据采集 ──→ 人工操作 → Prompt编写 → 模型调用 → 结果解析 每个步骤都要手动衔接效率低下✅ 理想状态流水线 数据输入 ──→ Chain链 ──→ 结构化输出 ↓ 自动化流转处理LangChain 的 Chain 机制就是要把这些零散的步骤串成一条自动化的流水线 什么是 Chain一句大白话Chain 把多个处理步骤串起来前一步的输出自动成为后一步的输入就像高炉炼铁本身铁矿石 焦炭 ──→ 高炉 ──→ 铁水 ↑ ↑ ↑ 输入 Chain 输出LangChain 里的 Chain 也一样原始数据 ──→ Prompt模板 → LLM调用 → 结果解析 ──→ 结构化结果 ↑ ↑ ↑ ↑ ↑ 输入 Chain: 自动串联起来 基础篇三种常用 ChainChain 1️⃣ LLMChain — 最基础的单人操作台fromlangchain.chainsimportLLMChainfromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAI# 定义Prompt模板promptPromptTemplate(input_variables[furnace_name,si_content,iron_temp],template 请分析{furnace_name}的炉况 关键数据 - 硅含量[Si] {si_content}% - 铁水温度{iron_temp}°C 请给出 1. 炉温判断偏高/正常/偏低 2. 硅含量评价 3. 综合建议 )# 构建ChainchainLLMChain(llmChatOpenAI(modeldoubao-seed-2-0-lite-260215,temperature0.3),promptprompt)# 使用Chain一步到位resultchain.run(furnace_name5号高炉,si_content0.45,iron_temp1505)print(result) 效果不用再手动prompt.format()→llm.invoke()→ 提取结果Chain 帮你全部干了Chain 2️⃣ SimpleSequentialChain — 串行流水线场景高炉日报生成需要多步——①分析数据 ②生成结论 ③翻译成报告格式fromlangchain.chainsimportSimpleSequentialChainfromlangchain.chainsimportLLMChainfromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAI llmChatOpenAI(modeldoubao-seed-2-0-lite-260215,temperature0.3)# ️ 第一步数据分析链analyze_promptPromptTemplate(input_variables[raw_data],template分析以下高炉数据找出异常指标和趋势\n{raw_data})analyze_chainLLMChain(llmllm,promptanalyze_prompt)# ️ 第二步生成结论链conclusion_promptPromptTemplate(input_variables[analysis_result],template基于以下分析结果给出炉况结论和操作建议\n{analysis_result})conclusion_chainLLMChain(llmllm,promptconclusion_prompt)# ️ 第三步格式化输出链format_promptPromptTemplate(input_variables[conclusion],template 将以下结论整理为标准的日报格式 {conclusion} 输出格式 ### 炉况总评 ### 关键指标 ### 异常预警 ### 操作建议 )format_chainLLMChain(llmllm,promptformat_prompt)# 串联三条链daily_report_pipelineSimpleSequentialChain(chains[analyze_chain,conclusion_chain,format_chain],verboseTrue# 显示中间过程)# 执行输入原始数据直接输出格式化日报reportdaily_report_pipeline.run( 5号高炉 2025-06-05 数据 风温: 1200°C, 风压: 0.39MPa, 风量: 4900m³/min 铁水温度: 1485°C, 硅含量: 0.40%, 炉渣碱度: 1.18 焦比: 360kg/t, 利用系数: 2.35t/(m³·d) )print( 生成的日报)print(report)流水线效果输入原始数据 ↓ Step 1: 分析异常指标 ← AI自动分析 ↓ Step 2: 生成诊断结论 ← AI自动诊断 ↓ Step 3: 格式化输出 ← AI自动排版 ↓ 输出标准日报 Chain 3️⃣ SequentialChain — 多输入多输出流水线工业级场景真实的日报生成需要保留中间结果而且需要多个输入。fromlangchain.chainsimportSequentialChain,LLMChainfromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAI llmChatOpenAI(modeldoubao-seed-2-0-lite-260215,temperature0.3)# ───────── Step 1: 参数分析 ─────────param_analysis_promptPromptTemplate(input_variables[furnace,wind_temp,iron_temp,si],template 分析{furnace}的参数 风温{wind_temp}°C 铁水温度{iron_temp}°C 硅含量{si}% 请输出JSON格式的参数分析结果。 )param_chainLLMChain(llmllm,promptparam_analysis_prompt,output_keyparam_analysis# 指定输出变量名)# ───────── Step 2: 趋势分析 ─────────trend_promptPromptTemplate(input_variables[iron_temp,si],template 分析趋势铁温{iron_temp}°C硅{si}%给出趋势判断。 )trend_chainLLMChain(llmllm,prompttrend_prompt,output_keytrend_analysis# 不同的输出变量名)# ───────── Step 3: 综合报告 ─────────report_promptPromptTemplate(input_variables[param_analysis,trend_analysis],template 综合以下分析生成日报 参数分析{param_analysis} 趋势分析{trend_analysis} 输出格式 【参数总评】 【趋势判断】 【操作建议】 )report_chainLLMChain(llmllm,promptreport_prompt,output_keydaily_report)# 串联支持多输入多输出pipelineSequentialChain(chains[param_chain,trend_chain,report_chain],input_variables[furnace,wind_temp,iron_temp,si],output_variables[param_analysis,trend_analysis,daily_report],verboseTrue)# 执行resultpipeline({furnace:5号高炉,wind_temp:1200,iron_temp:1485,si:0.40})print(\n 最终报告:)print(result[daily_report])print(f\n 中间结果也保留了:)print(f参数分析:{result[param_analysis][:50]}...)print(f趋势分析:{result[trend_analysis][:50]}...) SequentialChain vs SimpleSequentialChain特性SimpleSequentialChainSequentialChain输入单输入多输入输出单输出多输出保留中间结果❌ 不保留✅ 全部保留适用场景简单转换流水线复杂多步处理 实战高炉炉况全自动诊断流水线把前面的知识串起来构建一个完整的高炉炉况诊断Chainfromlangchain.chainsimportSequentialChain,LLMChainfromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAIfromlangchain.output_parsersimportPydanticOutputParserfrompydanticimportBaseModel,FieldfromtypingimportList,Optionalimportjson# ─────────── 1. 定义输出结构 ───────────classFurnaceDiagnosisReport(BaseModel):诊断报告timestamp:strField(description诊断时间)furnace_name:strField(description高炉名称)overall_status:strField(description总体状态)key_parameters:dictField(description关键参数)issues:List[str]Field(description发现的问题)suggestions:List[str]Field(description操作建议)risk_level:strField(description风险等级: low/medium/high)report_parserPydanticOutputParser(pydantic_objectFurnaceDiagnosisReport)# ─────────── 2. 构建各环节 Chain ───────────llmChatOpenAI(modeldoubao-seed-2-0-lite-260215,temperature0.2)# Chain 1: 数据解析parse_promptPromptTemplate(template从以下传感器数据中提取高炉的关键参数用JSON格式输出\n{sensor_data},input_variables[sensor_data])parse_chainLLMChain(llmllm,promptparse_prompt,output_keyparsed_data)# Chain 2: 参数分析analysis_promptPromptTemplate(template 分析以下高炉参数数据 {parsed_data} 请从以下维度分析 1. 风温风压风量匹配性 2. 炉热水平铁温硅含量 3. 透气性状况 4. 综合判断 输出分析结果。,input_variables[parsed_data])analysis_chainLLMChain(llmllm,promptanalysis_prompt,output_keyanalysis)# Chain 3: 诊断建议diagnosis_promptPromptTemplate(template 基于以下分析结果给出诊断报告 {analysis} 请严格按照以下格式输出 {format_instructions},input_variables[analysis],partial_variables{format_instructions:report_parser.get_format_instructions()})diagnosis_chainLLMChain(llmllm,promptdiagnosis_prompt,output_keydiagnosis_json)# ─────────── 3. 串联组装 ───────────furnace_pipelineSequentialChain(chains[parse_chain,analysis_chain,diagnosis_chain],input_variables[sensor_data],output_variables[parsed_data,analysis,diagnosis_json],verboseFalse)# ─────────── 4. 执行 ───────────sensor_data 5号高炉 2025-06-05 14:30 风温: 1205°C, 风压: 0.395MPa, 风量: 4950m³/min 铁水温度: 1488°C, 硅含量:0.38%, 炉渣碱度:1.18 透气性指数:33.5, 料速:6.2批/h, 焦比:362kg/t resultfurnace_pipeline({sensor_data:sensor_data})# 解析最终结果try:reportreport_parser.parse(result[diagnosis_json])print(f 高炉诊断报告)print(f{*40})print(f{report.timestamp})print(f{report.furnace_name})print(f 总体状态:{report.overall_status})print(f⚠️ 风险等级:{report.risk_level})print(f\n 发现的问题:)fori,issueinenumerate(report.issues,1):print(f{i}.{issue})print(f\n 操作建议:)fori,suggestioninenumerate(report.suggestions,1):print(f{i}.{suggestion})exceptExceptionase:print(f解析错误:{e})print(f原始输出:{result[diagnosis_json]})执行效果 高炉诊断报告 2025-06-05 14:30 5号高炉 总体状态: 正常运行但需关注 ⚠️ 风险等级: low 发现的问题: 1. 铁水温度(1488°C)接近正常区间下限 2. 硅含量(0.38%)偏低预示炉温可能继续下行 操作建议: 1. 建议适当增加焦比2-3kg/t稳定炉热水平 2. 密切跟踪下两炉铁水温度和硅含量变化 3. 如铁温持续低于1485°C需采取升温措施 Chain 模式选择指南你的任务类型 │ ├── 简单问答 → LLMChain一步搞定 │ ├── 数据处理流水线明确步骤→ SimpleSequentialChain │ └── 例数据采集→清洗→分析→报告 │ ├── 复杂多步任务多输入/多输出→ SequentialChain │ └── 例同时分析多个参数并汇总 │ └── 需要自主决策调用 → Agent下期讲 └── 例根据炉况自主选择分析方式 本期小结链类型比喻高炉场景推荐指数LLMChain单工序工位单一参数分析⭐⭐⭐SimpleSequentialChain传送带日报生成流水线⭐⭐⭐⭐SequentialChain多线程传送带全流程诊断⭐⭐⭐⭐⭐核心心法Chain 的本质是编排——把复杂的任务分解成多个小步骤让 AI 一步一步处理每一步的输出作为下一步的输入。就像高炉炼铁一样原料→预热→还原→熔融→出铁每一步都不可或缺 下期预告第7期《RAG检索增强生成高炉知识库的百科全书》Chain 学会了但你还缺一个知识库大模型再怎么训练也不可能记住所有的高炉操作案例、技术参数、故障处理方法。而且当需要查询最新的企业标准或历史维修记录时模型就抓瞎了。这时候就需要RAG检索增强生成——给 AI 配上一本随时查阅的百科全书下期我们来看看怎样让AI在回答问题时自动从知识库中检索最新、最准确的信息然后基于这些信息生成答案✨16期连载过半点赞收藏支持一下~作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容