AI PLAY玩法更新持续收录
← 回到更新流

2026-09-04 · 原文发布日

AI辅助调查生产批次偏差根因

这个n8n模板面向制药和制造业质量管理:偏差信息通过webhook提交后,GPT-4.1智能体按需调取MES设备事件、电子批记录操作日志、环境监测数据,并检索历史CAPA知识库,输出排序后的根因假设、证据、置信度和建议措施,存入PostgreSQL留痕。置信度低就转人工;达标则发Slack给QA审批,通过后回写QMS系统并可选生成CAPA草稿。

原文要点

原模板的事实边界是:偏差由POST webhook进入,字段含偏差ID、批次ID、产品、描述与发现元数据;流程先规范化字段并生成会话ID,再由OpenAI调查代理按需要用HTTP工具读取MES/historian设备事件、eBR操作日志、EMS环境读数,并对历史已关闭CAPA做向量库RAG检索;输出解析为排序假设、证据、置信度和立即措施,写入PostgreSQL作为GxP导向留痕;低置信度发Slack转人工,达标则等QA批准,批准后PATCH回QMS并可建CAPA草稿。导读未给可导入文件、确切表列名、阈值数值或API路径。

这次做成什么

在本站做一个可隔离演练的最小版偏差根因分流台:不进真实QMS,不碰真实MES,用合成偏差JSON驱动一条 n8n 逻辑,练习“触发→归一化→AI假设→置信度分支→留痕/审批输出”的字段设计;原模板界面、节点名和列名需在你的n8n与QMS核对,本页不声称已复刻原工作流。

准备什么

  • 一个可开测试webhook的n8n实例,允许新建临时凭据但不在生产环境启用写入
  • OpenAI兼容模型凭据或本地mock模型;若没有向量库,先用本站合成CAPA片段代替RAG
  • PostgreSQL测试库与Slack测试频道,或全部改成日志输出以避免外发
  • 一份合成偏差输入,不含真实客户、批号可追溯到真人的信息或密钥

具体怎么做

  1. 接入触发并定义字段映射

    在n8n新建手动/测试Webhook,POST body约定为 deviation_id、batch_id、product、description、detected_at、detected_by_role、severity。第一个处理节点只保留这些字段,补 session_id=deviation_id+detected_at 的哈希或时间后缀,补 investigation_status=received;得到一条统一JSON,任何缺字段都先进入manual_review而不是让AI猜。

  2. 准备三类只读证据与假RAG

    不要先连真实MES/eBR/EMS。建三个HTTP Tool占位或三个Set节点,分别返回合成设备事件、操作日志、环境读数;历史CAPA用本站材料里的两段合成记录放到提示词上下文。AI代理提示词强制只输出JSON:hypotheses数组含rank、cause、evidence_refs、confidence、recommended_action,外加overall_confidence与needs_human。

  3. 解析JSON并做置信度分支

    在OpenAI后加结构化解析/JSON校验:若解析失败、overall_confidence低于本站练习阈值0.70、或hypotheses为空,则走低置信分支:插入PostgreSQL状态low_confidence,发Slack测试频道“转人工”,webhook返回{accepted:true,route:manual}。达标分支不直接写QMS,先产生approval_token并进入等待/模拟审批;练习中用另一个测试webhook输入approve或reject。

  4. 审批后的留痕与回写占位

    approve时把approved_root_cause、approved_actions、qa_decision_at写入同一调查表,再用HTTP占位PATCH到 sandbox-qms.local/deviations/{deviation_id},body只含已批准字段;reject时更新状态rejected并发Slack。完成输出只回测试频道:偏差ID、采纳根因、措施数、CAPA草稿是否仅为draft。

可直接复制的材料

偏差调查代理提示词(本站独立版)

可直接粘贴;阈值0.70为本站练习设定,真实阈值需在质量体系中验证。

你是制药/制造质量偏差调查助手,但不得宣称已完成监管判定。只能基于用户提供的偏差字段、合成MES设备事件、合成eBR操作日志、合成EMS环境读数、合成历史CAPA片段推理。输出必须是单个JSON对象,不要Markdown,不要额外文字。结构:{"needs_human":boolean,"overall_confidence":0到1的数字,"hypotheses":[{"rank":1,"cause":"中文短句","evidence_refs":["mes:...","ebr:...","ems:...","capa:..."],"confidence":0到1,"recommended_action":"立即可执行且低风险的动作"}],"immediate_actions":["不超过3条"],"audit_note":"说明证据不足处"}。规则:证据不足就needs_human=true;不要编造未提供的设备、人员、时间;置信度只表示本次合成练习的一致性,不代表合规结论;所有引用只能来自输入证据编号。

