ChatGPT创意写作AI 评分 · 82/100AI 辅助编辑·未发现明显提示词注入风险n8n.io

仅用数据库 Schema 生成 SQL 查询 —— n8n AI Agent 模板

输入:自然语言问题 + 本地数据库结构文件 → 处理:AI Agent 仅基于 Schema 生成 SQL(不接触数据)→ 输出:SQL 查询及执行结果(或直返回答)

有一点经验步骤流程提示词贴士
给谁
需要在不暴露原始数据的前提下,用自然语言查询数据库的开发者或分析师
你会得到
通过聊天窗口提问,AI 仅依据数据库结构生成 SQL,外部执行后返回格式化结果;无 SQL 需求时直接文字回答
你需要
n8n · mysql

硬约束

需要 n8n 实例;配置 openAiApi 与 mySql 两类凭证。首次运行前需准备 MySQL 服务器并导入数据库(可用 db4free 免费服务或自建),然后执行工作流上半部分一次性拉取并本地保存 schema 文件。之后每次聊天触发均读取该本地文件,不再重复连接远程数据库。

他们做了什么

作者 yulia 基于此前 SQLite SQL Agent 模板,修改出一个安全变体:AI Agent 仅接触数据库 schema,不接触实际数据。通过将 SQL 执行放在 AI Agent 外部,并阻止结果回流到 Agent,实现数据保密。工作流分为一次性 schema 下载(上半部分)和聊天查询(下半部分)两阶段,使用 Window Buffer Memory 维持对话上下文。

效果如何

模板发布于 n8n.io,作者报告该方式「更安全和高效,尤其在数据保密至关重要的场景」。AI 可回答无需 SQL 的问题(如列举表名、描述表关系),也能生成 SELECT 查询并由后续节点执行返回格式化结果。记忆节点保存 schema、问题和初始回答,但不保存 SQL 执行结果中的数据值(author_report)。

值得知道

1) 本模板核心安全机制依赖「SQL 在 Agent 外执行且结果不回传」,若修改连线让结果回流 Agent 将破坏保密性。2) 正则提取仅匹配 SELECT...; 形式,复杂多语句或 CTE 可能提取失败。3) 模板示例使用 db4free 免费 MySQL 服务,生产环境建议替换为自有数据库并更新凭证。4) 本站未实测该工作流(reproduction=not_tested),搭建后请先用示例问题验证节点输出。5) 如需完全手动执行 SQL 保隐私,可复制 Agent 生成的 SQL 到本地客户端运行,不依赖工作流内的 MySQL 执行节点。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • OpenAI Chat Model 节点:绑定OpenAI API 凭证。
  • List all tables in a database 节点:绑定mySql 凭证。
  • Extract database schema 节点:绑定mySql 凭证。
  • Run SQL query 节点:绑定mySql 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #2508(约 29 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-24

步骤

  1. 准备环境与一次性 Schema 下载

    1) 准备 MySQL 数据库并导入数据(模板示例使用 Chinook 数据集,可从 GitHub 获取)。2) 在 n8n 中配置 mySql 与 openAiApi 凭证。3) 运行工作流上半部分(Manual Trigger → List all tables → Extract database schema → Add table name → Convert to binary → Save file locally),将 schema 保存为 ./chinook_mysql.json。此步骤只需执行一次。

  2. 聊天触发并加载本地 Schema

    用户在 Chat Trigger 聊天窗口发送问题。工作流自动读取本地保存的 ./chinook_mysql.json,提取为 JSON 对象,并与 Chat Trigger 的 sessionId、action、chatInput 合并为统一数据结构,供 AI Agent 使用。

  3. AI Agent 基于 Schema 生成 SQL

    AI Agent(conversationalAgent)接收合并后的数据。其输入文本包含数据库 schema 与用户问题;系统提示要求模型仅基于结构生成 SQL,用三引号包裹 SQL 命令,并声明无 SQL 执行工具。模型输出可能包含 SQL 查询,也可能仅为直接回答。

    运行提示词 · 来源原文。AI Agent 节点 parameters.text(用户输入模板)

    =Here is the database schema: {{ $json.schema }}
    Here is the user request: {{ $('Chat Trigger').item.json.chatInput }}

    运行提示词 · 来源原文。AI Agent 节点 options.systemMessage(系统提示)

    Assistant is a large language model trained by OpenAI.
    
    Assistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.
    
    Assistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.
    
    Overall, Assistant is a powerful system that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist.
    
    Help user to work with the MySQL database.
    
    Please wrap any sql commands into triple quotes. You don't have a tool to run SQL, so the user will do that instead of you.
  4. 判断并执行 SQL 查询

    使用 IF 节点(Check if query exists)判断 AI Agent 输出是否包含 SQL。若存在:用正则表达式提取 SELECT 语句(Extract SQL query),经 MySQL 节点执行,再格式化结果为易读表格。若不存在:直接走 No Operation 分支,将 Agent 的文字回答返回聊天窗口。

    运行提示词 · 来源原文。Extract SQL query 节点 assignments.query(正则提取 SQL)

    ={{ ($json.output.match(/SELECT[\s\S]*?;/i) || [])[0] || "" }}
  5. 返回最终结果

    将 Agent 的原始回答与 SQL 执行结果(如有)合并,格式化为 markdown 表格,最终在聊天窗口呈现。若未执行 SQL,则仅显示 Agent 的直接回答。

可复制提示词

搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限

这一段是提示词,页面不会在这里插入广告。

你是一个 n8n 工作流搭建助手。用户想复现「仅用 Schema 生成 SQL」的 AI Agent 模板。请按以下顺序协助:1) 确认用户已有 n8n 实例及 openAiApi、mySql 凭证;2) 指导导入 workflow JSON 并检查节点连接;3) 说明需先执行上半部分保存 schema 到本地;4) 提醒 AI Agent 的 systemMessage 已固定为 schema-only 模式,不建议随意修改核心安全约束。

如需替换为 PostgreSQL 等其他数据库,原理相同,但需调整 MySQL 节点为对应数据库节点并修改 schema 提取查询。

来源

Generate SQL queries from schema only - AI-powered · yulia · n8n.io · 2024-10-29

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例