在漫长的折腾生涯中,玩过太多东西,但是大浪淘沙,最终剩下来常用的只有那么几款。 在这个系列中,准备介绍一些非常有意思的开源产品。
n8n 是一个开源免费的自动化工作流平台,它提供了 200多个不同的节点来自动化工作流程,通过编排,可以实现跨不同服务的自动化流程。
相比市面上已有的 Zapier 等其他商业化自动化工具,n8n稍显稚嫩。但是免费开源以及强大的拓展性和自定义能力使得n8n在这个领域也是独树一帜。
部署
n8n 分为两个版本:
- 云服务版本: 官方提供的云服务版本,到官网上注册账号使用,需要付费
- 自托管版本: n8n项目本身有开源版本,可以自己编译源码部署,也可以通过官方提供的Docker镜像,使用 Docker 部署
推荐使用 Docker 进行部署,简单快捷省心
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
在默认情况下,n8n会使用 SQLite 数据库进行数据存储,我们可以通过配置环境变量,把存储切换到 PostgresDB
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
-e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
-e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
-e DB_POSTGRESDB_USER=<POSTGRES_USER> \
-e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
-e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
部署完成之后,打开 http://<IP>:5678
注册之后,就会正式进入n8n系统中
图例可以看到,n8n的主界面分为两部分, Workflows 和 Credentials。Workflows 主要负责流程的编排+运行控制。Credentials主要负责流程运行中与其他第三方应用的连接与授权。
功能节点介绍
n8n中的功能节点共分为 6 类,分别是:
- Action in an app
连接海量的第三方应用,包括常用的 Notion、AWS 相关产品、Google 相关产品以及长用的数据库类产品(MySQL、Redis、Elasticsearch等) 和社交类产品(Facebook、Twitter)等等共 1013 个
详情可以参考: https://n8n.io/integrations/
- Data transformation
关于数据转换相关的节点,包括时间操作、数据修改、数据过滤、循环遍历、数据统计、数据排序、自定义代码处理等。
- Flow
关于流程相关的节点,包括流程分支判断、流程过滤、流程合并、流程等待以及错误流程处理等相关。
- Core
核心节点,包括代码执行(JavaScript、Python)、HTTP请求、Webhook、指令执行、等等。
- Advanced AI
关于 AI 大模型相关节点,包括OpenAI 相关调用、其他 LLM 相关调用以及AI相关的记忆功能节点、联网功能节点等。
- Trigger
触发器相关,n8n支持手动触发、定时触发 webhook 触发、聊天消息触发等多种触发方式。
绘制第一个自动化流程
接下来通过制作一个基于 OpenAI 的聊天机器人来熟悉一下自动化流程的制作。整体流程如图。
接下来从头一步一步来讲一下
首先,在 Workflow 中新建一张画布,点击画布中的加号,添加第一个节点。在弹出的抽屉中,可以通过搜索功能,直接定位到 Chat Trigger。
可以对 Chat Trigger 进行一些初始化设置。例如: 添加 Options 控制跨域、文件上传等。也可以开启公共服务选项,设置一些授权、聊天模式等。具体的不赘述。
接下来点击 Chat 节点后的加号,添加 AI Agent 节点用于连接大模型,处理聊天相关内容。
AI Agent 可以设置类型(工具类、聊天类、函数调用类、SQL执行类等等,还是非常丰富的)、设置自定义 Prompt、可以通过其他的 OutputParser 节点对输出内容进行格式化等,可玩性非常高。
在 AI Agent 节点上,可以看到,需要连接 ChatModel(必要)、Memory(非必要)、Tool(非必要)、OutputParser(非必要)等节点。点击 ChatModel的加号,添加对应的大模型接口。
可以看到目前工人支持 7 类接口。这里可以根据自己的情况选择对应的节点。 理论上配置完 chat model 节点之后,就已经完成了一个基础的基于大模型的聊天工具。点击下方的 caht 按钮,便可以开始聊天了。
拓展:
如果你不满足于仅仅制作一个类似 chatgpt 的聊天工具,那么推荐一些其他辅助工具帮助你打造一个更加个性化的聊天助手:
- Memory
通过 memory 接口可以使聊天具备历史记忆功能,每次聊天的时候可以让大模型知道前因后果。 memory 接口有:(Window Buffer Memory、Motorthead、Postgres Chat Memory、Redis Chat Memory、Xata、Zep 等选择)
- HTTP Request Tool 可以让你的大模型具备给指定接口发送请求的能力
- Calculator 可以让你的大模型具备算数计算的能力
- SerpApi 可以让你的大模型具备 Google 搜索的能力
- Vector Store Tool 可以让你的大模型具备知识库检索的能力
- Call n8n Workflow 可以让你的大模型能够调用其他的 n8n 流程
流程模板推荐
此外,官方还提供了一个模板库,允许你使用一些官方分享或者其他人分享的优秀流程
参考地址: https://n8n.io/workflows/
例如:
-
以下流程可以检查工作流中内置节点的版本号是不是最新版
-
从Zigbee2mqtt请求和接收Zigbee备份并通过SFTP保存
-
网页爬虫,并通过电子邮件把结果以CSV格式发送并保存到Google表格和Microsoft Excel
n8n 最大的优势是自由,通过自由开放的方式,集成了众多能力。你只要有需求,基本上都能在 n8n 中找到解决方案,以上远远不是 n8n 的极限,只是我们想象力的极限而已。