n8n 实战:把 AI Agent 嵌入自动化邮件工作流

摘要:n8n 的核心身份是通用工作流自动化平台,LLM 只是流程中的一个或多个处理节点。


一、节点与工作流:n8n 的两个基本概念

n8n 的世界由节点和工作流组成。节点是执行具体操作的最小单元,分为触发节点和常规节点;工作流则定义了数据从触发节点开始,如何在节点之间传递、处理,并最终完成任务的路径。

触发节点
Gmail 邮件到达 / 定时器 / Webhook

常规节点
读取、转换、API 调用

AI Agent 节点
思考、决策、工具调用

常规节点
发送邮件、写数据库

完成自动化任务

n8n 的强项在于“连接”。它可以把原本孤立的 CRM、社交媒体、数据库和 LLM 串联起来,实现过去需要复杂编码才能完成的端到端业务流程自动化。

二、案例目标:构建智能邮件助手

本节要构建的 Agent 不再是线性流程,而是通过 AI Agent 节点自主理解用户邮件意图,并在多个工具中决策和选择,最终自动生成并发送高度相关的回复。

接收邮件

AI Agent 节点

思考

决策

工具调用

生成并发送回复

整个搭建过程分为两个核心步骤:先准备 Agent 的“记忆”,再构建 Agent 主体。

三、构建 Agent 的私有知识库

为了让 Agent 能回答关于个人信息或项目文档的问题,需要先用 Simple Vector Store 节点构建一个内存向量知识库。

1. 定义知识源

使用 Code 节点存放原始知识文本。如下JavaScript:

return [
  {
    "doc_id": "work-schedule-001",
    "content": "我的工作时间是周一至周五,上午9点到下午5点。时区是澳大利亚东部标准时间(AEST)。"
  },
  {
    "doc_id": "off-hours-policy-001",
    "content": "在非工作时间(包括周末和公共假期),我无法立即回复邮件。"
  },
  {
    "doc_id": "auto-reply-instruction-001",
    "content": "如果邮件是在非工作时间收到的,AI助手应该告知发件人,邮件已收到,我会在下一个工作日的9点到5点之间尽快处理并回复。"
  }
];

2. 文本向量化

计算机无法直接理解文本,需要使用 Embeddings 节点把文本转换为向量。本案例使用 Embeddings Google Gemini,模型为 gemini-embedding-exp-03-07。

3. 存入向量存储

最后把向量化知识存入内存数据库,设置 Operation Mode 为 Insert Documents,并为知识库命名 my-dailytime。

完成配置后手动执行一次,知识就加载到 n8n 内存中。

Agent 查询知识库时,会根据问题与知识片段向量之间的余弦相似度进行检索:

score(q,d)=cos⁡(q⃗,d⃗)=q⃗⋅d⃗∥q⃗∥ ∥d⃗∥ \text{score}(q,d)=\cos(\vec{q},\vec{d})=\frac{\vec{q}\cdot\vec{d}}{\|\vec{q}\|\ \|\vec{d}\|} score(q,d)=cos(q​,d)=∥q​∥ ∥d∥q​⋅d​

四、创建 Agent 主工作流

1. 配置 Gmail 触发器

新建工作流 Agent: Customer Support,使用 Gmail 节点作为触发器,Event 设置为 Message Received。每当新邮件进入收件箱时,工作流自动触发。

2. 配置 AI Agent 节点

AI Agent 节点是整个工作流的大脑,连接 Chat Model、Memory 和 Tools。本案例连接 Google Gemini Chat Model、Simple Memory、SerpAPI 和 Simple Vector Store。

AI Agent 的思考决策可以表示为一个循环:

是

是

否

邮件内容

User Message + System Message

AI Agent

需要工具?

SerpAPI 搜索公开信息

Simple Vector Store 查询工作时间

汇总工具结果

生成 JSON 回复

如下 Prompt:

# Prompt (User Message)
# 上下文信息
- 当前时间: {{ new Date().toLocaleString('en-AU', { timeZone: 'Australia/Sydney', hour12: false }) }} (澳大利亚悉尼时间)
- 发件人: {{ $json.From }}
- 主题: {{ $json.Subject }}
- 邮件正文: {{ $json.snippet }}

# System Message
# 角色和目标
你是一个全天候待命、专业高效的AI邮件助手。你的任务是:第一时间使用公开信息尽力回答所有邮件中的问题,并根据我的工作日程,在回复的开头附加上下文状态提醒。

