【LLM】如何在Cursor中調用Dify工作流

這篇文章將通過一個接口文檔知識庫示例,帶你了解如何在 Cursor 中通過 Mcp Server 調用 Dify 平臺配置的工作流。

1. 準備工作

  • 需要準備文本生成模型、向量模型、Rerank 模型(可選),這些都可以在 阿里云百煉平臺 申請免費使用額度。

  • 準備知識庫文檔,我這里使用 Dify 維護知識庫API 文檔進行展示。

  • 已熟悉使用 Cursor 。

我使用的文本生成模型為:qwen-plus-2025-04-28,向量模型:text-embedding-v4,rerank 模型:gte-rerank-v2。

1.1 如何將在線的 API 文檔一鍵轉換成 markdown 格式?

你可以通過我開發的 '?顧得助手?' (chrome 擴展程序)一鍵將網頁內容轉換為任意格式文檔。該擴展程序已上架 chrome 應用商店,搜索 顧得助手 即可獲得,也可以通過 github 下載體驗最新功能,地址:https://github.com/herogus/good_ai_chrome_extension。我的這篇博客有詳細介紹,感興趣的可以點擊閱讀。

【Chrome】‘Good助手‘ 擴展程序使用介紹-CSDN博客文章瀏覽閱讀902次,點贊12次,收藏16次。這是我自己開發的一款 Chrome 瀏覽器擴展程序,目前主要集成了‘AI對話‘,’總結頁面’,‘基于頁面問答’等功能,最近幾天我也將寫一篇介紹如何開發 chrome 擴展程序的博客,帶你了解如何開發屬于自己的插件。 https://blog.csdn.net/u013176571/article/details/149159198?spm=1001.2014.3001.5501

下圖是簡單的請求示例:

2. 知識庫工作流搭建

2. 安裝 Dify

windows 下需要安裝 Docker destop,安裝教程可參考我的博客:

【環境搭建】Java、Python、Nodejs等開發環境搭建_node.js python環境安裝-CSDN博客文章瀏覽閱讀1.1k次,點贊7次,收藏21次。最近新買了一臺電腦,開發的同學都知道,重新在新電腦搭建開發環境是一件相對繁瑣的事,這篇文章我將介紹如何搭建Java(jdk、maven等)、Python(uv、conda等)、Nodejs、Docker Desktop(wsl2、docker等)等環境和應用。_node.js python環境安裝 https://blog.csdn.net/u013176571/article/details/148382037?spm=1001.2014.3001.5502

# 下載代碼
git clone https://github.com/langgenius/dify.git
# 進入docker目錄
cd docker
# 使用 docker compose 部署
cp .env.example .env
docker compose up -d

也可以體驗官方提供的在線免費版(需科學上網):https://cloud.dify.ai/apps

2.2 知識庫搭建

2.2.1 創建知識庫

進入 Dify 首頁 》 知識庫 》 創建知識庫 》 創建一個新的知識庫

2.2.2 文本分段設置

上傳文件后會進入到文本分割設置界面,點擊‘預覽塊’支持查看分割詳情。

  • 分段設置:用于設置 ' 文本分塊 ' 規則,文本文檔可以按照 \n\n,\n (段落、行) , markdown 文檔按照標題分塊 ##,###,####

  • Embedding 模型設置:這里配置向量模型,用于資源向量化。

  • 檢索設置,支持以下幾種檢索方式:

  1. 向量檢索:基于向量相似度檢索方式。

  2. 全文索引:基于關鍵詞倒排索引,類似 ES。

  3. 混合索引:同時執行全文檢索和向量檢索,最后通過 Rerank 模型對結果進行重排序。Top K 表示返回的結果數量(相似度得分最高的 K 個值)。

注:配置完之后,可以在 召回測試 中測試效果,如果效果不好,可以嘗試調整 相似度閾值 (值越大,精確度越高)。

2.2.3 搭建知識庫工作流

你可以在 ‘?探索?’ 模塊使用已有的模板創建工作流或者在 ' 工作室 ' 模塊創建一個新的工作流。

我這邊使用最簡單的配置,根據請求內容直接進行知識庫檢索,然后通過大模型總結后返回,你可以在 '知識檢索' 之前,增加一個 '問題分類' 流程,讓模型根據不同的輸入內容,索引到不同的知識庫。?

配置好后,點擊 發布 按鈕,發布自己的應用。

3. 配置MCP_SERVER

3.1 官方提供的 MCP 服務

3.1.1 入口

可以在 ' 編輯描述 ' 中說明工作流的功能以及調用說明。

3.1.2 cursor 配置

進入 cursor ,編輯 mcp.json,其中 url 為上圖 ‘ 服務端點 URL ’。

