n8n使用AI Agent & MYSQL生成带图表的回复

概要

使用本地部署的n8n平台,在问答窗口中生成带图表的回答。

效果展示

在这里插入图片描述
在这里插入图片描述

添加节点

  1. When chat message received
  2. AI Agent
  3. Execute a SQL query
  4. Code
  5. AI Agent (Tool: QuickChart)

在这里插入图片描述

完整流程如图所示,我这里是使用MYSQL作为模型回答的信息源(知识库)。如果不用MYSQL,那么中间三个节点就不需要了。

  1. 第一个AI Agent的作用是把自然语言转SQL,Source for Prompt选Define below,prompt如下,其中 {{ $json.chatInput }} 表示上一节点的用户输入。接入对应的Model和Memory 。Memory的Session Key From Previous Node填 {{ $json.sessionId }}
请根据我的问题和下方提供的MySQL建表语句,仅生成一条查询原始数据的SQL语句,不做任何业务判断,不使用CASE表达式或类似的判断语句,不需要给出最终答案。
只输出SQL语句本身,不包含任何解释说明。
SQL语句应能直接用于查询所需数据,供后续分析。
cash_flow代表当前时间的现金流,不能进行求和计算。
如分析某指标时需要一并查询year、week ,并排序。
查询的字段需要重命名为COMMENT值。
我的问题:{{ $json.chatInput }}
MYSQL表结构:
CREATE TABLE cash_flow_history (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增主键',
    year INT COMMENT '年',
    week INT COMMENT '周',
    cash_in DECIMAL(20,2) COMMENT '流入金额',
    cash_out DECIMAL(20,2) COMMENT '流出金额',
    cash_flow DECIMAL(20,2) COMMENT '现金流',
    cash_flow_cumulative DECIMAL(20,2) COMMENT '现金流累计',
    repay_loan_out DECIMAL(20,2) COMMENT '偿还贷款_流出',
    internal_borrowing_lease_out DECIMAL(20,2) COMMENT '内部拆借&融资租赁付款_流出',
    internal_borrowing_in DECIMAL(20,2) COMMENT '内部拆借_流入',
    interest_out DECIMAL(20,2) COMMENT '利息_流出',
    loan_in DECIMAL(20,2) COMMENT '取得借款_流入',
    salary_welfare_out DECIMAL(20,2) COMMENT '工资&福利_流出',
    investment_out DECIMAL(20,2) COMMENT '投资_流出',
    reimbursement_other_in DECIMAL(20,2) COMMENT '报销及其他_流入',
    reimbursement_other_out DECIMAL(20,2) COMMENT '报销及其他_流出',
    other_cash_out DECIMAL(20,2) COMMENT '支付其他现金流出_流出',
    other_investment_in DECIMAL(20,2) COMMENT '收到其他投资现金_流入',
    investment_in DECIMAL(20,2) COMMENT '收到投资_流入',
    subsidy_other_in DECIMAL(20,2) COMMENT '收到的补贴及其他_流入',
    subsidy_other_out DECIMAL(20,2) COMMENT '收到的补贴及其他_流出',
    tax_out DECIMAL(20,2) COMMENT '税费_流出',
    tax_return_in DECIMAL(20,2) COMMENT '税费返还_流入',
    purchase_payment_out DECIMAL(20,2) COMMENT '采购付款_流出',
    purchase_asset_out DECIMAL(20,2) COMMENT '采购资产_流出',
    sales_in DECIMAL(20,2) COMMENT '销售回款_流入'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='历史现金流数据表';
  1. Execute a SQL query节点配置如下:
    添加对应的MYSQL凭证信息,如果是docker部署的n8n和MYSQL,host填宿主机的ip就可以了。在这里插入图片描述
    在这里插入图片描述

  2. Code节点的作用是把MYSQL查询出的数据转为JSON字符串。代码如下:

// javascript
// n8n 中 items 是一个数组,每个元素是 { json: { ... } }
const data = items.map(item => item.json);

// 转为 JSON 字符串
const jsonString = JSON.stringify(data);

// 返回 JSON 字符串
return [
  {
    json: {
      jsonString
    }
  }
];

  1. 这个AI Agent的model需要选支持Function Calling/Tool Calling功能的模型,不然无法调用Tool。

QuickChart的配置如下,Labels Array点一下箭头处的⭐️,让模型自动填入,最终效果Labels Array和Data都是Defined automatically by the model。图中只是展示⭐️在哪里,不是最终效果。
在这里插入图片描述

现在就可以发起问答了,如果有合适的数据,模型会自动调用Tool生成图表。在聊天窗口右侧有Logs信息,模型会多次调用Tool,原因是模型传入的参数不对、数据不全、效果不好等自动重试,最后选择输出一个合适的图表。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值