教程地址:https://github.com/datawhalechina/handy-n8n/tree/main/c04

子工作流

n8n 支持从一个工作流调用另一个工作流。子工作流可以用于将复杂的任务分解为更小的、可重用的部分。
工作流通过 Execute Workflow 来调用子工作流,子工作流通过 Execute Sub-Workflow Trigger 来触发。

我们可以创建独立的子工作流,也可以将子工作流嵌入到主工作流中。
下面的例子我们将以一个简单的计算器子工作流为例,演示如何创建和使用子工作流,该计算器子工作流支持加、减、乘、除四种运算。
在新建工作流时,添加节点,选择When Executed by Another Workflow作为触发节点。
在这里插入图片描述
在弹出的工作流配置窗口中,我们定义工作流接收的参数。这里我们定义了三个参数,分别是 a、b 和 operator,分别表示两个操作数和运算符。
在这里插入图片描述
后续通过 Switch 节点,根据 operator 的值,分别调用不同的运算节点。如下是完整的子工作流
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里添加新的触发器
在这里插入图片描述
在这里添加执行workflow
在这里插入图片描述
创建子工作流入口:
在这里插入图片描述

code节点定义字段
在这里插入图片描述

为了演示,我们可以中同一个工作流添加额外的触发节点来模拟主工作流,在主工作流的中,添加 Execute Workflow 节点,将会弹出配置窗口。我们需要选择需要调用的子工作流,这里我们选择 From list模式,并在下拉框中选择当前的工作流。选择工作流后,将展示该子工作流的参数列表, 我们从前序节点中拖拽参数到子工作流对应的参数,完成子工作流的参数配置。
在这里插入图片描述
创建的子工作流需要save之后才能在主工作流的Execute workflow中保存成功。需要注意的是operator传入的是String
在这里插入图片描述
如果传入非0/1/2情况会提示错误信息。
在这里插入图片描述
传入0,可以看到走了第一条通道。
在这里插入图片描述
在这里插入图片描述

错误处理

在我们设计的工作流时,考虑容错是非常重要的。n8n 使用Error Trigger节点来触发错误处理逻辑。
错误处理是独立的工作流,以下是配置步骤:

创建新的工作流,选择(在In other ways)Error Trigger作为触发节点,Error Trigger节点没有配置项。
添加后续的节点,如发送邮件Email节点,配置邮件内容,如错误信息。保存工作流并命名, 如error notify。如下是Error Trigger节点的数据示例,我们可以在后续的节点中通过 表达式来引用这些数据,如触发错误的工作流名称、执行 URL 等。

在这里插入图片描述
没有配置项
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
关于通知,示例中使用邮件发送服务,我们需要配置 SMTP,以网易邮箱为例,登录网易邮箱的网页版, 在导航菜单中选择设置,在弹出的页面中选择POP3/SMTP/IMAP,选择开启 IMAP/SMTP 服务,在授权密码管理部分,选择新增授权码,授权码即为三方使用网易邮箱时的密码。 网易邮箱的 SMTP 地址为smtp.163.com,端口号为465。

当然我们也可以使用其他通知服务,如飞书、企业微信等。
现在,当工作流中发生错误时,n8n 将自动调用我们配置的错误处理工作流。我们可以在前序的子工作流的 示例中通过更改参数值,模拟错误,触发错误处理工作流。最终将收到如下示例的邮件

在这里插入图片描述
【To be solved】用了授权码不知道为什么一直显示连接有问题,

n8nAI相关概念
n8n 一大优势就是其内置了 AI 相关的节点和处理方式,可以方便用户构建 AI 相关的应用,包括 AI 聊天机器人、文本总结、AI Agent 等。

集群节点

n8n 中,集群节点 (Cluster nodes) 是一组一起工作的节点组,它们由一个根节点 (root node) 和 一个或多个扩展节点功能的子节点 (sub-nodes) 组成。AI 相关的功能由集群节点实现。
在这里插入图片描述
在这里插入图片描述

MCP

n8n 支持 MCP (Model Context Protocol) 协议,在 n8n 中可以将 MCP 看作一种特殊的工具。
MCP (Model Context Protocol) 是一种开放协议,标准化了应用程序如何为 LLM 提供上下文。 可以把 MCP 看作是 AI 应用的 USB-C 端口。

在这里插入图片描述
Source: https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/
MCP 的通讯主要包括两个部分,一个是作为工具供 AI Agent 调用的 Client,另外是作为服务端的
Server 提供实际的服务。MCP 协议定义了两种 Client 与 Server 之间的通讯机制:

  • stdio - 标准输入和标准输出之间的通信
  • Streamable HTTP - 流式 HTTP 请求和响应
    n8n 中主要通过 Streamable HTTP 进行通讯,其中 MCP Client 作为 AI Agent 节点的工具,
    MCP Server 为单独的 MCP Server Trigger 节点,将 n8n 中集成的工具转成 MCP Server
    服务供 MCP Client 调用。
    本节我们使用 GitHub 工具为例,展示 n8n 中 MCP 的使用。

首先我们申请一个 GitHub 的 access token,用于 GitHub API 的调用:

  • 访问开发者设置页面 https://github.com/settings/tokens
  • 点击右上角的 Generate new token 按钮,选择 classic
  • 在 Note 中输入一个名称,如 n8n-github
  • 出于安全考虑,我们只访问公开的仓库信息,所以不选择任何权限,点击 Generate token 按钮
  • 复制生成的 token,保存到安全的地方

接下来,我们构建一个工作流,将 GitHub API 转成 MCP Server 服务,供 AI Agent 调用。

添加 MCP Server Trigger 节点,获取其生产地址,格式类似https://n8n.example.com/mcp/UUID
在这里插入图片描述
在这里插入图片描述

MCP Server Trigger 工具选项中,选择 GitHub 作为工具,打开 GitHub 节点的
配置项,我们选择新建 Credential,并输入之前申请的 GitHub access token。
在这里插入图片描述
在这里插入图片描述

资源 Resource 选择 Repository,操作 Operation 选择 GetRepository Owner
出于测试目的,固定为 datawhalechinaRepository Name 我们使用 n8n 的
Let the model define this parameter 功能,
让 AI Agent 填充参数。具体完整的配置如下
在这里插入图片描述
然后我们添加 On chat message 节点,并关联 AI Agent 节点,在 AI Agent 节点中的工具选项
中,选择 MCP Client,在弹出的配置窗口中,将之前获取的 MCP Server Trigger 生产地址
填入 SSE Endpoint 配置项。
在这里插入图片描述
在这里插入图片描述

最终我们保存工作流并将其状态设置为 active。在工作流的聊天测试框,输入问题,可以看到完整的调用
过程,并得到关于问题中 GitHub 仓库信息的回答,如下所示:
在这里插入图片描述
在这里插入图片描述

不知道为啥回复不了,收到了大模型的回复却没在聊天框中输出。这个bug待解决


n8n忘记密码

参考链接:https://blog.eimoon.com/p/n8n-reset-password-docker/
docker部署

docker ps#找到容器名称或id
docker exec -it <your-n8n-container-name> n8n user-management:reset
docker exec -it -u node <your-n8n-container-name> n8n user-management:reset
docker restart <your-n8n-container-name>
docker compose restart n8n


用户账户会被清空:此操作会删除所有用户数据,你需要重新设置管理员账号;
工作流与凭据不会丢失:系统中的所有工作流 (Workflows) 和 凭据 (Credentials) 都会保留,放心操作;
建议定期备份:可使用 n8n export:workflow 命令进行工作流备份,以防万一。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