小智ai+mcp+n8n的智能组合

小智ai+mcp+n8n的智能组合

      • 1 小智ai的版本
      • 2 n8n的配置
      • 3 mcp的demo
      • 4 工作流json

​ 之前有写过小智ai的介绍,它提供了流畅且丰富的用户语音交互能力。n8n提供了灵活且稳定的后台工作流的能力,如果这两个工具进行组合,可以打造一个好玩又好用的智能ai应用。

​ 我这里使用了官方提供的mcp服务来联动这两个工具,主要是借用小智ai与n8n的开源优越性。
在这里插入图片描述

1 小智ai的版本

​ 我之前有写过介绍了的(虾哥小智AI助手python电脑端初体验_虾哥 小智-CSDN博客 ),我目前使用的是黄俊森之前的一版,目前作者已经在github版本更新了,把之前外挂mcp服务的形式,改为新版本集成了。不过我这里还是使用的老版本,我使用的版本地址,提取码: phil。

2 n8n的配置

在这里插入图片描述

​ 这里使用的是Webhook节点、Respond to Webhook节点,分别作为post、response的对象。其中,Webhook节点的节点配置如下:

  • HTTP Method: POST
  • Authentication: Header Auth 这里在header中加入了自己定义的api_key,这一步也可以不添加。
  • Respond: Using ‘Respond to Webhook’ Node 这里需要选择使用Respond to Webhook节点响应。
  • Options: data 这里接收小智ai客户端post来的参数信息。

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

​ Respond to Webhook节点这里,我配置的信息有:

Respond With: JSON

Response Body :

{
“task_id”: “{{ $(‘Webhook’).item.json.body.task_id }}”,
“workflow_id”: "{{ KaTeX parse error: Expected 'EOF', got '}' at position 15: workflow.name }̲}", "status":…json.output.toJsonString()}}
}

Options: Response Code 200

Response Headers: 自定义配置吧,也可以不配置

在这里插入图片描述

在这里插入图片描述

​ AI Agent这里的System Message,需要好好打磨和调试,因为它是工具调用的灵魂,我这里提供一个demo

你是一位用户需求智能响应管家,你必须使用中文回复,你必须根据用户的需求信息进行分析,然后进行反馈。

这里是用户的输入信息:{{ $(‘Webhook’).item.json.body.user_input}}

你的任务1:
如果用户的输入信息中含有"百度热点"关键词,你必须运行获取百度热点工具,并把该工具的输出信息反馈给用户,按照这里的格式输出:获取了6条信息:1.热点信息1、2.热点信息2、

你的任务2:
如果用户的输入信息中明确提到不知道你的能力,可以把你的工具介绍给用户,只介绍工具名称。

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

​ n8n除了可以添加tool工具外,还支持工作流调用子工作流,需要准确的System Message进行调度识别。

3 mcp的demo

​ 这里是一个requests的demo,添加在mcp的server服务中即可。

@mcp.tool()
def start_n8n_workflow(user_input: str) -> dict:"""Open n8n workflow with the given user_input.then return the result of the workflow."""import requestsimport jsonimport time# 从配置文件读取n8n相关配置BASE_WEBHOOK_URL = "你的n8n中的webhook地址"X_N8N_API_KEY = "你自定义的api_key"# 请求头设置headers = {"Content-Type": "application/json","X-N8N-API-KEY": X_N8N_API_KEY}# 生成时间戳作为task_idtask_id = str(int(time.time()))# 请求数据data = {"user_input": user_input,"task_id": task_id}try:# 发送POST请求response = requests.post(BASE_WEBHOOK_URL + WEBHOOK_ID,headers=headers,data=json.dumps(data))# 处理响应# 检查请求是否成功if response.status_code == 200:logger.info(f"n8n workflow 请求成功,状态码: 200 ok ")data = response.json()result = data.get('result')else:logger.info(f"n8n workflow 请求失败,状态码: {response.status_code}")result = f"n8n workflow 请求失败,状态码: {response.status_code}"return {"success": True, "result": result}except Exception as e:logger.info(f"发送请求时发生错误: {str(e)}")return {"success": False, "result": str(e)}

4 工作流json

​ 保存下面的文本为json文件,在n8n工作流编辑器页面点击从文件导入即可。
在这里插入图片描述

