Dify中的Extension插件開發例子:以neko為例

本文使用Dify v1.0.0-beta.1版本。以neko為例,介紹Dify中的Extension插件開發例子。需要說明的是Dify官方要求Python≥3.12,但發現本地PyCharm調試Python≥3.12有問題,就采用的Python 3.11版本。

一.Extension插件項目創建

1.填寫插件信息

按照提示配置插件名稱、作者信息與插件描述。如果是團隊協作,也可以將作者填寫為組織名。插件名稱長度必須為 1-128 個字符,并且只能包含字母、數字、破折號和下劃線。

填寫完成后,在插件開發語言環節中選擇 Python。

2.選擇插件類型并初始化項目模板

腳手架工具內的所有模板均已提供完整的代碼項目,本文將以 Extension 類型插件模板作為示例。

3.配置插件權限

插件還需要讀取 Dify 主平臺的權限才能正常連接。需要為該示例插件授予以下權限:

  • Tools
  • LLMs
  • Apps
  • 啟用持久化儲存 Storage,分配默認大小存儲
  • 允許注冊 Endpoint

在終端內使用方向鍵選擇權限,使用 Tab 按鈕授予權限。勾選所有權限項后,輕點回車完成插件的創建。系統將自動生成插件項目代碼。

插件的基礎文件結構,如下所示:

  • GUIDE.md 一個簡短的引導教程,帶領完成插件的編寫流程。

  • README.md 關于當前插件的簡介信息,需要把有關該插件的介紹和使用方法填寫至該文件內。

  • _assets 存儲所有與當前插件相關的多媒體文件。

  • endpoints 按照 cli 中的引導創建的一個 Extension 類型插件模板,該目錄存放所有 Endpoint 的功能實現代碼。

  • group 指定密鑰類型、多語言設置以及 API 定義的文件路徑。

  • main.py 整個項目的入口文件。

  • manifest.yaml 整個插件的基礎配置文件,包含該插件需要什么權限、是什么類型的擴展等配置信息。

  • requirements.txt 存放 Python 環境的依賴項。

二.Extension插件開發過程

1.插件開發

(1)定義插件請求入口Endpoint

編輯 endpoints/test_plugin.yaml,修改代碼如下所示:

path: "/neko"
method: "GET"
extra:python:source: "endpoints/test_plugin.py"

該代碼的意圖是定義該插件的入口路徑為 /neko,請求方法為 GET 類型。插件的功能實現代碼為 endpoints/test_plugin.py 文件。如下所示:

(2)編寫插件功能

插件功能:請求插件服務,輸出一只貓。編寫插件的功能實現代碼 endpoints/test_plugin.py 文件,示例代碼如下所示:

運行此代碼需要先安裝以下 Python 依賴包:

2.插件調試

然后就可以看到帶有DEBUGGING PLUGIN標識的test_plugin插件,如下所示:

點擊+按鈕添加API端點。端點名稱和API Key隨便填寫即可,如下所示:

這樣就會生成一個API端點,如下所示:

用瀏覽器打開上述URL發現報錯,原因是應該為localhost:5002,而不是localhost。如下所示:

新建一個簡單Chatflow工作流,測試該URL。如下所示:

3.插件打包

具體操作不再贅述,詳細參考文獻[3]。

4.插件發布

具體操作不再贅述,詳細參考文獻[3]。

三.可能遇到的問題 [4][5]

1.ENDPOINT_URL_TEMPLATE問題

由于后端源碼運行,修改dify\api\.env中的ENDPOINT_URL_TEMPLATE=http://localhost:5002/e/{hook_id},如下所示:

重新啟動后端服務,便可以看到正確URLhttp://localhost:5002/e/AqXHXakiZUouDpkMaOEpLXhDHP027BGI/neko,如下所示:

參考文獻

[1] Extension插件:https://docs.dify.ai/zh-hans/plugins/quick-start/develop-plugins/extension-plugin

[2] Neko:https://marketplace.dify.ai/plugins/langgenius/neko

