2026-10-02 · 原文发布日
n8n汇率问答机器人:Gemini加缓存降调用
一个轻量的n8n问答流:Gmail新邮件或n8n聊天触发后,统一格式并逐条处理,从问题里抽出两个货币代码生成按天缓存键,先查n8n Data Table里的缓存,命中就直接回复不调用模型;未命中才让Gemini代理调用免费的Frankfurter汇率接口生成一两句回答,结果回写缓存并把来源、命中情况、耗时记入日志表,最后按原渠道回复。缓存TTL可在配置里调。
原文要点
n8n模板库免费模板(ID 20312)。Gmail新邮件(按搜索过滤器匹配)或n8n聊天触发后,统一成公共格式(session ID、用户文本、来源渠道、发件邮箱)逐条处理;从问题里抽出两个ISO 4217货币代码拼成按天的缓存键,先查n8n Data Table缓存,TTL内命中就直接回复不调模型;未命中才让Google Gemini代理调用Frankfurter汇率接口生成一两句纯文本回答,写回缓存并把来源、货币对、是否命中、耗时记入日志表,最后按原渠道(聊天或Gmail)回复。缓存TTL、邮件主题、兜底文案都在Config里可调。
这次做成什么
搭好缓存表与日志表两张Data Table,导入模板后用本站合成的测试问题验证「第一次调模型、第二次命中缓存」的降调用效果,并学会读日志表。
准备什么
- n8n实例及模板20312
- Gmail OAuth2凭据(收邮件触发与回邮件用)
- Google Gemini(PaLM)API凭据
- 无需Frankfurter账号或API凭据(模板未要求配置该接口凭据)
具体怎么做
建两张Data Table
第一张缓存表:cache_key(string)、pair(string)、response(string)、cached_at(number)。第二张日志表:logged_at(string)、source(string)、pair(string)、cache_hit(boolean)、latency_ms(number)。表名自定,建好后在缓存查询/写入节点和日志节点里改选它们。
挂凭据
Gmail触发节点与Gmail回复节点挂OAuth2凭据;聊天模型节点挂Gemini API凭据。
检查Config与过滤器
打开Config节点确认缓存TTL(按天键以外还有有效期控制)、回复邮件主题、兜底文案;改Gmail触发器的搜索过滤器(发件人/主题关键词),只让真正的汇率问询邮件进入流程,避免私人邮件被自动回复。
用聊天通道首测
打开n8n Chat触发器的聊天窗口,发「1美元现在等于多少欧元?」。第一次应走Gemini+Frankfurter路径(日志cache_hit=false);紧接着发同一货币对的问题,应直接命中缓存(cache_hit=true)且回复内容一致、耗时更短。
用邮件通道复测
从匹配过滤器的邮箱发一封同主题汇率问询邮件,确认流程触发、回复按邮件发回,且日志里source记为gmail。
可直接复制的材料
两张Data Table建表清单
列名与类型来自模板说明;建好后在各Data Table节点里选择对应表。
{
"rate_cache": {
"cache_key": "string",
"pair": "string",
"response": "string",
"cached_at": "number"
},
"query_log": {
"logged_at": "string",
"source": "string",
"pair": "string",
"cache_hit": "boolean",
"latency_ms": "number"
}
}合成测试数据
本站虚构测试输入;模板从文本里抽取ISO货币代码,中文问法能否稳定抽取需在你的实例上验证。
{
"chat_message": "1美元现在等于多少欧元?",
"expected_pair": "USD-EUR",
"gmail_subject": "汇率咨询",
"gmail_from": "test-sender@example.com",
"gmail_body": "请问现在100日元能换多少人民币?"
}输入与输出示例
本站虚构示意,未真实运行;具体字段与耗时以你的运行日志为准。
输入
聊天窗口先发「1美元现在等于多少欧元?」,30秒后再发「美元兑欧元汇率是多少」对应输出
第一条日志(示意):{"logged_at":"2026-10-02T10:00:00","source":"chat","pair":"USD-EUR","cache_hit":false,"latency_ms":2100},回复为模型生成的一两句话汇率回答;第二条日志cache_hit=true、latency_ms明显更低,回复直接取自缓存,未调用Gemini。做完检查这些
- 缓存表与日志表的列名、类型与清单一致并被节点正确选中
- 同一货币对当天第二次提问时日志cache_hit=true且不走模型节点
- Gmail与聊天两个渠道的回复都回到原渠道
- Config里调整TTL后,过期缓存会重新触发模型调用
容易卡住的地方
- Gmail过滤器没收紧会把无关邮件也送进流程并自动回复
- 缓存键按天生成,跨天的同一货币对会重新调模型,属设计如此
- 能否从中文问句稳定抽出ISO 4217货币代码需实测,抽取失败会走兜底文案
- 模板免费且Frankfurter接口免费,但Gemini API调用可能计费
- 模板免费且Frankfurter调用无需密钥,但Gemini API调用可能计费
- 两张表若ID未在节点里更新,会写入失败或查不到缓存
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Answer currency rate questions from Gmail and chat with Gemini and Frankfurter API
- 原作者
- María Laura Vitelli
- 原始发布日期
- 2026-10-01T17:00:31.270Z
- 来源
- https://n8n.io/workflows/20312