{"name": "xz_n8n_assistant","nodes": [{"parameters": {"httpMethod": "POST","path": "6eb7f60e-23e3-4074-963a-6f42dee63e69","authentication": "headerAuth","responseMode": "responseNode","options": {"binaryPropertyName": "data"}},"type": "n8n-nodes-base.webhook","typeVersion": 2,"position": [-896,-384],"id": "d4752292-416d-4bef-8de2-60be70d66cdb","name": "Webhook","webhookId": "6eb7f60e-23e3-4074-963a-6f42dee63e69","credentials": {"httpHeaderAuth": {"id": "9FNAq5gcbSRzHtBQ","name": "Header Auth account 2"}}},{"parameters": {"promptType": "define","text": "根据用户输入的需求信息,调用工具,最后用中文输出","options": {"systemMessage": "=你是一位用户需求智能响应管家,你必须使用中文回复,你必须根据用户的需求信息进行分析,然后进行反馈。\n\n这里是用户的输入信息:{{ $('Webhook').item.json.body.user_input}}\n\n你的任务1:\n如果用户的输入信息中含有\"百度热点\"关键词,你必须运行获取百度热点工具,并把该工具的输出信息反馈给用户,按照这里的格式输出:获取了6条信息:1.热点信息1、2.热点信息2、\n\n你的任务2:\n如果用户的输入信息中明确提到不知道你的能力,可以把你的工具介绍给用户,只介绍工具名称。\n\n\n\n\n"}},"type": "@n8n/n8n-nodes-langchain.agent","typeVersion": 2.1,"position": [-704,-384],"id": "d34bbdfd-e881-41b6-a184-513987862e7c","name": "AI Agent","retryOnFail": false,"maxTries": 2,"executeOnce": true,"alwaysOutputData": false},{"parameters": {"model": {"__rl": true,"value": "=openai/gpt-oss-120b","mode": "id"},"options": {}},"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion": 1.2,"position": [-704,-176],"id": "ba7a8eb0-0d48-4872-92f0-75c9863ed48e","name": "OpenAI Chat Model","credentials": {"openAiApi": {"id": "Hm8gyQkgPUkOVBi6","name": "OpenAi account"}}},{"parameters": {"respondWith": "json","responseBody": "={\n  \"task_id\": \"{{ $('Webhook').item.json.body.task_id }}\",\n  \"workflow_id\": \"{{ $workflow.name }}\",\n  \"status\": \"success\",\n  \"result\": {{$json.output.toJsonString()}}\n}","options": {"responseCode": 200,"responseHeaders": {"entries": [{"name": "X-N8N-API-KEY","value": "n8n_12345"},{"name": "Content-Type","value": "application/json; charset=utf-8"}]}}},"type": "n8n-nodes-base.respondToWebhook","typeVersion": 1.4,"position": [-304,-384],"id": "ab850bdd-6ef4-46b8-be98-818a6683bdb4","name": "Respond to Webhook"},{"parameters": {"toolDescription": "一个获取百度热点的工具","url": "https://api.1314.cool/getbaiduhot/","options": {}},"type": "n8n-nodes-base.httpRequestTool","typeVersion": 4.2,"position": [-512,-160],"id": "5ca81a09-cd74-45c2-97d7-ce656fd01d76","name": "HTTP-百度热点","alwaysOutputData": false}],"pinData": {},"connections": {"Webhook": {"main": [[{"node": "AI Agent","type": "main","index": 0}]]},"AI Agent": {"main": [[{"node": "Respond to Webhook","type": "main","index": 0}]]},"OpenAI Chat Model": {"ai_languageModel": [[{"node": "AI Agent","type": "ai_languageModel","index": 0}]]},"HTTP-百度热点": {"ai_tool": [[{"node": "AI Agent","type": "ai_tool","index": 0}]]}},"active": false,"settings": {"executionOrder": "v1"},"versionId": "b5a76a30-1562-4353-b29f-4d7da92a2b86","meta": {"templateCredsSetupCompleted": true,"instanceId": "1f16bc26aa41d68046a6cd33330705e84dc6e662ed18adf783908c69e188965b"},"id": "F17dzJC0t32JuQX3","tags": []
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94273.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DataGrip】连接达梦数据库后,能查询数据但是看不到表的几种情况分析,达梦数据库驱动包下载DmJdbcDriver18.jar

大概分为以下两类情况,配置问题和驱动包的问题 DmJdbcDriver18.jar点击下载 1.配置了表不可见 左上角点击过滤的图标,把table勾上就可以 2.Introspect using JDBC metadata 未勾选 1)老版本的DataGrip 在options选项下 3)新版…

全面解析 `strncasecmp` 字符串比较函数

1) 函数的概念与用途 strncasecmp 是 C 语言中一个非常实用的字符串处理函数,它执行不区分大小写的字符串比较,但只比较前 n 个字符。这个函数的名字来源于"string n case-compare"(字符串前n个字符不区分大小写比较)。…

高级SQL优化 | 告别 Hive 中 GROUP BY 的大 KEY 数据倾斜!PawSQL 自适应优化算法详解

数据倾斜让你的Hive查询慢如蜗牛?单个热点分组拖垮整个集群?PawSQL独家算法GroupSkewedOptimization来拯救!🎯 痛点直击:当数据倾斜遇上分组操作想象这样一个场景:你的电商平台有1000万VIP用户订单和100万普…

HUMS 2023齿轮箱数据分析

HUMS问答:https://humsconference.com.au/HUMS2023datachallenge/questions-answers.html 数据集申请:https://www.dst.defence.gov.au/our-technologies/helicopter-main-rotor-gearbox-planet-gear-fatigue-crack-propagation-test 历年试卷&#xff1…

智慧工地:科技赋能与管理革新下的建筑业新图景

随着数字技术的深度渗透,智慧工地正以“技术落地 行业变革 管理创新”的三重突破,重构施工场景的核心逻辑,推动建筑业从传统粗放式发展向精细化、智能化转型。一、技术落地:用科技筑牢安全防线,提升施工效率技术是智…