[3] Dify中的GoogleSearch工具插件開發例子(星球附件):https://z0yrmerhgi8.feishu.cn/wiki/Ib15wh1rSi8mWckvWROckoT2n6g

[4] chore(1.0): improve some environment variables #12814:https://github.com/langgenius/dify/pull/12814

[5] Inconsistency between docker-compose.yaml and api on specifying entrypoint for pluginDaemon in v1.0.0-beta.1:https://github.com/langgenius/dify/issues/13113

[6] Dify中的Extension插件開發例子:以neko為例:https://z0yrmerhgi8.feishu.cn/wiki/H5YRw43pgi7mOukWHJHc81ztnre

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

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

相關文章

Linux中logger命令的使用方法詳解

文章目錄 一、基礎語法二、核心功能選項三、?設施與優先級對照?1. 常用設施(Facility)2. 優先級(Priority)從低到高:3. 組合示例? 四、典型使用場景1. 記錄簡單消息2. 帶標簽和優先級3. 記錄命令輸出4. 發送到遠程服…

【圖論 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+

本文涉及知道點 C圖論 C并集查找 預計2025年5月29號 7:00發布 P3671 [USACO17OPEN] Where’s Bessie? S 題目描述 Farmer John 一直以精通技術而聞名,他正在測試他的新型無人機搭載的奶牛定位相機。這款相機據說可以拍攝他的田地并自動確定奶牛的位置。不幸的是…

《軟件工程》第 13 章 - 軟件維護

知識思維導圖 13.1 軟件維護與進化的概念 1. 核心概念 軟件維護:軟件交付使用后,為糾正錯誤、改善性能或其他屬性而進行的修改過程軟件進化:隨著時間推移,軟件系統為適應環境變化和用戶需求而不斷演變的過程 2. 維護類型&#…

AI Agent助力醫療科研突破

最近,AI Agent在醫療科研領域的突破格外引人注目。非營利組織Future House宣布其多智能體系統Robin在約10周內,為干性年齡相關性黃斑變性(dAMD)發現了一種潛在新療法,這一成果展示了AI在加速科學發現,特別是…

(高級)高級前端開發者指南:框架運用與綜合實戰

當您已經掌握了HTML5、CSS3和JavaScript的基礎知識后,接下來就是學習現代前端框架和性能優化的高級階段。本文將重點介紹Vue.js/React的組件化開發、狀態管理和路由配置,以及前端性能優化的核心技巧。通過豐富的代碼示例和詳細講解,幫助您在實…

提示詞寫的好,用VSCODE+python+Claude3.5開發edge擴展插件(2)

導入文件夾: 導入擴展成功: 通過網盤分享的文件:Meteor New Tab.zip 鏈接: https://pan.baidu.com/s/1fXOhuoYboO_Afzqhuo5Eew?pwdxeix 提取碼: xeix edge收藏夾書簽過多時在擴展顯示可以搜索篩選,

CUDA加速的線性代數求解器庫cuSOLVER

