2026-09-28 · 原文发布日
n8n模板:用Groq给供应商RFP打分排名
这个n8n工作流手动启动后从Airtable全局设置表读取当前战略优先级,匹配对应评估准则(如均衡、ESG优先、降本、上市速度)作为系统提示词,批量取出待处理供应商投标。Groq上的大模型按严格JSON格式给每家ESG实践和风险缓解方案打分并附一句理由,再与报价、交期字段按权重合成总分,排序后把分数、理由、名次写回Airtable并把排行榜发到Slack。作者还给出改写准则、调整权重、换模型,以及改为定时触发、邮件通知高管、低分自动拒信等扩展思路。
原文要点
该免费n8n模板手动触发,从Airtable的Global Settings表读当前战略优先级,匹配Balanced、ESG_Focus、Cost_Reduction、Speed_to_Market四种评估准则作系统提示词;批量取“Pending records”视图中的供应商,把ESG实践与风险缓解文本发给Groq上的大模型,要求严格JSON输出ESG分、风险分和一句理由;再与总报价、交期字段按当前优先级对应权重合成总分,排序编号后写回Airtable(含名次、理由、状态),并把排行榜发到Slack。作者还列出改准则、调权重、换模型及定时触发、邮件通知、低分自动拒信等扩展。
这次做成什么
用n8n+Groq+Airtable+Slack搭一条供应商RFP评分流水线:按战略优先级自动打分、加权、排名并广播结果。本站给出按模板说明重建的步骤、完整准则提示词与合成测试数据。
准备什么
- n8n实例及Airtable个人访问令牌(已授权目标Base)
- Groq API密钥(模型在节点内自选,可能产生费用)
- Slack工作区及可发帖的应用凭据与频道ID
- Airtable中建好Global Settings表和供应商投标表
具体怎么做
建Airtable两张表
Global Settings表放一条记录,字段Active Priority取值如Balanced。供应商表字段严格用:Supplier Name、Total Bid Price、Lead Time (Days)、ESG Practices、Risk Mitigation Strategy、Processing Status,以及输出字段Total Score、ESG_Score、Risk_Score、ESG Rationale、BatchRank、Priority Applied。建一个视图命名“Pending records”,过滤Processing Status等于Pending。列名差一个字符代码节点就会报undefined。
手动触发并读取优先级
加Manual Trigger,后接Airtable节点读Global Settings取Active Priority,再用Switch或代码节点按值选择对应准则全文(见下方提示词材料),存为系统提示词变量。作者建议可换成Schedule Trigger每周五17点自动跑。
批量取待评投标
Airtable Search节点指向供应商表的Pending records视图,开启批量返回。若报取数失败,先核对Base/Table/View ID并刷新个人访问令牌。
Groq评分并解析JSON
循环每条记录,HTTP或Groq节点调用所选模型,消息=系统提示词(准则)+用户消息(该供应商ESG Practices与Risk Mitigation Strategy原文),要求只输出{\"esg_score\":...,\"risk_score\":...,\"rationale\":\"...\"}结构。解析失败就换更稳的模型或在提示词里强调“只输出JSON,不要多余文字”。
加权合成总分并排名
代码节点按当前优先级取权重(示例见下方配置),把价格与交期归一化后与AI两项得分合成Total Score,附上Priority Applied。全部处理完按Total Score降序排,生成BatchRank从1开始的序号。
写回并广播
Airtable Update节点逐条写回五项输出字段并把Processing Status改为Scored;Slack节点向目标频道发排行榜文本。channelId填错会静默发不出去,先到Slack里核对频道ID。
可直接复制的材料
均衡准则系统提示词
本站按模板四类准则之一独立编写;ESG_Focus、Cost_Reduction、Speed_to_Market可仿照改写侧重,变量名需与字段一致
你是采购评估专家,当前战略优先级为“均衡(Balanced)”。请评估下面这家供应商的投标文本,对其ESG实践与供应链风险缓解方案分别打分。
规则:
1. esg_score与risk_score均为0到100的整数,分数越高越好;
2. rationale用一句话说明打分依据,不超过60字;
3. 只输出如下JSON,不要输出任何其他文字:{"esg_score": 整数, "risk_score": 整数, "rationale": "一句话理由"}
供应商ESG实践:{{$json["ESG Practices"]}}
供应商风险缓解方案:{{$json["Risk Mitigation Strategy"]}}四类优先级权重配置
本站设计的示例权重,价格与交期需先归一化(如取本批最优值除以该项值),权重可按业务改
{
"Balanced": {"esg": 0.30, "risk": 0.30, "price": 0.25, "leadTime": 0.15},
"ESG_Focus": {"esg": 0.55, "risk": 0.20, "price": 0.15, "leadTime": 0.10},
"Cost_Reduction": {"esg": 0.15, "risk": 0.20, "price": 0.55, "leadTime": 0.10},
"Speed_to_Market": {"esg": 0.15, "risk": 0.15, "price": 0.20, "leadTime": 0.50}
}合成供应商测试数据
本站虚构数据,用于导入Airtable测试,不含真实公司信息
[
{"Supplier Name": "北辰机电", "Total Bid Price": 480000, "Lead Time (Days)": 21, "ESG Practices": "全线使用可再生电力,供应商年度碳审计", "Risk Mitigation Strategy": "双产地备货,关键件安全库存30天", "Processing Status": "Pending"},
{"Supplier Name": "宏远部件", "Total Bid Price": 425000, "Lead Time (Days)": 35, "ESG Practices": "部分产线节能改造,暂无碳披露", "Risk Mitigation Strategy": "单一产地,依赖海运,有应急预案", "Processing Status": "Pending"}
]输入与输出示例
本站虚构演示,分数与总分为按示例权重的演算示意,非模型实际返回
输入
优先级=Balanced;北辰机电报价48万元、交期21天,宏远部件报价42.5万元、交期35天,按上面合成数据的ESG与风险文本送Groq评分。对应输出
示意模型输出:北辰{"esg_score":88,"risk_score":82,"rationale":"碳审计完整且双产地备货降低断供风险"};宏远{"esg_score":60,"risk_score":55,"rationale":"无碳披露且单一产地断供风险偏高"}。按“最优值除以该项值”归一化后加权(0.3/0.3/0.25/0.15):北辰总分约88.1排第1,宏远约68.5排第2,Airtable写回BatchRank并在Slack发出两行排行榜。做完检查这些
- Pending records视图里的合成记录能被整批取出,无取数报错
- 每条记录Groq返回可解析的JSON,含esg_score、risk_score、rationale三键
- 写回Airtable后Total Score、BatchRank、Priority Applied均有值,状态变为Scored
- Slack频道收到按总分降序的排行榜,名次与Airtable一致
容易卡住的地方
- 列名必须是Total Bid Price和Lead Time (Days),差一字代码节点即undefined报错
- 模型未严格输出JSON时解析节点报错,需换模型或收紧提示词
- 价格与交期量纲不同,不归一化直接加权会让大额报价淹没AI分
- 权重小数之和建议为1,改权重后先用两条合成数据手算验证
- Airtable令牌过期或Base ID填错是最常见取数失败原因
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Rank supplier RFPs with Groq LLM, Airtable and Slack
- 原作者
- WeblineIndia
- 原始发布日期
- 2026-09-28T05:32:52.209Z
- 来源
- https://n8n.io/workflows/20000