{"mcpServers": {"OnlineDifyServer": {"url": "https://api.dify.ai/mcp/server/QfH9DT07Mf33kxCX/mcp"}
}

3.2 自己開發一個 MCP Server

3.2.1 python 源碼

當然我喜歡自己自足,下面是我用 python 開發的一個調用 Dify 工作流(應用)的 Mcp Server 。

里面的 BASE_URL 是固定的,不同的工作流(應用)對應不同的 API_KEY。

import os
import uuid
from typing import Dict, Any, Optionalimport httpx
from dotenv import load_dotenv
from mcp.server.fastmcp import FastMCP# 定義一個 FastMCp 實例
mcp = FastMCP("DIFY_MCP_SERVER")# DIFY API配置信息
load_dotenv()
BASE_URL = "https://api.dify.ai/v1/chat-messages"
API_KEY = os.getenv("API_KEY")async def query_knowledge(query: str) -> Optional[Dict[str, Any]]:"""查詢知識庫信息"""if not API_KEY:return {"error": "API_KEY 未配置或為空"}headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json",}data = {"query": query,"user": str(uuid.uuid4()),"inputs": {},"response_mode": "blocking","conversation_id": "",}try:async with httpx.AsyncClient(timeout=120.0) as client:response = await client.post(BASE_URL, headers=headers, json=data)response.raise_for_status()print(f"Response status: {response.status_code}")print(f"Response text: {response.text}")return response.json()except httpx.HTTPError as e:return {"error": f"查詢知識庫請求失敗:{e}"}except Exception as e:return {"error": f"未知錯誤:{e}"}def format_response_data(response_data: Dict[str, Any]) -> str:"""格式化 Dify 返回數據"""event = response_data.get("event", "")if "error" == event:return str(response_data["message"])return response_data.get("answer", "")@mcp.tool()
async def query_dify_interface_info(query: str) -> str:"""用于查詢 Dify 維護知識庫接口文檔參數:- query: 查詢內容,str格式- 請求示例:1、通過文本創建文檔2、通過文件創建文檔3、創建空知識庫4、知識庫列表..."""response_data = await query_knowledge(query)return format_response_data(response_data)if __name__ == "__main__":# 運行 MCP 服務器,默認傳輸協議 stdiomcp.run(transport="stdio")

請求密鑰在這里獲取:

3.2.2 cursor 配置

{"mcpServers": {"LocalDifyServer": {"command": "uv","args": ["--directory","D:\\workspace\\project\\python\\2025\\good-agent-fastapi\\mcps","run","dify_mcp_server.py"],"env": {"API_KEY": "填寫服務密鑰"}}}
}

4. 驗證Mcp Server是否加載

Cursor 設置界面,出現如下信息說明工具加載正常。

5. 執行效果

問:查詢DIFY 創建空知識庫接口文檔

6. 拓展

6.1 如何提高查詢匹配度?

在使用過程中,可能口語提問往往不能查詢到自己想要的結果,可以嘗試在每個文本分段中,增加常見問題段落以提高自然提問命中率,比如(以 '?通過文本創建文檔 ' 接口為例):

#### 💬 常見用戶提問- 如何通過一段文本添加一個知識文檔?
- 可以用 API 上傳文字內容嗎?
- 不上傳文件,怎么創建文檔?
- `create_by_text` 是什么用的?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91806.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

L1、L2正則化的幾何解釋

L2正則化: 圖中用幾何方式形象地解釋了 Ridge 回歸(L2正則化)的原理。 ① 陰影圓:可以理解為(w1^2 w2^2)?≤R^2,圓周表示目標函數的約束線,這個圓表示了我們的參數 (w1,w2)可以活動的范圍。 …

【學習筆記】Java并發編程的藝術——第1章 并發編程的挑戰

第1章 并發編程的挑戰 1.1 上下文切換 即使是單核處理器也支持多線程執行代碼,CPU給每個線程分配CPU時間片實現多線程,而每個時間片一般是幾十毫秒,所以多個線程感覺是同時執行的 但同一個核切換線程執行時會保存運行狀態,以便下次…

leecode3 無重復元素的最長子串

我的思路 原始代碼 我發現我雖然解決問題了,但是我的思路不簡潔,不明白。 這個題本質上還是滑動窗口的問題。 具體思路為先定義兩個指針,對應滑動窗口的兩個邊界關鍵是:定義一個集合,來判斷這個窗口中的元素是否存在重…

【嵌入式匯編基礎】-ARM架構基礎(三)

ARM架構基礎(三) 文章目錄 ARM架構基礎(三) 7、AArch64 執行狀態 7.3 程序計數器 7.4 堆棧指針 7.5 零寄存器 7.6 鏈接寄存器 7.7 幀指針 7.8 平臺寄存器 (x18) 7.9 過程內調用寄存器 7.10 SIMD 和浮點寄存器 7.11 系統寄存器 7.13 PSTATE 7、AArch64 執行狀態 7.3 程序計…

[buuctf-misc]喵喵喵

m題目在線評測BUUCTF 是一個 CTF 競賽和訓練平臺,為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#%E5%96%B5%E5%96%B5%E5%96%B5BUUCTF 是一個 CTF 競賽和訓練平臺,為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.…

Vue 詳情模塊 2

Vue 漸進式JavaScript 框架 基于Vue2的移動端項目:詳情基礎內容,日期及電影描述 目錄 詳情 詳情基礎內容 初始化與賦值 渲染基礎內容 詳情樣式 日期處理 安裝moment 定義過濾器 使用過濾器 電影描述 總結 詳情 詳情基礎內容 初始化與賦值 …

【MODIS數據】MYD03

🌍 遙感數據的“導航儀”:深入解析MYD03地理定位產品 在衛星遙感領域,精確的地理定位是數據應用的基礎。作為Aqua衛星中分辨率成像光譜儀(MODIS)的核心支撐產品,MYD03雖不如地表溫度或植被指數產品知名&am…

如何填寫PDF表格的例子

實際應用場景中,我們會遇到需要根據會話內容自動填寫表格的情況,比如:pdf 表格。假設根據會話內容已經獲得相關信息,下面以填寫個人信息為例來說明。個人信息表格.pdf填寫后的效果:填寫代碼如下:from pdfrw…

2023年影響重大的網絡安全典型案例

以下是2023年影響重大的網絡安全典型案例,按時間順序梳理事件經過及技術細節:---一、DeFi協議攻擊:dForce借貸協議遭入侵(2023年4月)** - 時間線: - 4月19日08:58:黑客開始攻擊Lendf.Me合約&…

Vue 響應式基礎全解析2

DOM更新時機 修改響應式狀態后,DOM更新不是同步的。Vue會緩沖所有修改,在"next tick"周期中統一更新,確保每個組件只更新一次。 如需在DOM更新后執行代碼,可使用nextTick(): import {nextTick } from vueasync function increment() {count.value++

【黑馬SpringCloud微服務開發與實戰】(九)elasticsearch基礎

1. 認識elasticsearch2. 認識和安裝ES主播這里之前已經安裝好了,資料包里面有鏡像 docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugin…

由淺入深地講清楚瀏覽器緩存

一、什么是瀏覽器緩存?(入門級) 1. 瀏覽器緩存的定義瀏覽器緩存就是:瀏覽器把之前請求過的資源保存起來,下次訪問同樣的資源時可以直接用本地副本,而不是重新請求服務器。舉個生活例子: 你第一次…

Linux I/O 多路復用機制對比分析:poll/ppoll/epoll/select

Linux I/O 多路復用機制對比分析:poll/ppoll/epoll/select 1. 概述 I/O 多路復用是現代高性能網絡編程的核心技術,它允許單個線程同時監視多個文件描述符的狀態變化,從而實現高效的并發處理。Linux 提供了多種 I/O 多路復用機制&#xff0c…

高防服務器租用:保障數據安全

您的網絡速度是否卡頓,業務是否經常受到網絡攻擊的威脅呢?別擔心,高防服務器租用能夠幫助你解決這些困擾!高防服務器租用擁有著卓越的防御能力,可以幫助企業抵御各種網絡攻擊,能夠輕松化解各種超大流量的網…

基于python多光譜遙感數據處理、圖像分類、定量評估及機器學習方法應用

基于衛星或無人機平臺的多光譜數據在地質、土壤調查和農業等應用領域發揮了重要作用,在地質應用方面,綜合Aster的短波紅外波段、landsat熱紅外波段等多光譜數據,可以通過不同的多光譜數據組合,協同用于礦物信息有效提取。第一&…

CSS content-visibility:提升頁面渲染性能的 “智能渲染開關”

在前端開發中,你是否遇到過這樣的問題:頁面包含大量 DOM 元素(如長列表、復雜表格)時,滾動變得卡頓,交互響應遲緩?這往往是因為瀏覽器需要不斷渲染屏幕外的元素,浪費了大量計算資源。…

Javascript面試題及詳細答案150道之(016-030)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

仿真電路:(十七下)DC-DC升壓壓電路原理簡單仿真

1.前言 升壓的環境用的沒降壓的多,但是升壓會用在LED的很多電路上,所以理解一下原理 2.DC-DC升壓原理簡單仿真 升壓原理 下面還是對升壓進行簡單的仿真 拓撲結構以及原理和降壓還是很相似的,只是位置不太一樣,過程推導就不推導…

ros2--source

setup腳本類型 install下面會有幾個setup.xxx的shell腳本。 setup.bash setup.ps1 setup.sh setup.zsh 什么區別呢 文件名 Shell 類型 適用場景 setup.bash Bash (Linux/macOS) 標準 Linux/macOS 終端(默認使用) setup.sh 通用 Shell 兼容性更廣,但功能可能受限 setu…

40.MySQL事務

1.事務的作用事務用于保證數據的一致性,它由一組相關的 dml (update delete insert) 語句組成,該組的 dml (update delete insert) 語句要么全部成功,要么全部失敗。如:轉賬就要用事務來處理,用以保證數據的一致性。假…