cuSOLVER是NVIDIA提供的GPU加速線性代數庫,專注于稠密和稀疏矩陣的高級線性代數運算。它建立在cuBLAS和cuSPARSE之上,提供了更高級的線性代數功能。 cuSOLVER主要功能 1. 稠密矩陣運算 矩陣分解: LU分解 (gesvd) QR分解 (geqrf) Cholesky分解 (potrf…

Redis之金字塔模型分層架構

在分布式系統架構中,Redis 憑借其卓越的讀寫性能成為緩存層的核心組件。但如何精準判斷數據是否適合進入 Redis,以及如何科學量化 “高頻查詢” 標準,始終是高性能系統設計的關鍵課題。 數據訪問特征金字塔模型是用于評估數據是否適合進入 R…

JVM 垃圾回收機制深度解析(含圖解)

JVM 垃圾回收機制深度解析(含圖解) 一、垃圾回收整體流程 垃圾回收圖解 #mermaid-svg-KPtxlwWntQx8TOj3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KPtxlwWntQx8TOj3 .error-icon{fill…

MySQL快速入門篇---聯合查詢

一、什么是聯合查詢 1.1、概念 聯合查詢是SQL中用于合并多個SELECT語句結果集的操作。條件是被合并的結果集列數相同并且數據類型兼容。也可以說一次查詢涉及兩張或兩張以上的表,就稱為聯合查詢。 1.2、為什么要使用聯合查詢 如果數據被拆分到多個表中&#xff…

Spring Boot AI 之 Chat Client API 使用大全

ChatClient提供了一套流暢的API用于與AI模型交互,同時支持同步和流式兩種編程模型。 流暢API包含構建Prompt組成元素的方法,這些Prompt將作為輸入傳遞給AI模型。從API角度來看,Prompt由一系列消息組成,其中包含指導AI模型輸出和行為的指令文本。 AI模型主要處理兩類消息: …

基于點標注的弱監督目標檢測方法研究

摘要 在計算機視覺領域,目標檢測需要大量精準標注數據,但人工標注成本高昂。弱監督目標檢測通過低成本標注訓練模型,成為近年研究熱點。本文提出一種基于點標注的弱監督目標檢測算法,僅需在圖像中物體中心點標注,即可高…

外網如何連接內網中的mysql數據庫服務器?簡單網絡工具方案

當內網服務器部署好mysql數據庫后,在局域網外需要用程序進行mysql 遠程訪問,而mysql因為安全的因素,默認的時候用戶設置的是不能遠程連接,只能本地連接,這個時候就需要自己去修改其中的設置。下面就介紹一下相關mysql的…

無人機避障——深藍學院浙大柵格地圖以及ESDF地圖內容

Occupancy Grid Map & Euclidean Signed Distance Field: 【注意】:目的是為了將有噪聲的傳感器收集起來,用于實時的建圖。 Occupancy Grid Map: 概率柵格: 【注意】:由于傳感器帶有噪聲,在實際中基于…

Rocky Linux 8.9 升級至 8.10 測試可通過以下步驟完成

一、執行升級? sudo dnf -y update --disablerepoappstream 二、重啟系統? reboot ?三、驗證升級結果? ?檢查系統版本? 執行命令確認版本已更新 cat /etc/redhat-release 輸出應包含 Rocky Linux release 8.10

固定翼無人機拋投技術分析!

一、技術要點 1. 結構設計優化 傳動組件創新:采用齒輪-齒條傳動(替代傳統絲桿結構),簡化機械設計,降低成本并提高可靠性。例如,通過電機驅動齒輪帶動齒條移動,實現柱銷與拋投物插孔的精準分…

Oracle中的[行轉列]與[列轉行]

目錄 一、原始數據 二、行轉列的多種實現方式 1.CASE WHEN 2.DECODE 3.PIVOT(Oracle獨有) 4.使用LEAD開窗函數 三、列轉行的多種實現方式 1.UNPIVOT(Oracle獨有) 2.UNION ALL合并結果集 四、行轉列練習:CASE WHEN/DECODE/PIVOT/lag/LEAD 1.CASE WHEN 2…

【Excel VBA 】窗體控件分類

一、Excel 窗體控件分類 Excel 中的窗體控件分為兩大類型,適用于不同的開發需求: 類型所在選項卡特點表單控件開發工具 → 插入 → 表單控件簡單易用,直接綁定宏,兼容性好,適合基礎自動化操作。ActiveX 控件開發工具…

[ 計算機網絡 ] 深入理解OSI七層模型

🎉歡迎大家觀看AUGENSTERN_dc的文章(o゜▽゜)o☆?? 🎉感謝各位讀者在百忙之中抽出時間來垂閱我的文章,我會盡我所能向的大家分享我的知識和經驗📖 🎉希望我們在一篇篇的文章中能夠共同進步!!&…

線性代數之張量計算,支撐AI算法的數學原理

目錄 一、張量計算的數學本質 1、線性代數:張量的幾何與代數性質 2、微積分:梯度與自動微分 3、優化理論:張量分解與正則化 4、張量計算的核心操作 二、張量計算在AI算法中的作用 1、數據表示與處理 2、神經網絡的參數表示 3、梯度計算與優化 三、張量計算在AI中的…