小智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
英文地址,請注明出處:http://en.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…