n8n-制作第一个与大模型配合的 n8n 程序
1. n8n:制作第一个与大模型配合的 n8n 程序
[!info] 阅读导览
第 1 章 适合谁阅读 → 第 2 章 需求描述(工单匹配) → 第 3 章 为什么需要 n8n → 第 4 章 工作思路 → 第 5 章 详细配置步骤(五步) → 第 6 章 实践之后体会 n8n 的设计思路
2. 这篇文章适合谁阅读?
适合对 n8n 完全没有了解,并且运维技巧几乎为 0 的人阅读。
这篇文章不但会基于一个简单的 Case 讲解 n8n 的使用方法,还会讲述在制作程序中遇到的每一个坑,以及遇到这些坑如何解决,并从用户心理的角度去做一些分析。希望能够通过这篇教程降低 n8n 学习曲线的陡峭程度,尤其是对于新手来说。
这篇文章所涉及到的程序,需要用到 Google 的 API,所以需要读者已经购买了 n8n 的官方云服务版,或者在自己的服务器上部署了 n8n。关于如何部署,详细方法见:如何在服务器部署/安装 n8n。
3. 需求描述
假如你是一个 SaaS 系统的负责人,客户在使用 SaaS 的时候都会产生大量的疑问(每天超过 100 个),这些疑问变成工单提交给客服。
现在你计划对这个 SaaS 做 3 项改进,你希望知道这 3 项改进完成之后会带来多少收益,有多少工单里面涉及的问题可以得到彻底的解决,所以客户不再需要提交工单。
所以这本质上是一个将所有工单的聊天记录内容和 3 个已知的问题去匹配的过程。
4. 为什么需要 n8n 才能解决这个需求?
这个需求乍一听,可以通过上传 excel 直接让 ChatGPT/kimi 来解决,但实际上这两者都不能很好地解决这个问题。
因为 ChatGPT 在读取文件的时候,会以 RAG 的方式读取,无法确保针对工单内的每一行数据都进行处理。如果将工单作为文字直接发出来,一次对话的上下文大概能容纳 30000 字,假定一个工单的聊天记录长度为 500 个字,那么一次处理仅支持 60 个工单,如果我们要处理 3000 个工单(1 个月的量)就需要循环 50 次这样的操作。
此外由于大模型的幻觉问题,大量的数据以非结构化的方式提供给 AI,很难保证最终的效果。
ChatGPT 是一个产品,在工程设计上,它不被允许在对话过程中自我调用。这意味着,你无法让 ChatGPT 根据 Excel 中的某一列单元格里的内容,去输出另一列单元格里的内容。
所以合理的方式是把 3 个已知问题的定义写清楚,作为提示词的一部分,然后每次只给 AI 提供一个工单的内容,询问 AI 是否判定这个工单命中已知的 3 个问题。
把 AI 作为逻辑的一部分,而不是全部,是更好的选择。
拓展阅读:🧙 欢迎来到 n8n 中文教程
5. 工作思路
5.1. 程序设计原则
- 免费:尽量使用免费的 API
- 可复用
5.2. 工作方法
- 一切看不懂的东西,第一时间询问 ChatGPT——比如错误码看不懂,就可以直接问 ChatGPT

- 理解 n8n 的界面设计思路,可以阅读:🗃️ 熟悉 n8n 的界面
- 每个步骤都要做单步调试
- 涉及到大模型的环境,单步调试的循环次数要降低,以节省 API 调用次数
- 大模型 API 往往会在其官网提供调试环境——这种调试环境给出的结果和 API 实际调用可能会有出入,所以在调教 Prompt 时,单步调试 + 看 log 是非常有必要的,值得庆幸的是 n8n 的 log 看起来很好懂
6. 详细配置步骤
整体流程如下:
flowchart LR
A[手动触发器<br>每月运行一次] --> B[Google Sheets<br>读取全部工单]
B --> C[Basic LLM Chain<br>Gemini 逐条判定]
C --> D[Google Sheets<br>回填打标结果]
6.1. 第一步:如何触发程序运行
选择新增第一个节点时,系统会询问你希望通过什么方式来触发这个程序的运行。

