当前位置: 首页 > news >正文

小智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.dtcms.com/a/344314.html

相关文章:

  • Matplotlib 可视化大师系列(三):plt.bar() 与 plt.barh() - 清晰对比的柱状图
  • 计算机组成原理(10) - 浮点数的表示
  • 全栈开发:从LAMP到云原生的技术革命
  • docker + nginx + pm2 部署前端项目和后端(nodejs)项目
  • setup 语法糖核心要点
  • 第二十八天:多项式求值问题
  • 决策树进阶学习笔记
  • 文件包含的学习笔记
  • ExcelUtils实现 设置内容 插入行 复制行列格式
  • Day11 数据统计 图形报表
  • 打造数字化资产管理新范式——资产管理系统实战体验
  • DIC技术极端环境案例分享:35MPa水下高压釜拉伸测试
  • Unity 自用帧同步架构分享
  • Python递归下降解析器深度解析:从原理到工程实践
  • layui.formSelects自定义多选组件在layer.open中使用、获取、复现
  • 2025年十大工程项目管理软件
  • 如何使用AI大语言模型解决生活中的实际小事情?
  • 【机器学习深度学习】LMDeploy的分布式推理实现
  • Laravel分布式全链路追踪实战
  • OpenCV 图像边缘检测
  • 设计模式之装饰模式
  • 技术革新:再互动平台如何以全链路数字化重构防伪溯源生态
  • 泵站远程监控与自动化控制系统:智慧泵房设备的创新实践
  • RLHF的定义
  • 无人机延时模块技术难点解析
  • 数字安全隐形基石:随机数、熵源与DRBG核心解析与技术关联
  • Kubernetes 构建高可用、高性能 Redis 集群
  • 服务器硬件中的磁盘SSD与HDD性能区别,以及分别适用于什么业务?
  • 高性能、高实时、高安全:如何在飞凌嵌入式i.MX95xx核心板上同时实现?
  • C++ 循环:从入门到精通的深度解析