[docker/大数据]Spark快速入门

[docker/大数据]Spark快速入门1. 概述 1.1 诞生背景Spark官方文档:https://spark.apache.ac.cn/docs/latest/Spark 由加州大学伯克利分校 AMP 实验室于 2009 年开发,2013 年成为 Apache 顶级项目,旨在解决 MapReduce 的三大核心问题&#xff…

CSS 定位的核心属性:position

🧩 一、CSS 定位的核心属性:positionposition 属性用于定义一个元素在页面中的定位方式,它决定了:元素在页面中的定位规则是否脱离文档流元素的位置是相对于谁(父元素、浏览器窗口、自身等)✅ 可选值如下&a…

数据结构之深入探索快速排序

基准值的选定 我们之前已经用四种不同的方式实现了快速排序,如果还没有学习过的伙伴们可以看一下这篇文章哦:数据结构之排序大全(3)-CSDN博客 那我们既然已经学习了这么多种方法,为什么还要继续探索快速排序呢&#…

《递归与迭代:从斐波那契到汉诺塔的算法精髓》

🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题、洛谷刷题、C/C基础知识知识强化补充、C/C干货分享&学习过程记录 🍉学习方向:C/C方向学习者…

《LINUX系统编程》笔记p3

可重用函数不使用全局部变量,可以重复使用的函数.stat 命令作用:显示一个文件或文件夹的“元信息”。文件基本信息文件(File):显示所查询对象的名称。大小(Size):文件的大小&#xf…

大模型0基础开发入门与实践:第3章 机器的“统计学”:机器学习基础概念扫盲

第3章 机器的“统计学”:机器学习基础概念扫盲 1. 引言 想象一下,你是一位古代的农夫,毕生的经验告诉你:乌云密布、燕子低飞,那么不久便会下雨。你并没有学习过气象学,也不懂大气压和水汽凝结的原理。你的“…

Java调用Ollama(curl方式)

1. 安装Ollama Search 2. 调用 相关依赖 <dependencies><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.14</version></dependency><dependency>&…

nodejs koa框架使用

1: KOA 是express 打造的下一代web 开发框架提供更小更强的的核心功能&#xff0c;通过Promise 、async/await 进行异步编程&#xff0c;koa 可以不使用回调&#xff0c;解决了回调地狱的问题 blueBird 是nodejs 最出名的Primise 实现&#xff0c;除了实现标准的promise 之外&a…

2025年图像处理与光学国际会议(ICIPO 2025)

2025年图像处理与光学国际会议&#xff08;ICIPO 2025&#xff09; 2025 International Conference on Image Processing and Optics一、大会信息会议简称&#xff1a;ICIPO 2025 大会地点&#xff1a;中国北京 审稿通知&#xff1a;投稿后2-3日内通知 投稿邮箱&#xff1a;iac…

Kubernetes 构建高可用、高性能 Redis 集群

k8s下搭建Redis高可用1. 部署redis服务创建ConfigMap创建 Redis创建 k8s 集群外部2. 创建 Redis 集群自动创建 redis 集群手动创建 redis 集群验证集群状态3. 集群功能测试压力测试故障切换测试4. 安装管理客户端编辑资源清单部署 RedisInsight控制台初始化控制台概览实战环境使…

文件IO的基础操作

Java针对文件进行的操作:文件系统操作,File类(file类指定的路径,可以是一个不存在的文件)文件内容操作 : 流对象分为两类(1)字节流 以字节为基本的读写单位的 二进制文件 InputStream OutputStream(2)字符流 以字符为基本的读写单位的 …

【模版匹配】基于深度学习

基于深度学习的模版匹配 概述 本报告整理了2024-2025年最新的、可直接使用的模板匹配相关论文、方法和开源代码实现。所有方法都提供了完整的代码实现和预训练模型&#xff0c;可以直接应用到实际项目中。 一、轻量级现代模板匹配框架 1.1 UMatcher - 4M参数的紧凑型模板匹…

CMake进阶:Ninja环境搭建与加速项目构建

目录 1.引入Ninja的原因 2.Ninja 环境搭建&#xff08;跨平台&#xff09; 2.1.Linux系统安装 2.2.macOS 系统 2.3.Windows 系统 2.4.源码编译安装&#xff08;通用方案&#xff09; 3.Ninja 与构建系统配合&#xff1a;以 CMake 为例 4.加速构建的关键技巧 5.Ninja 与…

开发避坑指南(35):mybaits if标签test条件判断等号=解析异常解决方案

异常信息 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: The expression orderInfo.idList evaluated to a null value.报错语句 <if test"orderInfo.queryFlag ! null and orderInfo.queryFlag sett…

GitCode 疑难问题诊疗:全面指南与解决方案

引言 在软件开发的动态领域中&#xff0c;GitCode 作为一款强大的分布式版本控制系统&#xff0c;已然成为团队协作与项目管理的基石。它赋予开发者高效管理代码版本、轻松实现并行开发以及顺畅协同合作的能力。然而&#xff0c;如同任何复杂的技术工具&#xff0c;在 GitCode…