假定我们每个月只需要分析一次工单,一次分析 3000 条,那么完全可以考虑选择第一个选项,每次需要分析的时候手动点击一下启动即可。
所以我们的第一个节点如下图所示:

6.2. 第二步:让程序获取到所有工单
假定我们有 3000 条工单需要被分析,那么这 3000 条工单最好能够以 Excel 的形式给到程序,这样程序就可以循环处理 3000 次,完成我们的工单分类目标。
那么程序要怎么读取到这 3000 条工单呢?
点击界面上的 + 号,就可以发现我们有不少选项,他们分别是:
- 外界服务的 API,比如 Google Sheets
- 数据处理节点,用来做数据的过滤或者转化
- Flow 节点,主要是条件、循环、合并等逻辑操作
- Core 节点,主要是代码节点
- 人工智能节点
- 添加另一个触发器,里面有一个节点叫做 Local File,意思是如果本地文件发生变化,系统自动执行流程


所以我们现在有两个选择:
- 将数据存储在 Google Sheets 之中
- 将数据存储在本地文件,本地文件发生变化,自动触发
针对这个需求我建议我们使用第一个选项,将数据存储在 Google Sheets 之中,原因如下:
- 我们使用的版本是部署在服务器上面的,更改本地文件很不方便,使用 Google Sheets,每次把需要处理的内容贴到对应的 Sheet 页即可
- 我希望这个程序运行是我手工控制的,而不是文件变更就自动进行
所以我们选择 Google Sheets 的 Get rows in sheet 的节点。因为我们这一个步骤是需要读取 Sheets 中的信息。


配置节点的第一个步骤是需要配置相关的授权凭证,这样 n8n 才能读取到 Google Sheets 中的数据。


在 n8n 的界面上,一些需要配置的界面通常都会有文档的超链接,但是 n8n 的官方文档写的真的是一言难尽,非常不好读,怎么办?
打开官方文档,**把官网文档的标题(Google:OAuth2 single service)复制出来,加上一个 How to create 作为关键词去 Google 里面搜索,搜到的教程一般比 n8n 官方文档的更好。**比如 Google Sheets 的 OAuth2 配置,我利用关键词 how to create Google sheets OAuth2 single service 就搜到了这个教程,排名第一:

因为实际上我们在这个场景下面要搜索的本质上是如何配置一个 Google Sheets API 凭证,这本身不是 n8n 功能的一部分,所以 n8n 的文档写的非常敷衍了事,但是我们可以通过搜索引擎找到好用的文档,一些常用的服务,甚至是能搜到中文文档的。
按照上面的文档,跟随步骤操作即可。
配置好之后,就需要正式开始读取操作,把 Document 设置成通过 URL 读取,然后把你希望程序读取的 Sheets 的网址复制进去,就可以读取到对应的 Sheet 页了。


然后这个时候选择 Test Step,我们就可以从 Sheet 中读取到对应的数据,第一步就大获成功了。


回到 Workflow 的界面,我们可以看到一个绿色的 7 items 的文案,这代表刚刚系统已经从 Sheets 中读取到了 7 条独立的记录。
6.3. 第三步:添加大模型节点
首先我们选择添加下一个节点,在 AI 节点内选择 Basic LLM Chain。关于所有 AI 节点的区别,在 AI 节点详细介绍 内会有更详细的说明。

新添加的 AI 节点默认都会带一个接收聊天消息的触发器,但是在咱们的场景里面,我们就是希望 AI 节点能够处理 Excel 的文件内容即可,所以我们可以把这个触发器删掉。

