ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

化工工艺转大模型:模型给的参数为什么不能直接用

化工工艺转大模型:模型给的参数为什么不能直接用 版权与内容来源声明本文为原创整理。文中涉及官方文档、开源仓库、论文与公开报道的内容均在附表 A 中标注来源引用官方原文保持原样不作改写。文中命令、版本号与界面截图以本文成文时的实测/核验结果为准标注「待验证」的部分请以你本地环境实际输出为判断依据。本文不推荐任何不合规的软件获取方式也不对任何收益结果作承诺。转载请注明出处。第1章 化工参数从来不是孤立的1.1 现场的参数是一张关系网干过中控或工艺的人都有一个肌肉记忆看一眼画面上的温度眼睛会顺手扫过旁边的压力和流量。因为这几个数是一起动的。温度上去了为了不让反应跑飞冷却水流量要跟上进料配比变了反应热的量级也变压力和温度的联锁点跟着要重新看某个参数越限触发的不是「提示一下」而是联锁——一组参数绑在一起一个越限就按预设动作走仪表会把装置切到安全状态。现场之所以这么设计是因为工程上早就承认一个事实参数不是孤立的参数之间的关系才是被管控的对象。这一点跟法规的要求是一致的不是行业经验的自说自话。《中华人民共和国危险化学品安全法》已于 2025 年 12 月 27 日通过、自 2026 年 5 月 1 日起施行截至 2026-10-03 已生效其中第四十七条规定使用危险化学品的单位的使用条件(包括工艺)应当符合法律、行政法规的规定和国家标准、行业标准的要求注意这句里的说法是「使用条件包括工艺」而不是「某一个参数」。法律管的是条件整体也就是那些参数合在一起构成的状态。1.2 模型吐出来的参数是孤零零的字符串现在把大模型接进来。你让它根据一段工艺描述输出一组参数它大概率会返回一个很齐整的 JSON比如温度 320、压力 1.8、配比 3.5。看起来很专业问题恰恰在这里对比项现场的参数模型返回的参数单位挂在仪表量程和 DCS 点位上是固定的通常只是一个数没有单位字段允许区间设计区间、操作区间、报警值、联锁值分层写死在系统里模型不知道只能靠上下文猜参数之间的关系由联锁逻辑和操作规程固化完全不存在每个字段各自独立越限后果触发报警或动作有人必须响应没有任何后果就是一段文本错了会被拦住吗会被工艺和仪表拦住不会除非你自己写代码拦最后一行的差别是致命的。现场之所以安全不是因为参数算得准而是因为不准的时候有人拦得住。模型输出缺的正是这一层。1.3 一条判据校验层能拦下的错不要指望靠提示词解决这是全文的核心判据后面每一章都在落实它校验层能拦下的错不要指望靠提示词解决。原因很朴素。提示词是「软约束」——你写了「温度必须在允许区间内」模型大概率会照做但这是一个概率问题不是承诺。而校验是「硬约束」——代码说这个数不在区间里它就是不通过没有例外。把判断权交给一段概率性文本等于把一个确定性要求降级成了运气。工艺参数这件事上这个降级不能接受。所以在动手写「生成」之前先把「校验」建起来。下一章说这三重校验怎么分工。第2章 先建校验层再谈生成2.1 校验层是什么把联锁的思路搬到代码里化工里有一层专门用来「兜底」的系统叫安全仪表系统SIS它独立于日常的控制系统存在平时不动一旦参数越限就按预设动作把装置切到安全状态。围绕这类系统的设计有《石油化工安全仪表系统设计规范》GB/T 50770-2013住房和城乡建设部发布现行状态待验证——该标准属于工程建设类标准未纳入国家标准全文公开系统我未能在该系统核到其现行状态。大模型应用里的校验层思路一样它不负责「算得更好」只负责「算得不对的时候拦得住」。分工一一对应——联锁靠参数越限触发校验层靠每个字段跑规则触发联锁的动作是停车、切断、泄压校验层是拒绝输出、转人工、降级输出。两者都不能省。2.2 三重校验的分工一个参数的输出至少要过三道关校验层拦什么错典型失败例子靠什么实现第一重数值范围单个值超出允许区间压力给到 8.0而设备设计压力只有 2.5上下限比较第二重互相制约每个值单看都对组合起来不对温度和压力都在区间内但这个温度配这个压力会进入不该出现的状态规则/约束表达式第三重量纲与单位值对、量纲或单位错320 被当成开尔文实际是摄氏度单位库 量纲检查顺序不能反。先过范围再过关系最后核量纲。原因是量纲错了之后前两重的比较等于拿两种不同物理量比大小结果没有意义——得先确认「这是同一个物理量」比较才成立。2.3 形状交给 schema内容交给校验层这里要区分两件事很多坑都出在把它们混为一谈形状字段齐不齐、类型对不对、枚举值合不合法——可以交给模型的结构化输出能力内容数值合不合理、单位对不对、组合可不可行——必须交给校验层。OpenAI 官方文档对结构化输出的说明是它会确保模型始终生成符合你所提供的JSON Schema的响应因此你不用担心模型漏掉必填字段、或者编造一个不在枚举里的值。但同一份文档也写明了例外在模型因安全原因拒绝回答、达到最大输出长度、或被内容过滤中断的情况下输出可能不满足该 schema截至 2026-10-03的官方文档表述。Anthropic 官方文档里对应的做法是给工具定义加上strict: true官方说明是这可以让工具调用始终严格匹配你给的 schema。也就是说厂商能帮你守住形状但守不住内容。下面这份 schema 表达了「温度必须带单位」但它没管这个温度合不合理。⚠️代码待验证{type:object,properties:{temperature:{type:object,properties:{value:{type:number},unit:{type:string,enum:[degC,K]}},required:[value,unit]},pressure:{type:object,properties:{value:{type:number},unit:{type:string,enum:[kPa,MPa,bar]}},required:[value,unit]}},required:[temperature,pressure]}schema 只能告诉你「单位是这三个之一」不能告诉你「这个压力配这个温度能不能接受」。后者是校验层的事。第3章 第一重数值范围校验3.1 「区间」不是一条线是好几条线新手最容易犯的错是把「允许区间」当成一个数。真实装置上同一个参数有好几个区间含义完全不同区间名称谁定的越界意味着什么模型输出落在这里该怎么办设计区间设备与工艺设计超出就是不满足设计条件直接拒绝输出操作区间工艺卡片与操作规程正常生产不该出现拒绝或转人工确认报警区间工艺与仪表整定需要操作员关注降级为只给参考区间联锁区间联锁逻辑触发动作拒绝且必须提示高危所以「参数在不在范围内」这个问题必须先回答「你说的是哪个范围」。代码里要把这几条线分别存下来不能只存一对上下限。3.2 边界、开闭与有效位三条容易被忽略的细节开闭区间等于上限到底算不算越界工艺上「不得超过」和「必须低于」是两回事代码里要用还是明确写出来不要靠默认。有效位模型给「1.8374 MPa」而你的仪表分辨力只有 0.01 MPa那多出来的位是没有信息量的。有效位和量程不是一个概念。量程与精度仪表量程决定这个数能不能被测到精度决定它能被相信到哪一位。模型不知道这两个前提。3.3 一个最小可用的范围校验器把上面的规则落成代码核心就是一个「按量程 类型分别判」的函数。下面这段没有在真实项目里跑过。⚠️代码待验证fromdataclassesimportdataclassdataclassclassRange:low:floathigh:floatlow_inclusive:boolTrue# 是否含下限high_inclusive:boolTrue# 是否含上限defin_range(value:float,rng:Range)-bool:ok_lowvaluerng.lowifrng.low_inclusiveelsevaluerng.low ok_highvaluerng.highifrng.high_inclusiveelsevaluerng.highreturnok_lowandok_high# 规则一设计区间超了就拒绝输出DESIGN{temperature:Range(-20.0,180.0),pressure:Range(0.0,2.5),}defcheck_range(params:dict)-list:problems[]forname,rnginDESIGN.items():ifnamenotinparams:problems.append(f缺少字段{name})continueifnotin_range(params[name],rng):problems.append(f{name}超出设计区间 [{rng.low},{rng.high}])returnproblems这里的要点不是代码多复杂而是把「设计区间」这件事从提示词里搬进代码。只要它还在提示词里它就是个建议搬进代码它才是规则。第4章 第二重互相制约关系校验4.1 单看都对合起来不对这一重最容易被跳过因为它不报「越界」它报的是「不该同时出现」。举个化工之外的、标准里写得很直白的例子进入受限空间作业时需要连续检测气体浓度。判断依据不是「氧气合格就行」也不是「可燃气体合格就行」而是几个指标同时合格——任何一项不满足作业就不允许进行GB 30871-2022《危险化学品企业特殊作业安全规范》2022 年 3 月 15 日发布、2022 年 10 月 1 日实施现行全部代替 GB 30871-2014。这就是典型的「互相制约」每一项单看都有它的区间但你真正管的是它们的联合条件。4.2 把联锁表翻译成约束现场本来就有这份东西叫联锁表或联锁逻辑图。转行做校验层做的其实是「翻译」把「这个温度下不允许出现这个压力」写成一条组合判断把「冷却水流量低于某个值就必须退出该温度区间」写成参数之间的依赖规则把「某个参数变了、另一个参数的允许范围要跟着变」写成随输入变化的动态区间。翻译的时候有个坑联锁表是给人看的约束是给代码看的。人能从上下文补全省略掉的前提代码不能。所以每一条规则都要写清楚「在什么前提成立时才生效」否则会把本该放行的组合也拦下来。4.3 交叉校验的实现要点⚠️代码待验证defcheck_interlock(params:dict)-list:把联锁表里的组合条件写成规则。每条规则自带生效前提。problems[]tparams.get(temperature)pparams.get(pressure)# 规则一仅在温度已经给出、且落在高温段时才检查压力组合iftisnotNoneandt120.0andpisnotNoneandp1.6:problems.append(高温段不允许出现该压力需复核联锁逻辑)# 规则二配比与温度的联合禁止区域rparams.get(ratio)iftisnotNoneandrisnotNoneandt150.0andr2.0:problems.append(高温配稀配比可能是模型在凑数)returnproblems实现上要注意两点每条规则都要能单独开关某条整定不准时单独停掉排查而不是把整个校验层关掉。规则命中要留下可读的原因报「联锁不通过」没人能修报「高温段不允许出现该压力」操作员才知道去看哪。第5章 第三重量纲与单位校验5.1 三种翻车单位错、有效位错、换算错这一重是实践中最常见的翻车点因为它「看着像对的」翻车类型具体表现为什么危险单位错该是摄氏度被当成开尔文数值本身没越界方向却反了换算错kPa 与 MPa 差 1000 倍质量分数与摩尔分数混用差一个数量级区间校验形同虚设有效位错给出仪表根本分辨不出的位数让人误以为数据比实际更可信单位缺失只有数字没有单位下游只能靠猜猜错没人知道单位错之所以最危险是因为它常常不会触发越界。一个数在区间内、组合也满足你根本不会怀疑它直到现场发现动作方向反了。5.2 用量纲而不是用单位名单位名是可以随便写的字符串「1.8 bar」和「1.8 MPa」在文本上一模一样地合法但量纲物理量的种类比如温度、压力、长度——它决定了两个数能不能直接比较不一样压力永远是压力长度永远不是压力。所以第三重的正确做法是先把每个数带上量纲再做校验。Python 里常用的是pint这类单位库它会在运行时拒绝把不同量纲的数相加或比较。⚠️代码待验证importpint uregpint.UnitRegistry()ALLOWED_UNITS{temperature:{degC,K},pressure:{kPa,MPa,bar}}defto_base(params:dict)-dict:把带单位的输入统一换算到基准单位量纲不对时直接报错。out{}forfieldin(temperature,pressure):itemparams.get(field)ifnotitemorunitnotinitem:raiseValueError(f{field}缺少单位字段)ifitem[unit]notinALLOWED_UNITS[field]:raiseValueError(f{field}的单位不在允许清单内)qureg.Quantity(item[value],item[unit])out[field]q.to_base_units()# 统一到基准单位避免后续比较出错returnout要点是不要相信模型自觉写对单位也不要相信自己在提示词里写清了单位。单位只有在代码里被显式声明、并且在进入比较之前统一换算过才可信。5.3 一张单位校验清单每次新增字段过一遍这几条单位字段是否真的存在不是只在提示词里写了单位是否在该物理量的允许集合内进比较之前是否统一换算到基准单位有效位是否超过仪表的实际分辨力用到的换算关系能否追到出处。最容易漏的是第一条——提示词里写了单位不等于字段里有单位。这份资料是什么一份从零基础到能自己动手做 Agent 的大模型学习路线图把「先补哪块知识」按阶段排好了。校验层要用到结构化输出和工具调用正好是路线图里「动手做 Agent」那一段的必修内容。放在资料包里扫码即可获取第6章 校验不通过时代码该做什么6.1 三种行为不要只有一种很多人的校验层只有两个分支通过 / 报错。但真实场景里「报错」太重了。更合理的是按风险分三档行为什么时候用下游看到什么风险量级拒绝输出触及设计区间、联锁条件一条明确的拒绝原因没有数值最高转人工落在需要判断的灰区原始输出 校验结论 待确认项中降级为只给参考区间只是想知道「大致在什么范围」只给区间不给点值最低关键在第一列和第三列要对齐越是危险的字段越不给「点值」。给区间比给点值安全因为区间本身就在表达「这只是一个范围不是可直接执行的值」。6.2 分级依据回到「错了会怎样」怎么把参数分配到这三档判据不是「这个参数技术含量高不高」而是「错了会怎样」。这个思路在法规里是有对应写法的。《中华人民共和国安全生产法》2021 年第三次修正版自 2021 年 9 月 1 日起施行截至 2026-10-03 仍是现行有效版本在已公布的全国人大常委会 2026 年度立法工作计划中未见对该法的修改安排第四十一条要求生产经营单位应当建立安全风险分级管控制度按照安全风险分级采取相应的管控措施。同一部法律第二十五条把「制止和纠正违章指挥、强令冒险作业、违反操作规程的行为」写成安全生产管理人员的法定职责第五十七条要求从业人员在作业过程中「遵守本单位的安全生产规章制度和操作规程」。这几条连起来读指向的是同一件事风险要分级行为要对应。校验层的三档行为本质上就是这个逻辑在软件里的落地。6.3 一条可写进代码的返回约定返回约定要让下游一眼看出「这个数到底经没经过校验」。⚠️代码待验证defvalidate(params:dict)-dict:顺序固定先范围再互相制约最后量纲。try:normalizedto_base(params)# 第三重所需的前置换算exceptValueErrorase:return{status:rejected,reason:str(e),value:None}hardcheck_range(normalized)# 第一重越限即拒绝ifhard:return{status:rejected,reason:hard,value:None}softcheck_interlock(normalized)# 第二重组合可疑则转人工ifsoft:return{status:needs_human,reason:soft,value:normalized}return{status:ok,reason:[],value:normalized}两个细节绝不返回未经校验的原始值。不允许出现「先给出去回头再补校验」这种写法一旦下游拿到没标记的数它就再也分不清真假了。拒绝也要可程序化识别。OpenAI 官方文档说明基于安全的拒绝会通过响应里的refusal字段返回因此可以被程序检测到——这一点值得利用而不是把拒绝当成一段没法处理的文本。第7章 转行者这套经验怎么变成你的项目7.1 你原来的经验哪些能直接复用能直接复用的比你以为的多看懂联锁表和操作规程是第二重规则的原型知道参数按设计、操作、报警、联锁分层是第一重区间设计的基础对单位和量程敏感对应第三重的白名单与换算会写工艺卡片和台账对应校验规则的文档化哪怕只会 VBA 或组态脚本也是校验层能起步的底子。真正要改的只有一件提示词不是规则。形状交给 schema内容交给校验层。真正值钱的不是你懂大模型而是你比算法工程师更清楚「什么组合在现场是不该出现的」。这份判断力是纯算法背景的人补不出来的。7.2 要补的三件事结构化输出与 schema 的写法把「字段要有单位」这类要求写成 schema让模型先守住形状。用代码描述约束把口头规则、联锁表、操作区间改写成可执行的判断这一步是转行者的主战场。把「拒绝」当成产品行为来设计拒绝不是失败是这套系统的核心功能之一。要把拒绝原因写得让操作员能看懂、让程序能识别。7.3 一个可以拿出去讲的项目如果只做一个项目建议就做「工艺参数校验层」输入一段工艺描述生成让模型按结构化输出给出参数校验三重校验依次跑输出按三档行为返回并把每条规则的命中情况记录下来。这个项目的好处是它有一个清晰的合规锚点——《危险化学品安全法》第四十七条要求「使用条件包括工艺」符合规定和标准而不是要求某个参数符合。把这句话翻译成代码就是你项目的立项理由。如果想让项目更经得起追问就再加一个评测环节准备一批已知有问题的参数组合看校验层的通过情况、拒绝情况以及「本该拦下却放行」的情况按字段分别统计。这份资料是什么一套完整的《LangChain LangGraph MCP 智能体开发实战》视频课7 个模块从私有化部署一路做到 Agent 全流程。校验层做完之后要接进实际的 Agent 流程这套课里的工具调用与流程编排部分能直接对上。放在资料包里扫码即可获取附表 A本文引用事实与出处对照表事实出处本文位置《中华人民共和国安全生产法》经 2021 年 6 月 10 日第十三届全国人大常委会第二十九次会议第三次修正本决定自 2021 年 9 月 1 日起施行中国人大网npc.gov.cn《全国人民代表大会常务委员会关于修改〈中华人民共和国安全生产法〉的决定》http://www.npc.gov.cn/npc/c2/c30834/202106/t20210611_311937.html第6章《安全生产法》第四十一条原文「生产经营单位应当建立安全风险分级管控制度按照安全风险分级采取相应的管控措施。」同上中国人大网第6章《安全生产法》第二十五条原文含「制止和纠正违章指挥、强令冒险作业、违反操作规程的行为」第五十七条原文含从业人员应当「遵守本单位的安全生产规章制度和操作规程」同上中国人大网第6章截至 2026-10-03《安全生产法》未见在 2026 年度立法工作计划中安排修改预备审议项目含修改矿山安全法未含安全生产法全国人大常委会 2026 年度立法工作计划来源法治日报、中国人大网央视网报道 https://news.cctv.com/2026/04/24/ARTICPliJv0PC5HQ1SFIkZLP260424.shtml第6章《中华人民共和国危险化学品安全法》由十四届全国人大常委会第十九次会议于 2025 年 12 月 27 日通过自 2026 年 5 月 1 日起施行共 10 章 127 条中国人大网npc.gov.cn主席令第六十四号 http://www.npc.gov.cn/c2/c30834/202512/t20251227_450713.html 法律全文 http://www.npc.gov.cn/npc/c2/c30834/202512/t20251227_450708.html第1章、第7章《危险化学品安全法》第四十七条原文「使用危险化学品的单位的使用条件(包括工艺)应当符合法律、行政法规的规定和国家标准、行业标准的要求」后文另含「建立健全使用危险化学品的安全管理规章制度和安全操作规程」等同上中国人大网法律全文第1章、第7章《危险化学品安全管理条例》沿革2002 年 1 月 26 日国务院令第 344 号公布2011 年第 144 次常务会议修订通过、国务院令第 591 号公布、2011 年 12 月 1 日施行根据 2013 年 12 月 7 日《国务院关于修改部分行政法规的决定》修订应急管理部mem.gov.cn网站法规文本 https://www.mem.gov.cn/fw/flfgbz/fg/201709/U020211013592859685561.pdf第1章说明该条例相关规定与 2026-05-01 施行的《危险化学品安全法》不一致的部分不再适用其是否被正式废止待验证GB 30871-2022《危险化学品企业特殊作业安全规范》强制性国标标准状态「现行」2022-03-15 发布、2022-10-01 实施全部代替 GB 30871-2014国家标准全文公开系统openstd.samr.gov.cnhttps://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno561B95121C30853A6B45CA9471F39239第4章GB/T 50770-2013《石油化工安全仪表系统设计规范》标准编号与发布单位住房和城乡建设部住房和城乡建设部公告 2018 年第 185 号 https://www.mohurd.gov.cn/gongkai/zc/wjk/art/2020/art_17339_246317.html 现行状态待验证该标准属工程建设类标准未纳入国家标准全文公开系统未能核到其现行状态第2章OpenAI 官方说明结构化输出Structured Outputs确保模型输出符合所提供的 JSON Schema但在拒绝回答、达到最大输出长度、被内容过滤中断时可能不符合 schema基于安全的拒绝可通过refusal字段被程序化检测OpenAI 官方 API 文档「Structured model outputs」https://developers.openai.com/api/docs/guides/structured-outputs 截至 2026-10-03第2章、第6章Anthropic 官方说明给自定义工具定义加strict: true可让工具调用始终严格匹配所给 schemaAnthropic 官方文档「Tool use with Claude」https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview 截至 2026-10-03第2章本文出现的代码示例范围校验器、联锁交叉校验、单位换算、校验编排均未在真实项目中运行本文写作时未执行第3、4、5、6 章均标「代码待验证」附表 B术语速查表术语一句话解释在本文哪里用到联锁把几个参数绑在一起任一越限就按预设动作把装置切到安全状态第1章、第2章、第4章量纲物理量的种类如温度、压力、长度决定两个数能不能直接比较第5章有效位一个数里真正有意义、能被分辨出来的位数第5章、第3章安全仪表系统SIS独立于常规控制系统的一层保护平时不动、越限时动作第2章结构化输出让模型按你给的 JSON Schema 返回结果的能力第2章、第7章JSON Schema用 JSON 写的一份「字段长什么样」的说明书第2章三重校验数值范围 → 互相制约 → 量纲与单位顺序固定第2章至第5章降级输出不直接给点值只给参考区间降低被误用的风险第6章拒绝输出校验不过就明确不给数值只给拒绝原因第6章转人工落在需要判断的灰区时把原始输出和校验结论一起交给人第6章DCS集散控制系统把现场仪表信号汇总到中控室的一套系统第1章联锁表记录「参数在什么组合下触发什么动作」的工程文件第4章写在最后这篇用到的资料写这篇文章时把相关的官方文档和源码又翻了一遍顺手也整理了几份配套的东西大模型学习路线图从零基础到能自己动手做 Agent按阶段说明每一步该学什么、哪些可以先跳过《LangChain LangGraph MCP 智能体开发实战》视频课7 个模块从私有化部署、EmbeddingRAG 到 MCPAgent 全流程AI 大模型知识库在线可查Agent Skills 从入门到落地、Claude Skills 完全指南等专题按目录浏览即可640 套 AI 大模型行业报告 经典 PDF 书籍看行业落地案例和别人怎么做的时候用得上大模型零基础到精通教学视频跟着敲一遍比只读文档快得多资料是我自己整理的放在下面这个码上扫码即可获取添加时备注「AI」优先通过。资料按「先路线、再动手、最后查漏」的顺序整理好了建议先看学习路线那一份照着它挑一条适合自己当前基础的路径再往下看。
返回列表