{
"name": "HelloAgent_n8nCase",
"nodes": [
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"filters": {}
},
"type": "n8n-nodes-base.gmailTrigger",
"typeVersion": 1.3,
"position": [
368,
-160
],
"id": "46a534e3-3e72-4d0b-9a41-bc5c28834ee4",
"name": "Gmail",
"alwaysOutputData": false,
"credentials": {
"gmailOAuth2": {
"id": "XD1oTN8hEyHzsxBR",
"name": "Gmail account"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
416,
32
],
"id": "882131ef-83bc-415f-9430-59d40503c4ae",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"id": "4HqrqZ1DN3LCRp28",
"name": "Google Gemini(PaLM) Api account"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Gmail').item.json.threadId }}"
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
544,
32
],
"id": "d230cedb-0a48-424f-8b79-4a5e8ae304a7",
"name": "Simple Memory"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.toolSerpApi",
"typeVersion": 1,
"position": [
672,
32
],
"id": "164578ff-9ef8-41ab-b4c3-22f7871c4885",
"name": "SerpAPI",
"credentials": {
"serpApi": {
"id": "Nmxsc4WxINf7TGrA",
"name": "SerpAPI account"
}
}
},
{
"parameters": {
"sendTo": "={{ $('Gmail').item.json.From }}",
"subject": "=Re: {{ $('Gmail').item.json.Subject }}",
"message": "={{ $json.output }}",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
928,
-160
],
"id": "c680c326-e4e1-41df-9f76-520c4b522618",
"name": "Send a message",
"webhookId": "94ed889e-1e8a-4c90-980f-38cd02c32873",
"credentials": {
"gmailOAuth2": {
"id": "XD1oTN8hEyHzsxBR",
"name": "Gmail account"
}
}
},
{
"parameters": {
"mode": "insert",
"memoryKey": {
"__rl": true,
"value": "my-dailytime",
"mode": "list"
}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"typeVersion": 1.3,
"position": [
-16,
-160
],
"id": "ead1ed07-6e2c-4ba2-9d28-d5adf76540f1",
"name": "Simple Vector Store1"
},
{
"parameters": {
"modelName": "models/gemini-embedding-exp-03-07"
},
"type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
"typeVersion": 1,
"position": [
-32,
48
],
"id": "67402e5f-270b-4e31-9b48-4d2a2b60d79e",
"name": "Embeddings Google Gemini",
"credentials": {
"googlePalmApi": {
"id": "4HqrqZ1DN3LCRp28",
"name": "Google Gemini(PaLM) Api account"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1.1,
"position": [
128,
48
],
"id": "e55e36f5-8628-496b-acb7-52a4f67b9af2",
"name": "Default Data Loader"
},
{
"parameters": {
"jsCode": "return [\n\n {\n \"doc_id\": \"work-schedule-001\",\n \"content\": \"我的工作时间是周一至周五,上午9点到下午5点。时区是澳大利亚东部标准时间(AEST)。\"\n },\n {\n \"doc_id\": \"off-hours-policy-001\",\n \"content\": \"在非工作时间(包括周末和公共假期),我无法立即回复邮件。\"\n },\n {\n \"doc_id\": \"auto-reply-instruction-001\",\n \"content\": \"如果邮件是在非工作时间收到的,AI助手应该告知发件人,邮件已收到,我会在下一个工作日的9点到5点之间尽快处理并回复。\"\n }\n\n];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-240,
-160
],
"id": "75bc8b52-3ff2-43b3-a6fa-d200c821de4a",
"name": "Code in JavaScript1"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolDescription": "这是Simple Vector Store2工具,用来查询我的个人信息,特别是我的工作时间和邮件回复策略。当需要判断当前是否为工作时间,或者需要告知对方我何时会回复邮件时,必须使用此工具。",
"memoryKey": {
"__rl": true,
"value": "my-dailytime",
"mode": "list",
"cachedResultName": "my-dailytime"
}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"typeVersion": 1.3,
"position": [
800,
48
],
"id": "ad9ba7d0-26b7-499b-9c5a-3d4295f6f7ed",
"name": "Simple Vector Store2"
},
{
"parameters": {
"modelName": "models/gemini-embedding-exp-03-07"
},
"type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
"typeVersion": 1,
"position": [
800,
208
],
"id": "9ff48ca5-a7fd-45d6-8ff3-01c86bf63eea",
"name": "Embeddings Google Gemini1",
"credentials": {
"googlePalmApi": {
"id": "4HqrqZ1DN3LCRp28",
"name": "Google Gemini(PaLM) Api account"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=# 上下文信息\n- 当前时间: {{ new Date().toLocaleString('en-AU', { timeZone: 'Australia/Sydney', hour12: false }) }} (澳大利亚悉尼时间)\n- 发件人: {{ $json.From }}\n- 主题: {{ $json.Subject }}\n- 邮件正文: {{ $json.snippet }}",
"hasOutputParser": true,
"options": {
"systemMessage": "=# 角色和目标\n你是一个全天候待命、专业高效的AI邮件助手。你的任务是:第一时间使用公开信息尽力回答所有邮件中的问题,并根据我的工作日程,在回复的开头附加上下文状态提醒。\n\n# 上下文信息\n- 当前时间: {{ new Date().toLocaleString('en-AU', { timeZone: 'Australia/Sydney', hour12: false }) }} (澳大利亚悉尼时间)\n- 邮件信息在输入数据中。\n\n# 可用工具\n- Simple Vector Store2: 用来查询我准确的工作时间(例如:周一至周五,上午9点到下午5点)。\n- SerpAPI: **[主要信息来源]** 优先使用此工具在互联网上搜索,以回答邮件中的具体问题。\n\n# 执行步骤\n1. **分析问题**: 首先,仔细阅读邮件内容,提炼出发件人的核心问题。\n\n2. **并行信息搜集**: 同时执行以下两个操作来收集信息:\n a. 使用 `SerpAPI` 工具,上网搜索出发件人问题的答案。\n b. 使用 `Simple Vector Store2` 工具,获取我设定的准确工作时间。\n\n3. **草拟核心回复**: 根据 `SerpAPI` 搜集到的信息,清晰、直接地回答发件人的问题,这部分将作为邮件回复的主体。\n\n4. **添加状态前缀并整合**:\n a. 对比“当前时间”和我从工具中获取的工作时间。\n b. **如果当前是“非工作时间”**: 创建一段状态提醒前缀。这段前缀**必须包含**从 `Simple Vector Store2` 获取到的具体工作时间。\n * **前缀示例**: \"您好,感谢您的来信。您已在我的非工作时间联系我(我的工作时间为:[此处插入查询到的工作时间])。我会在下一个工作日亲自审阅此邮件。与此同时,这是根据公开信息为您找到的初步答复:**
---
**\"\n c. **如果当前是“工作时间”**: 只需使用简单的问候语即可。\n * **前缀示例**: \"您好,关于您提出的问题,答复如下:**
---
**\"\n d. 将生成的前缀和你草拟的核心回复(第3步的结果)拼接在一起,形成最终的邮件正文。\n\n5. **格式化输出**: 你必须将最终生成的邮件内容以一个严格的 JSON 格式输出。格式如下,不要添加任何额外的解释或文字:\n {\n \"shouldReply\": true,\n \"subject\": \"Re: [原始邮件主题]\",\n \"body\": \"[这里是拼接好的、完整的邮件回复正文,**所有换行必须使用HTML的
标签**]\"\n }\n\n# 规则和限制\n- **永远优先尝试回答**: 无论何时,你的首要任务是使用 `SerpAPI` 为用户提供有价值的回复。\n- **必须声明状态**: 如果在非工作时间回复,必须在邮件开头明确声明,并附上我准确的工作时间。\n- **信息来源要准确**: 工作时间必须严格以 `Simple Vector Store2` 的结果为准;问题答案主要来源于 `SerpAPI`,不要编造信息。\n- **输出格式**: **在最终输出的JSON中,`body`字段内的所有换行都必须使用 `
` 标签,而不是 `\\n`。**"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [
576,
-160
],
"id": "b5e90bc0-1d53-4bea-9300-b9982ff5b9b4",
"name": "AI Agent1"
}
],
"pinData": {},
"connections": {
"Gmail": {
"main": [
[
{
"node": "AI Agent1",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent1",
"type": "ai_memory",
"index": 0
}
]
]
},
"SerpAPI": {
"ai_tool": [
[
{
"node": "AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Embeddings Google Gemini": {
"ai_embedding": [
[
{
"node": "Simple Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Simple Vector Store1",
"type": "ai_document",
"index": 0
}
]
]
},
"Code in JavaScript1": {
"main": [
[
{
"node": "Simple Vector Store1",
"type": "main",
"index": 0
}
]
]
},
"Simple Vector Store2": {
"ai_tool": [
[
{
"node": "AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Embeddings Google Gemini1": {
"ai_embedding": [
[
{
"node": "Simple Vector Store2",
"type": "ai_embedding",
"index": 0
}
]
]
},
"AI Agent1": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "4b54e880-ce89-48af-bc22-d753d162b460",
"meta": {
"instanceId": "87f6aa8e755e8ea119eeb2e3b3db6a7d58c6b1d2109e9b94ec4ef98f2449f77d"
},
"id": "b8xRsyXsQr5XE16V",
"tags": []
}