n8n 构建一个 ReAct AI Agent 示例
n8n 构建一个 ReAct AI Agent 示例
- 0. 引言
- 1. 详细步骤
- 创建一个 "When Executed by Another Workflow"
- 创建一个 "Edit Fields (Set)"
- 再创建一个 "Edit Fields (Set)"
- 创建一个 HTTP Request
- 创建一个 If 节点
- 在 true 分支创建一个 "Edit Fields (Set)"
- 在 true 分支创建一个 "Edit Fields (Set)"
- 在 true 分支再创建一个 "Edit Fields (Set)"
- 创建一个 If 节点
- 在 true 分支创建一个 "Edit Fields (Set)"
- 在创建一个 Markdown 节点
- 在创建一个 "Edit Fields (Set)"
- 创建一个 Chat Trigger node
- 创建一个 AI Agent 节点
- 在 AI Agent 节点添加一个 OpenAI Chat Model node
- 在 AI Agent 节点添加一个 Call n8n Workflow Tool node
- 2. 测试
0. 引言
接下来使用 n8n 构建一个 ReAct AI Agent,通过 AI Agent 调用 Sub-Workflow,代用 HTTP Request 抓取网页内容,通过后处理对网页内容进行清洗。
1. 详细步骤
这个 Workflow 有 2 大部分,第一个部分是一个 Sub-Workflow,第二个部分是 Call 这个 sub-Workflow 的 AI Agent。
我们先创建 Sub-Workflow,然后创建 Call 这个 sub-Workflow 的 AI Agent。
创建一个 “When Executed by Another Workflow”
这个节点是 Sub-Workflow 的入口,
- Input data mode:Accept all data
将输入数据模式设置为选择如何定义子工作流的输入数据:
- 使用下方字段定义:选择此模式以定义调用工作流需要提供的个体输入名称和数据类型。调用工作流中的执行子工作流节点或调用n8n工作流工具节点会自动拉取此处定义的字段。
- 使用JSON示例定义:选择此模式以提供一个示例JSON对象,展示预期的输入项及其类型。
- 接受所有数据:选择此模式以无条件接受所有数据。子工作流将不会定义任何必需的输入项。此子工作流必须处理任何输入不一致或缺失值。
创建一个 “Edit Fields (Set)”
这个节点将输入的 query 整理成一个 json 对象。
query 的输入表达式,
{{ $json.query.substring($json.query.indexOf('?') + 1).split('&').reduce((result, item) => (result[item.split('=')[0]] = decodeURIComponent(item.split('=')[1]), result), {}) }}
再创建一个 “Edit Fields (Set)”
设置一个最大长度,
que