N8n!AI工作流自动化平台
第 1 节 概述
n8n 是一个非常强大的开源 AI 工作流自动化平台,能够通过拖拽的方式,让各个 AI 工具相互配合,构建复杂的自动化流程,高效处理我们日常遇到的问题。
与 n8n 相关的网址包括:n8n 的官网 、官方文档、 Github 页面。
第 2 节 软件部署
部署方式包括 Node 部署和 Docker 部署两种,因为 n8n 主要通过调用 AI 工具的 API 来工作(也可以调用本地的 AI 模型),所以本身对于机器性能的要求并不高,即便是 NAS 这种性能比较一般的机器也可以轻松部署。
n8n 默认情况下使用SQLite作为数据库,也可以使用PostgreSQL替换默认的SQLite数据库,本文中使用PostgreSQL数据库来构建,构建前需要自行创建一个名为n8n的数据库。
|
|
容器内的/home/node/.n8n保存了配置文件,但是镜像没有并非以root用户登录,因为权限问题无法将文件直接写入,导致加上-v 「PATH_N8N」:/home/node/.n8n 后会无法正常运行,可以先构建容器,将里面的文件复制出来,在加上这句话就可以正常运行了。
默认 n8n 使用http协议访问时只能运行在localhost,而使用https协议时不受限,通过设置N8N_SECURE_COOKIE=false可以不遵守这一限制。n8n 放在内网使用时,可以避免在内网进行反向代理,比较方便,也相对安全。而在公网使用时,这样设置容易导致密码和 API Key 的泄露,还是应当申请证书进行反向代理。
第 3 节 工作流节点
工作流由一个个节点组成,前一个工作流输出的结果传到下一个工作流中作为输入,构成了复杂的自动化流程。
3.1 触发器节点
工作流的第一个节点是触发器节点,触发器节点定义了工作流在何种情况下被触发,主要触发方式有以下几种:

触发方式大致上就是手动触发、定时触发、事件触发这三种。
3.2 工作节点
工作节点主要是一些获取数据和对数据进行处理的节点。
HTTP 节点
HTTP 节点可以进行 HTTP 请求,可以将前一个节点的输出作为Header或者params中的一部分,自身的response也可以作为下一个节点的输入来使用。
比如,在这样一个逻辑链条中:

上一个节点的输入是JSON数据:

我们可以在请求中将其作为参数传入,比如放在body中:

Field 节点
可以从杂乱无章的JSON数据中提取出我们想要的数据,比如,在这样一个逻辑链条中:

输入数据的格式比较凌乱:

我们可以对数据进行处理:

得到简洁的输出数据:

Merge 节点
Merge节点将左侧的输入按照顺序放到一个列表中,传到右侧,如图:

两个输入,经过Merge以后,变成了单输出,输出上写着2个项目。

2个项目的意思就是,Merge节点右侧接有运算时,左侧之前传入的参数会分2次分别传入到右侧,在右侧进行2次计算,并得到2个结果。
Aggregate 节点
上面提到,Merge节点右侧接有运算时会计算多次,有时候当我们想要将其作为一个整体传到右侧进行计算时,就需要用到Aggregate节点。
输入是json数据,当最外层是列表时,列表的每个元素会计算一次,Aggregate节点就是在列表外套一个对象,将列表中的所有元素放到一个对象中,这样就只计算一次。
Split 节点
Split 节点和上面讲的正好相反,比如当我们左侧的输入是一个当做整体的列表时,右侧有一个「新增单位」的运算,如图:

我们的想法是,列表中的每一个值都要新增,这时候我们就需要用到Split节点。Split节点就是把对象展开成列表。
Code 节点
Code节点上可以运行JS程序或者python程序,因为python程序还在测试阶段,使用体验不是很好,本人建议还是直接写JS程序。

Code节点有2种Mode,分别是Run Once for All Items和Run Once for Each Item,前面那种模式,可以省略掉一个Aggregate节点,因为不管前面有几个项目,都会被当做一个整体一次处理,而后面那种模式会将每个项目单独处理。

两种模式下的语法也有些微不同。
AI 节点
AI 节点是一个很伟大的东西,它提供了一个非常强大的功能,把非结构化、结构未知的数据转成结构化的数据。

左侧传入的是一段食谱文本和一些类别信息:

我们在 AI 节点上写上一些提示词:
|
|
连接DeepSeek模型和Structured Output Parser,指定输出格式如下:

这样 AI 模型经过运算,就会以我们想要的格式将结果输出。
第 4 节 实例
举一个实例来说明,在之前的文章中,我们知晓了Mealie是一款功能强大的食谱管理系统,但是维护其繁杂的数据库是一件辛苦的事情,实在是非常的劝退。
所以,很容易想到,如果使用n8n这样一个自动化平台,若是只需要将食谱的文字部分一股脑的传入进去,平台会调用AI功能自动为我们将文字解析成结构化的数据,并调用 API 接口传入 Mealie,那岂不是非常令人振奋吗!
经过我的不懈努力,最终也是成功实现了这一功能!
4.1 常规参数
一些常规数据,类型为字符串或者数字,使用DeepSeek直接识别。
|
|
4.2 营养参数
营养参数让DeepSeek根据食谱的配料自己估算。
|
|
4.3 烹制方法
让 AI 自动分析文本,总结归纳。
|
|
4.4 效果
其他部分涉及到了许多的逻辑运算和JS脚本,处理方式相对比较传统,按照调用各种 API 的逻辑顺序依次调用,即可实现。