接下来就是要给 LLM 的节点配置一个大模型的 API,我们点击 Model 的 + 号,并且选择 Google Gemini Chat Model。如果你有别的大模型的 API,也可以直接使用。我们这里选择 Google Gemini 的原因是它有免费的额度。
[!note] 网络提示
如果你 n8n 的运行环境不能访问 Google 或 OpenAI,建议使用 CloseAI 或 WildCard 代理。支持免科学访问 OpenAI 和 Anthropic 的所有模型,支付宝付款,按量付费。

登录到 https://aistudio.google.com/,可以在 Google 的 AI Studio 白嫖免费的 Gemini API。
注意,Gemini 目前只面向特定区域的用户开放 API,所以你一定要确保自己上网的方式是正确的。

然后把创建好的密钥填写到 n8n 的界面上面去,这样模型就挂载好了。

6.4. 第四步:撰写提示词 + 调试
在 Google AI Studio 中调试提示词
进入 Google AI Studio 的界面中,选择 New Prompt,然后选择 Chat prompt 模式。就可以在对话框中开始调试 Prompt,这个环境调试 Prompt 是免费的,不需要花钱。

但是在这个环境内调试出来的 Prompt 不代表是万能的,因为 API 实际调用的时候,大模型返回的结果可能会不一样,所以在这个环境调试出来的 Prompt 还需要在 n8n 内被配置之后再进行测试。
在 n8n 的 LLM 节点配置 Prompt,并且进行调试
在第三步的时候,我们已经为 LLM 节点配置好了 Google 的 Token,接下来我们需要把 Prompt 配置节点到里面去。

首先我们需要设置 Prompt 的来源,这里面有两个选项:
| 选项 | 说明 |
|---|---|
| Take From previous node automatically(从上游自动获取) | 自动将上游的 Chat Trigger(聊天触发器)中的最新一条消息作为 Prompt 发送给大模型。有一定迷惑性:如果你的 Prompt 是在上游节点中生成的动态 Prompt,但它并不来自一个 Chat Trigger,那你应该选 Define below |
| Define below(在下方定义) | 在这个选项下,参数页面会额外增加一个 Text 参数,可以直接填写你所需要的 Prompt |
在我们的场景里面,需求是把 3 个已知问题的定义写清楚,作为提示词的一部分,然后每次只给 AI 提供一个工单的内容,询问 AI 是否判定这个工单命中已知的 3 个问题,循环多次直到所有需要处理的工单都被处理完了。
所以大模型接收的内容样例可能是下面这个样子的:
我需要你帮忙做一个工单的分类,这里有非常多的工单。
我需要你根据工单里面的客服和客户的聊天内容。帮忙判断我给你的工单属于下面哪一类问题。
问题 1 的定义是 XXXX
问题 1 的典型问法有:
- xxxx
- xxxxx
- xxxx
问题 2 的定义是 XXXX
问题 2 的典型问法有:
- xxxx
- xxxxx
- xxxx
问题 3 的定义是 XXXX
问题 3 的典型问法有:
- xxxx
- xxxxx
- xxxx
只需要输出问题的分类即可,例如"【问题 1】、【问题 3】"
请不要输出除此以外的任何内容,也不需要做任何的解释性说明。
下面这个是你需要分类的工单
工单编号: {每次需要处理的那一个工单的编号}
工单内容: {每次需要处理的那一个工单的内容}
拆解下来,我们希望大模型能够接收的其实是一个固定的提示词模板,其中有一些变量(数据来源是上游节点)在循环的过程中替换。
所以我们应该选择 Define Below 这个选项。
当我们把 Prompt 参数设置为 Define below 时,下方就会出现一个 Text 的文本框,这个文本框可以填写提示词。
我们就可以把上面的提示词写进去,但是这个时候就会有一个问题,我们要如何才能把变量也写入文本框内呢?


Text 的这个文本框是支持填写变量的,你只需用鼠标要把变量拖拽到文本框内即可,并且文本框的最下方会显示一个 Result,预览一个效果,帮助你判断自己填写的内容是否正确。
这个时候我们就完成提示词的配置,接下来可以点击 Test Step 来实现这一个步骤的测试。