# 上下文信息
- 当前时间: {{ new Date().toLocaleString('en-AU', { timeZone: 'Australia/Sydney', hour12: false }) }} (澳大利亚悉尼时间)
- 邮件信息在输入数据中。

# 可用工具
- Simple Vector Store2: 用来查询我准确的工作时间(例如:周一至周五,上午9点到下午5点)。
- SerpAPI: **[主要信息来源]** 优先使用此工具在互联网上搜索,以回答邮件中的具体问题。

# 执行步骤
1.  **分析问题**: 首先,仔细阅读邮件内容,提炼出发件人的核心问题。

2.  **并行信息搜集**: 同时执行以下两个操作来收集信息:
    a. 使用 `SerpAPI` 工具,上网搜索出发件人问题的答案。
    b. 使用 `Simple Vector Store2` 工具,获取我设定的准确工作时间。

3.  **草拟核心回复**: 根据 `SerpAPI` 搜集到的信息,清晰、直接地回答发件人的问题,这部分将作为邮件回复的主体。

4.  **添加状态前缀并整合**:
    a. 对比“当前时间”和我从工具中获取的工作时间。
    b. **如果当前是“非工作时间”**: 创建一段状态提醒前缀。这段前缀**必须包含**从 `Simple Vector Store2` 获取到的具体工作时间。
        * **前缀示例**: "您好,感谢您的来信。您已在我的非工作时间联系我(我的工作时间为:[此处插入查询到的工作时间])。我会在下一个工作日亲自审阅此邮件。与此同时,这是根据公开信息为您找到的初步答复:**<br><br>---<br><br>**"
    c. **如果当前是“工作时间”**: 只需使用简单的问候语即可。
        * **前缀示例**: "您好,关于您提出的问题,答复如下:**<br><br>---<br><br>**"
    d. 将生成的前缀和你草拟的核心回复(第3步的结果)拼接在一起,形成最终的邮件正文。

5.  **格式化输出**: 你必须将最终生成的邮件内容以一个严格的 JSON 格式输出。格式如下,不要添加任何额外的解释或文字:
    {
      "shouldReply": true,
      "subject": "Re: [原始邮件主题]",
      "body": "[这里是拼接好的、完整的邮件回复正文,**所有换行必须使用HTML的<br>标签**]"
    }

# 规则和限制
- **永远优先尝试回答**: 无论何时,你的首要任务是使用 `SerpAPI` 为用户提供有价值的回复。
- **必须声明状态**: 如果在非工作时间回复,必须在邮件开头明确声明,并附上我准确的工作时间。
- **信息来源要准确**: 工作时间必须严格以 `Simple Vector Store2` 的结果为准;问题答案主要来源于 `SerpAPI`,不要编造信息。
- **输出格式**: **在最终输出的JSON中,`body`字段内的所有换行都必须使用 `<br>` 标签,而不是 `\n`。**

3. 配置 Agent 的工具

Simple Vector Store 工具需要设置为 Retrieve Documents (As Tool for AI Agent),Memory Key 和 Embeddings 模型必须与知识库准备阶段完全一致。

工具描述也需要清晰定义:

这是Simple Vector Store2工具,用来查询我的个人信息,特别是我的工作时间和邮件回复策略。当需要判断当前是否为工作时间,或者需要告知对方我何时会回复邮件时,必须使用此工具。

Memory 节点使用每个邮箱的线程名作为唯一标识:

{{ $('Gmail').item.json.threadId }}

4. 发送最终回复

最后把 AI Agent 的输出连接到 Gmail 节点,Operation 设为 Send,并关联收件人、主题和正文。

  • To: {{ $('Gmail').item.json.From }}
  • Subject: Re: {{ $('Gmail').item.json.Subject }}
  • Message: {{ $json.output }}

五、n8n 的优势与局限

n8n

优势

局限

低代码开发效率高

节点库丰富、集成能力强

AI Agent 节点整合模型、记忆、工具

支持私有化部署

复杂工作流调试相对繁琐

内置内存存储不持久

版本控制与多人协作不够成熟

超高并发场景存在调度开销

n8n 特别适合把 AI 能力嵌入现有业务流程。但生产环境中需要把 Simple Memory 和 Simple Vector Store 替换为 Redis、Pinecone 等持久化存储,同时注意复杂工作流的调试、版本控制和超高并发性能。


下一篇将把四个平台放在一起对比,整理平台选型建议和混合开发策略。

Logo

更多推荐