资讯动态

如何在 n8n 搭建智能邮件助手工作流并构建 Agent 私有知识库?

发布时间:2026/9/13 7:25:33 来源:尧图企业网站定制
如何在 n8n 搭建智能邮件助手工作流并构建 Agent 私有知识库【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents在《从零开始构建智能体》hello-agents教程第五章的低代码平台实战中n8n 部分给出了一个完整案例用 Gmail 触发器接收新邮件由 AI Agent 节点自主理解意图、决定调用哪些工具并自动生成、发送回复同时用Simple Vector Store构建一个 Agent 可查询的私有知识库让 Agent 在回复时能准确引用我的工作时间这类个人信息。整个过程对应一条决策链路接收 - AI Agent (思考 - 决策 - 工具调用) - 回复。本文按文档中的两个核心步骤展开先构建私有知识库该流程只需手动运行一次再构建 Agent 主工作流。前提条件是一个用 Docker 在本地跑起来的 n8n 实例、一个 Gmail 账号及其 OAuth 凭证、一个 Google Gemini API Key以及一个 SerpAPI Key供 Agent 上网搜索案例的 Prompt 把它定为主要信息来源。准备 n8n 环境Docker 本地安装项目把 n8n 的环境配置与基础用法放在了Additional-Chapter目录其中推荐的、最稳定的本地安装方式是 Docker。下面两条命令的副作用是创建一个名为n8n_data的 Docker 数据卷存放 n8n 的持久化数据并启动一个名为n8n的后台容器把本机 5678 端口映射给 n8ndocker volume create n8n_data docker run -d --restart unless-stopped --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n执行后在 Docker 里能看到 n8n 容器正在运行打开本机的 5678 端口即可进入 n8n 的启动界面从那里新建项目。使用前请确认本机已装好 Docker 且终端可用完整安装说明见 N8N_INSTALL_GUIDE.md。构建私有知识库给 Agent 准备外部大脑为了让 Agent 能回答特定领域比如你的个人信息或项目文档的问题需要先准备一个向量知识库。n8n 用Simple Vector Store节点就能在内存中快速构建一个这个准备流程通常只在更新知识时运行一次。第一步用 Code 节点定义知识源用Code节点存放原始知识文本将知识以 JSON 格式写入。文档示例包含三条知识工作时间、非工作时间不立即回复的政策、以及自动回复指令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点之间尽快处理并回复。 } ];这是一个简单快捷的方式实际项目中数据也可以来自文件、数据库等。第二步用 Embeddings 节点向量化文本计算机无法直接理解文本需要将其转换为向量。使用Embeddings节点完成这个翻译工作节点Embeddings Google Gemini模型选择gemini-embedding-exp-03-07。文档使用 Google API 演示如果你没有 API Key需要按文档说明先创建一个可用的 Gemini API Key配置将它连接到Code节点之后它会自动将上游传入的文本转换为向量数据。第三步存入向量存储节点Simple Vector StoreOperation ModeInsert Documents写入模式Memory Key为这个知识库起一个唯一的名字例如my-dailytime。这个 Key 相当于数据库的表名后续 Agent 将通过它来查找信息。完成配置后手动执行一次这个流程。成功后私有知识就加载到 n8n 的内存中Code 节点是知识源Embeddings 节点负责向量化Simple Vector Store 节点负责写入三者依次连接。构建 Agent 主工作流有了知识库现在创建一个新工作流命名为Agent: Customer Support。它负责接收邮件、进行思考和决策在合适的时机调用刚刚创建的工具最终执行邮件回复。配置 Gmail 触发器与凭证使用Gmail节点作为触发器将Event设置为Message Received并配置好邮箱账号。这样每当有新邮件进入收件箱工作流就会被自动触发。凭证配置按 n8n 官方文档的 Google OAuth 流程操作文档中给出了对应指引创建凭证并选择 Web 应用类型最终得到客户端 ID 和客户端密钥在已获授权的重定向 URI中把 n8n 刚给出的 OAuth Redirect URL 添加上同时在受众Add users中加上自己的邮箱地址。配置完成后的页面应显示 Gmail 账号加载成功。配置好之后点击Fetch Test Event获取测试邮件节点能取到实时邮件说明触发器配置正确。配置 AI Agent 节点与 Prompt这是整个工作流的大脑。从节点菜单拖出一个AI Agent节点配置如下Chat Model连接你选择的大语言模型例如Google Gemini Chat Model这是 Agent 的思考核心。文档中对应的做法是添加一个Gemini或其他 LLM节点、模式设置为Chat把邮件正文和主题{{ $json.snippet }}{{ $json.Subject }}作为变量传入 PromptMemory连接一个Simple Memory节点让 Agent 在处理同一邮件线索下的多封往来邮件时记住之前的对话历史。唯一需要注意的是文档使用每个邮箱的线程名作为唯一标识Key 设置为{{ $(Gmail).item.json.threadId }}Tools连接多个工具。案例中连接两个SerpAPI第四章案例中使用过的 API让 Agent 拥有上网搜索公开信息的能力Simple Vector Store让 Agent 拥有查询第一部分中创建的私有知识库的能力。对 AI Agent 节点需要填写的主要是User Message和System Message部分。文档案例使用的 Prompt 如下Prompt 中的工具名为Simple Vector Store2它是文档示例中知识库查询工具节点的实例名如果你的节点起了别的名字需要把 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 获取到的具体工作时间。 * **前缀示例**: 您好感谢您的来信。您已在我的非工作时间联系我我的工作时间为[此处插入查询到的工作时间]。我会在下一个工作日亲自审阅此邮件。与此同时这是根据公开信息为您找到的初步答复**brbr---brbr** c. **如果当前是工作时间**: 只需使用简单的问候语即可。 * **前缀示例**: 您好关于您提出的问题答复如下**brbr---brbr** d. 将生成的前缀和你草拟的核心回复第3步的结果拼接在一起形成最终的邮件正文。 5. **格式化输出**: 你必须将最终生成的邮件内容以一个严格的 JSON 格式输出。格式如下不要添加任何额外的解释或文字 { shouldReply: true, subject: Re: [原始邮件主题], body: [这里是拼接好的、完整的邮件回复正文**所有换行必须使用HTML的br标签**] } # 规则和限制 - **永远优先尝试回答**: 无论何时你的首要任务是使用 SerpAPI 为用户提供有价值的回复。 - **必须声明状态**: 如果在非工作时间回复必须在邮件开头明确声明并附上我准确的工作时间。 - **信息来源要准确**: 工作时间必须严格以 Simple Vector Store2 的结果为准问题答案主要来源于 SerpAPI不要编造信息。 - **输出格式**: **在最终输出的JSON中body字段内的所有换行都必须使用 br 标签而不是 \n。**配置知识库查询工具对于Simple Vector Store工具需要进行关键配置确保它能正确读取之前存入的知识Operation ModeRetrieve Documents (As Tool for AI Agent)作为工具的读取模式Memory Key必须填写与第一部分完全相同的 Key即my-dailytimeEmbeddings必须使用与第一部分完全相同的Embeddings Google Gemini模型只有Memory Key和Embeddings模型完全一致Agent 才能用正确的钥匙和语言来访问知识库。Description参数是 AI Agent 调用该工具时对该工具的描述定义文档示例如下这是Simple Vector Store2工具用来查询我的个人信息特别是我的工作时间和邮件回复策略。当需要判断当前是否为工作时间或者需要告知对方我何时会回复邮件时必须使用此工具。配置 Gmail 发送回复最后一步是执行。将AI Agent节点的输出连接到一个Gmail节点Operation设为Send。使用 n8n 表达式将收件人、主题和正文分别关联到AI Agent输出的 JSON 数据中的相应字段To{{ $(Gmail).item.json.From }}或其他触发器中的发件人字段SubjectRe: {{ $(Gmail).item.json.Subject }}Message{{ $json.output }}仓库中提供了该案例的完整工作流导出文件 HelloAgent_n8nCase.json包含 Gmail 触发器在内的全部节点定义可以在 n8n 中导入对照配置。验证助手是否生效验证触发器在 Gmail 节点点击Fetch Test Event节点能取到实时邮件说明 OAuth 凭证与触发器配置正确验证知识库手动运行知识库加载流程一次各节点按顺序执行完成、无报错即私有知识已加载到 n8n 内存验证完整链路向绑定的邮箱发送一封测试邮件。工作流发送成功的同时你能在个人邮箱收到真实的返回邮件正文格式遵循 Prompt 约定的 JSON 输出非工作时间带状态前缀正文内所有换行为br标签如图示效果需要注意的限制内存存储非持久Simple Memory和Simple Vector Store都是基于内存的n8n 服务一旦重启所有对话历史和知识库都将丢失届时需要重新手动运行知识库准备流程。文档指出实际部署时应将其替换为如 Redis、Pinecone 等外部持久化数据库调试方式工作流变复杂后一旦出现数据格式错误需要逐个节点检查其输入输出来定位问题扩展路径文档说明这个架构扩展性极强未来可以直接向AI Agent节点添加更多工具如日历、数据库、CRM 等只需在 Prompt 中教会 Agent 如何使用它们。完整章节内容见 第五章 基于低代码平台的智能体搭建n8n 安装与界面基础操作见 N8N_INSTALL_GUIDE.md可对照逐步复核。【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价