点击测试之后,就会显示大模型给出的结果,这个时候可以切换到 Logs 查看入参和出参是否符合自己的诉求,如果不符合就需要调整 Prompt。
上面这个章节非常简要的介绍了关于 LLM 节点的应用,关于更多的 LLM 节点的详细介绍,请参考文档:🌟 AI 节点详细介绍
6.5. 第五步:将打标结果输出到最初的 Sheets 之中
现在我们获得了已经大模型打标的结果,下一步就应该将这些结果回填到 Sheets 之中。
所以我们需要在大模型节点的下一个步骤新增一个 Google Sheets 的节点。和上一个节点有所不同,上个节点我们的需求是读取这个 Sheets 页的全部数据,这次我们需要更新数据,给每一行数据附上大模型打标的结果。

所以我们需要根据自己的需求选择 Append or update row in sheet 的选项。由于 Token 之前已经配置过了,所以这次这个节点不需要再额外配置 Token。
选择这个节点界面如下图所示:

将大模型的结果填充到表格内,首先需要一列数据,比如工单编号作为唯一的关联标识,不然程序就不知道该将哪个值填充到哪里去。
这个时候就会发现大模型输出的时候只输出了问题分类,没有输出编号,但是这个时候不需要调整 Prompt,因为 n8n 自带了隐式参数传递。

在选择入参区域的变量时,不仅仅可以选择上一个节点的变量,也可以选择上上个、上上上个等所有前序节点的变量。这些复数个数据之间经过多个程序处理传递,但是 n8n 会在系统内部自动把他们关联起来,确保他们内部是唯一关联的,所以你不需要担心数据会不会"串错"。这就是 n8n 内部很重要的隐式传递的设计思路。
所以我们可以选择 Key A 作为关联的变量,同时把上上个节点读取到的 Key_A 的值填充进去,选中作为关联键的变量会有一个 using to match 的标识。


然后把大模型的结果填充到 Key_B 之中去,这样程序就会把 Key_B 的值替换成大模型输出的 Text 信息。
点击 Test Step,程序开始执行,Key B 的数据已经被替换。

打开 Google Sheets,也会发现已经被替换了。

替换前

替换后
7. 实践之后,再体会 n8n 的设计思路
经过上面的实践,n8n 的基本能力已经被展示出来了,通过这个简单的 Case 我们就可以体会到 n8n 的一些设计思路,他们分别是:
- 循环:n8n 非常重视循环,如果从 Excel 里面读取数据,那么接下来的整个流程会自带一个循环操作,非常便于批量处理,帮助打工人节省时间,并且每个步骤批量处理了多少个 items,会在界面上外显出来
- 参数的隐式传递:n8n 为了解决单个 item 在处理过程过于复杂,到最后输出时需要返回第一步去匹配标识位的问题,自动关联了每一个 item 在每一个步骤的所有变量,确保他们不会串错,极大降低了使用成本
- 单步调试:n8n 的每个节点都支持单步调试,可以极大程度的降低低代码配置门槛,每配置完一个节点都可以选择执行一下,不需要全部配置完再执行,这样可以发现每个步骤可能会出现的错误,便于调试和开发
在这里我想强调一下循环的重要性,作为普通打工人,我们希望借助大模型 or 计算机解决的大部分都是重复劳动,n8n 高度集成了循环相关的功能模块,对于打工仔来说意义重大。

[!success] 核心要点
- 流程骨架:手动触发 → Google Sheets 读取工单 → Gemini 逐条判定 → 回填打标结果
- 为什么用 n8n:ChatGPT 无法按行精确处理、上下文窗口有限、不能自我调用——把 AI 作为逻辑的一部分而非全部
- 两个关键设计:循环(自动批量处理全部行)+ 隐式参数传递(前序节点变量自动关联,不串错)
- 调试方法论:每个节点单步调试;大模型环境降低循环次数省 API;AI Studio 调好的 Prompt 还要在 n8n 里复测