在漫长的折腾生涯中,玩过太多东西,但是大浪淘沙,最终剩下来常用的只有那么几款。 在这个系列中,准备介绍一些非常有意思的开源产品。

image.png

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

image.png 注册之后,就会正式进入n8n系统中

image.png

图例可以看到,n8n的主界面分为两部分, Workflows 和 Credentials。Workflows 主要负责流程的编排+运行控制。Credentials主要负责流程运行中与其他第三方应用的连接与授权。

功能节点介绍

n8n中的功能节点共分为 6 类,分别是:

  1. Action in an app

连接海量的第三方应用,包括常用的 Notion、AWS 相关产品、Google 相关产品以及长用的数据库类产品(MySQL、Redis、Elasticsearch等) 和社交类产品(Facebook、Twitter)等等共 1013 个

详情可以参考: https://n8n.io/integrations/

  1. Data transformation

关于数据转换相关的节点,包括时间操作、数据修改、数据过滤、循环遍历、数据统计、数据排序、自定义代码处理等。

  1. Flow

关于流程相关的节点,包括流程分支判断、流程过滤、流程合并、流程等待以及错误流程处理等相关。

  1. Core

核心节点,包括代码执行(JavaScript、Python)、HTTP请求、Webhook、指令执行、等等。

  1. Advanced AI

关于 AI 大模型相关节点,包括OpenAI 相关调用、其他 LLM 相关调用以及AI相关的记忆功能节点、联网功能节点等。

  1. Trigger

触发器相关,n8n支持手动触发、定时触发 webhook 触发、聊天消息触发等多种触发方式。

绘制第一个自动化流程

接下来通过制作一个基于 OpenAI 的聊天机器人来熟悉一下自动化流程的制作。整体流程如图。

image.png

接下来从头一步一步来讲一下

首先,在 Workflow 中新建一张画布,点击画布中的加号,添加第一个节点。在弹出的抽屉中,可以通过搜索功能,直接定位到 Chat Trigger。

可以对 Chat Trigger 进行一些初始化设置。例如: 添加 Options 控制跨域、文件上传等。也可以开启公共服务选项,设置一些授权、聊天模式等。具体的不赘述。

接下来点击 Chat 节点后的加号,添加 AI Agent 节点用于连接大模型,处理聊天相关内容。

image.png

image.png AI Agent 可以设置类型(工具类、聊天类、函数调用类、SQL执行类等等,还是非常丰富的)、设置自定义 Prompt、可以通过其他的 OutputParser 节点对输出内容进行格式化等,可玩性非常高。

image.png

在 AI Agent 节点上,可以看到,需要连接 ChatModel(必要)、Memory(非必要)、Tool(非必要)、OutputParser(非必要)等节点。点击 ChatModel的加号,添加对应的大模型接口。

image.png

可以看到目前工人支持 7 类接口。这里可以根据自己的情况选择对应的节点。 理论上配置完 chat model 节点之后,就已经完成了一个基础的基于大模型的聊天工具。点击下方的 caht 按钮,便可以开始聊天了。

image.png

拓展:

如果你不满足于仅仅制作一个类似 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/

例如:

  • 以下流程可以检查工作流中内置节点的版本号是不是最新版 image.png

  • 从Zigbee2mqtt请求和接收Zigbee备份并通过SFTP保存 image.png

  • 网页爬虫,并通过电子邮件把结果以CSV格式发送并保存到Google表格和Microsoft Excel image.png

n8n 最大的优势是自由,通过自由开放的方式,集成了众多能力。你只要有需求,基本上都能在 n8n 中找到解决方案,以上远远不是 n8n 的极限,只是我们想象力的极限而已。