掌握Dify插件开发,让AI应用构建更高效!本文提供从零到一的实操指南。先梳理核心要点:Dify作为开源大语言模型(LLM)应用开发平台,在AI应用构建中扮演关键角色,如何为其编写插件,所需准备事项,以及开发、调试、打包、发布的完整流程。文章将通过实际案例逐步拆解,确保你能跟随操作并成功实践。
人工智能技术日新月异,Dify开源平台提供的工具与插件支持,让构建强大AI应用变得更为便捷。为Dify开发工具插件的核心在于扩展LLM的能力边界,例如实现联网搜索、科学计算或图像生成,这些功能显著增强AI应用与外部世界的交互能力。
接下来,我们深入探讨如何为Dify开发一个工具插件,帮助你充分挖掘平台潜力。直接进入正题。

准备工作
开发Dify插件前,需要完成以下准备。
- Dify插件脚手架工具
- Python环境,版本需≥3.12
Dify插件开发脚手架工具(又称dify-plugin-daemon)本质上是插件开发所需的SDK。
安装Dify插件开发脚手架工具
前往GitHub上的dify-plugin-daemon仓库,下载最新版本,选择对应操作系统和架构的二进制文件。本文以搭载M系列芯片的macOS为例,下载dify-plugin-darwin-arm64文件后,务必赋予执行权限。
chmod +x dify-plugin-darwin-arm64
执行以下命令验证安装是否成功。
./dify-plugin-darwin-arm64 version
若系统提示“Apple无法验证”,请前往“设置→隐私与安全性→安全性”,点击“仍要打开”即可。
初始化Python环境
Python环境的安装方法在此不再赘述,网上教程丰富,也可直接咨询LLM。需注意版本必须为3.12或更高。
创建新项目
运行脚手架命令行工具,创建新的Dify插件项目。
./dify-plugin-darwin-arm64 plugin init
为方便后续操作,可将二进制文件重命名为dify并拷贝到/usr/local/bin目录下,然后直接使用以下命令:
dify plugin init
若遇到问题,将dify命令替换为命令行工具的实际路径即可。
选择插件类型和模板
脚手架工具中的所有模板均提供完整代码项目。本文示例选择Tool插件类型。
配置插件权限
插件需要获取Dify平台的部分权限。为示例插件授予以下权限:
- Tools
- Apps
- 启用持久化存储Storage(分配默认大小)
- 允许注册Endpoint
在终端使用方向键选择权限,按“Tab”键授予权限。勾选所有项目后按回车,系统将自动生成插件项目代码。
创建完成后,将生成如下工程文件。
开发插件
生成的项目文件中包含两个重要文件夹:
- provider:插件供应商,一个项目中可以有多个。
- tools:供应商对应的工具。
这两个文件夹将在Dify工具界面中直接体现。
provider配置
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.png
tools:
- tools/dify-plugin-example.yaml
extra:
python:
source: provider/dify-plugin-example.py
provider代码
dify-plugin-example.py
from typing import Any
from dify_plugin import ToolProvider
from dify_plugin.errors.tool import ToolProviderCredentialValidationError
class 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,可在此处处理。
tools配置
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-example
description:
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: llm
extra:
python:
source: tools/dify-plugin-example.py
tools代码
dify-plugin-example.py
import json
import requests
from collections.abc import Generator
from typing import Any
from dify_plugin import Tool
from dify_plugin.entities.tool import ToolInvokeMessage
class 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提供了便捷的远程调试方式,帮助你快速在测试环境中验证插件功能。请前往Dify的“插件管理”页面获取远程服务器地址和调试Key。
回到插件项目,复制.env.example文件并重命名为.env,将获取到的远程服务器地址和调试Key等信息填入。
.env文件
INSTALL_METHOD=remote REMOTE_INSTALL_HOST=remote REMOTE_INSTALL_PORT=5003 REMOTE_INSTALL_KEY=****-****-****-****-****
执行python -m main命令启动插件。在Dify的插件页面,你将看到该插件已被安装到Workspace中,团队其他成员也能访问到它。
至此,插件已成功运行,可以进入debug环节。
测试
在工作流编辑页面添加你的插件,构建最终的工作流。
查看运行结果:若已成功运行,即可进入下一步。
打包插件
调试通过后,使用以下命令行工具打包并命名插件。运行后,你将在当前文件夹看到dify-plugin-example.difypkg文件,这就是最终的插件包。
dify plugin package ./dify-plugin-example
恭喜,你已完成一个工具类型插件的完整开发、调试与打包流程。
发布插件
若想将插件发布到Dify Marketplace,请确保插件遵循发布规范。审核通过后,代码将合并到主分支并自动上线。
总结
从环境准备到打包发布,完整经历这一流程后,你会发现为Dify开发工具插件,不仅扩展了AI应用的能力,还提升了系统的灵活性与可扩展性。无论是接入外部API、执行复杂计算,还是增强交互体验,插件都能让Dify更加强大。
