微信扫码
添加专属顾问
我要投稿
掌握Dify,让AI应用开发更高效!本文带你深入了解Dify插件开发。 核心内容: 1. Dify平台介绍及其在AI应用开发中的作用 2. 开发Dify插件前的准备工作 3. 插件开发流程及权限配置指南
在当今迅速发展的人工智能领域,dify 作为开源的大语言模型(LLM)应用开发平台,为开发者提供了丰富的工具和插件支持,使得构建强大的 AI 应用变得更加高效。通过为 Dify 开发工具插件,您可以扩展 LLM 的能力,例如实现联网搜索、科学计算或绘制图片等功能,从而增强 AI 应用与外部世界的交互性。
在接下来的内容中,我们将深入探讨如何为 Dify 开发工具插件,帮助您充分利用平台的潜力,构建出色的 AI 应用。
开发 Dify 插件需要进行以下准备。
Dify 插件脚手架工具
Python 环境,版本号 ≥ 3.12
开发 Dify 插件需要进行以下准备。
Dify 插件脚手架工具
Python 环境,版本号 ≥ 3.12
Dify 插件开发脚手架工具又称为 dify-plugin-daemon,可以被视作插件开发 SDK。
访问 Dify Plugin CLI(https://github.com/langgenius/dify-plugin-daemon/releases) 项目地址,下载并安装最新版本号和对应操作系统的工具。
本文以装载 M 系列芯片的 macOS 为例。下载 dify-plugin-darwin-arm64 文件后,赋予其执行权限。
chmod +x dify-plugin-darwin-arm64 运行以下命令检查安装是否成功。
./dify-plugin-darwin-arm64 version
若提示 “Apple 无法验证” 错误,请前往 “设置 → 隐私与安全性 → 安全性”,轻点 “仍要打开” 按钮。
若提示 “Apple 无法验证” 错误,请前往 “设置 → 隐私与安全性 → 安全性”,轻点 “仍要打开” 按钮。
详细说明请参考Python安装教程,或询问 LLM 安装版本号 ≥ 3.12 的 Python 环境
运行脚手架命令行工具,创建一个新的 dify 插件项目。
./dify-plugin-darwin-arm64 plugin init 如果你已将该二进制文件重命名为 dify 并拷贝至 /usr/local/bin 路径下,可以运行以下命令创建新的插件项目:
dify plugin init 下文将使用 dify 作为命令行示例。如遇到问题,请将 dify 命令替换为命令行工具的所在路径。
脚手架工具内的所有模板均已提供完整的代码项目。在本文实例中,选择 Tool 插件。
插件类型:工具
插件还需读取 Dify 平台的权限,为该示例插件授予以下权限:
在终端内使用方向键选择权限,使用 “Tab” 按钮授予权限。 勾选所有权限项后,轻点回车完成插件的创建。系统将自动生成插件项目代码。
在生成的项目文件中有两个比较重要的文件夹
这两个的表现稍后会在dify工具中能体现
dify-plugin-example.yaml
identity: author: xxxx name: dify-plugin-example label: en_US: dify-plugin-example zh_Hans: dify-plugin-example pt_BR: dify-plugin-example description: en_US: "Use this plugin to fetch the URL content(provider)." zh_Hans: "使用此插件获取URL内容(provider)" pt_BR: "Use este plugin para buscar o conteúdo do URL(provider)" icon: icon.pngtools: - tools/dify-plugin-example.yamlextra: python: source: provider/dify-plugin-example.py
dify-plugin-example.py
from typing import Anyfrom dify_plugin import ToolProviderfrom dify_plugin.errors.tool import ToolProviderCredentialValidationErrorclass DifyPluginExampleProvider(ToolProvider): def _validate_credentials(self, credentials: dict[str, Any]) -> None: try: """ IMPLEMENT YOUR VALIDATION HERE """ except Exception as e: raise ToolProviderCredentialValidationError(str(e))
DifyPluginExampleProvider 里面实现的主要是一些验证功能,比如你的工具需要API Key就可以在这里实现
dify-plugin-example.yaml
identity: name: dify-plugin-example author: fakzhao label: en_US: dify-plugin-example zh_Hans: dify-plugin-example pt_BR: dify-plugin-exampledescription: human: en_US: The URL to fetch content from. zh_Hans: 要获取内容的URL pt_BR: O URL para buscar conteúdo. llm: Convert a web page into well structured Markdown.parameters: - name: url type: string required: true label: en_US: URL zh_Hans: URL pt_BR: URL human_description: en_US: "The URL to fetch content from." zh_Hans: "要获取内容的URL" pt_BR: "O URL para buscar conteúdo." llm_description: llm form: llmextra: python: source: tools/dify-plugin-example.py
dify-plugin-example.py
import jsonimport requestsfrom collections.abc import Generatorfrom typing import Anyfrom dify_plugin import Toolfrom dify_plugin.entities.tool import ToolInvokeMessageclass DifyPluginExampleTool(Tool): def _invoke(self, tool_parameters: dict[str, Any]) -> Generator[ToolInvokeMessage]: print(json.dumps(tool_parameters, indent=4)) url = tool_parameters["url"] print(f"fetching {url}") try: j_url = f"https://r.jina.ai/{url}" print(f"jina url {j_url}") response = requests.get(j_url) response.raise_for_status() content = response.text except requests.RequestException as e: content = str(e) yield self.create_json_message({ "result": content })
可以看出,这个工具作用是提供一个url,返回一个markdown给其他节点使用(https://r.jina.ai是一个将网页转markdown的网页,可以在浏览器试试https://r.jina.ai/https://example.com)
插件开发完成后,接下来需要测试插件是否可以正常运行。Dify 提供便捷地远程调试方式,帮助你快速在测试环境中验证插件功能。 前往“插件管理”页获取远程服务器地址和调试 Key。
回到插件项目,拷贝 .env.example 文件并重命名为 .env,将获取的远程服务器地址和调试 Key 等信息填入其中。 .env 文件:
INSTALL_METHOD=remoteREMOTE_INSTALL_HOST=remoteREMOTE_INSTALL_PORT=5003REMOTE_INSTALL_KEY=****-****-****-****-****
运行 python -m main 命令启动插件。在插件页即可看到该插件已被安装至 Workspace 内,团队中的其他成员也可以访问该插件。
到这里你的插件已经成功运行,并可以进行debug.
在工作流中添加你自己的插件
最终的workflow
查看运行结果
已经成功到运行?
确认插件能够正常运行后,可以通过以下命令行工具打包并命名插件。运行以后你可以在当前文件夹发现 dify-plugin-example.difypkg 文件,该文件为最终的插件包。 将 ./dify-plugin-example 替换为插件项目的实际路径
dify plugin package ./dify-plugin-example
恭喜,你已完成一个工具类型插件的完整开发、调试与打包过程!
如果想要将插件发布至 Dify Marketplace,请确保你的插件遵循了插件发布规范。审核通过后,代码将合并至主分支并自动上线至 Dify Marketplace。
通过为 Dify 开发工具插件,我们不仅能够扩展 AI 应用的能力,还能提升系统的灵活性和可扩展性。无论是接入外部 API、执行复杂计算,还是增强交互体验,插件都能让 Dify 更加强大。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-28
使用Ollama本地部署Gemma-3-27B大模型,基于LangChain分析PDF文档
2025-03-28
HAI Platform:幻方AI开源的高效AI训练平台
2025-03-28
Dify-Plus:一个定制化的Dify二开开发
2025-03-28
MCP标准即将一统AI江湖?OpenAI官宣开始采用,但智能体通信协议之争才刚刚开始
2025-03-28
开源骚操作!改Logo、塞私货、传密钥|某药企魔改Dify,惨遭律师函...
2025-03-28
【开源】Dify+RAGFlow强强联合:知识库精准度飙升,PDF表格秒变结构化数据!
2025-03-28
给丽珠医药普普法,开源“白嫖”与法律后果
2025-03-28
阿里深夜开源Qwen2.5-Omni,7B参数完成看、听、说、写
2025-01-01
2024-07-25
2025-01-21
2024-05-06
2024-09-20
2024-07-20
2024-06-12
2024-07-11
2024-08-13
2024-12-26
2025-03-25
2025-03-25
2025-03-24
2025-03-22
2025-03-19
2025-03-17
2025-03-17
2025-03-13