合成偏差POST测试数据

全字段虚构;把URL指向测试webhook,不要复用真实批次号。

{"deviation_id":"DEV-2026-0904-001","batch_id":"B-EX-1001","product":"示例口服液A","description":"灌装中段扭矩报警2次,首件复测合格但批记录第7步签名延迟","detected_at":"2026-09-04T10:22:00+08:00","detected_by_role":"QA巡检","severity":"medium"}

合成证据片段与CAPA上下文

代替真实MES/eBR/EMS/RAG;接入真实系统时把键名映射为你的API返回,不要硬编码生产地址。

{"mes":["mes:E01 10:19 灌装线扭矩上限报警","mes:E02 10:21 操作员复位后继续运行"],"ebr":["ebr:S07 批记录步骤7签名时间10:35,晚于系统步骤完成10:24","ebr:S05 清场确认完整"],"ems":["ems:R201 温度22.1C,湿度45%,无超限"],"closed_capa":["capa:C-88 相似扭矩报警根因为夹具磨损,措施为班前点检","capa:C-91 签名延迟根因为交接班培训不足"]

本站练习用调查表与配置占位

SQL和变量为本站独立示例;不要把sandbox域名当真实QMS,不要把密钥写进流程说明。

-- 仅测试库,非原模板列名;原表列需按你下载/查看的工作流核对
CREATE TABLE IF NOT EXISTS public.deviation_investigations_practice(
  id bigserial primary key,
  session_id text not null,
  deviation_id text not null,
  batch_id text not null,
  route text not null,
  overall_confidence numeric(4,3),
  result_json jsonb not null,
  qa_decision text default 'pending',
  created_at timestamptz default now()
);
-- n8n环境占位:OPENAI_CRED=测试凭据;PG_CRED=测试库;SLACK_CHANNEL=#qa-practice;QMS_BASE=https://sandbox-qms.local;APPROVAL_WAIT=true

输入与输出示例

本站虚构演示,未调用原模板、OpenAI、Slack或QMS;数字只是让字段对应,非作者运行结果。

输入

POST 上面的合成偏差:DEV-2026-0904-001,批次B-EX-1001,描述为扭矩报警2次且步骤7签名延迟,detected_by_role为QA巡检。

对应输出

示意返回:{"accepted":true,"route":"manual","session_id":"DEV-2026-0904-001-202609041022","reason":"overall_confidence=0.62低于0.70或证据链不完整"};同时在测试表生成result_json,包含两条假设:夹具磨损引用mes:E01/capa:C-88,交接培训不足引用ebr:S07/capa:C-91,Slack测试频道收到转人工通知。

做完检查这些

  • 缺description或severity时,流程必须先标记manual_review,不能进入AI假设输出
  • AI返回非JSON、hypotheses为空或任一confidence超出0到1,都判定为解析失败并转人工
  • overall_confidence为0.69时只写测试表和Slack转人工,不产生approval_token或QMS PATCH
  • 模拟审批reject后,测试表qa_decision=rejected,且不创建CAPA草稿、不发送完成摘要
  • 所有证据引用必须能在本次输入的mes/ebr/ems/capa片段中找到,否则needs_human=true

容易卡住的地方

  • 原导读没有给出确切PostgreSQL列名、阈值、QMS路径,照抄本站的practice表到生产会造成审计字段口径错误
  • 把AI置信度当成合规结论会放大风险;它只应触发分流,最终根因需要QA批准
  • 真实MES/eBR/EMS常有分页、时区和权限差异,先只读沙盒验证字段,再让代理调用工具
  • 不要在提示词或Slack消息里放真实患者、客户姓名、密钥或未脱敏批记录

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Investigate batch deviation root causes with GPT-4.1, QMS, and Slack
原作者
Oneclick AI Squad
原始发布日期
2026-09-04T02:49:07.629Z
来源
https://n8n.io/workflows/19170