游乐游手机版
首页/AI热点日报/热点详情

大模型工具Dify进阶开发自定义Tools教程

类型:热点整理2026-07-04
掌握Dify插件开发,让AI应用构建更高效!本文提供从零到一的实操指南。先梳理核心要点:Dify作为开源大语言模型(LLM)应用开发平台,在AI应用构建中扮演关键角色,如何为其编写插件,所需准备事项,以及开发、调试、打包、发布的完整流程。文章将通过实际案例逐步拆解,确保你能跟随操作并成功实践。 人工

掌握Dify插件开发,让AI应用构建更高效!本文提供从零到一的实操指南。先梳理核心要点:Dify作为开源大语言模型(LLM)应用开发平台,在AI应用构建中扮演关键角色,如何为其编写插件,所需准备事项,以及开发、调试、打包、发布的完整流程。文章将通过实际案例逐步拆解,确保你能跟随操作并成功实践。

人工智能技术日新月异,Dify开源平台提供的工具与插件支持,让构建强大AI应用变得更为便捷。为Dify开发工具插件的核心在于扩展LLM的能力边界,例如实现联网搜索、科学计算或图像生成,这些功能显著增强AI应用与外部世界的交互能力。

接下来,我们深入探讨如何为Dify开发一个工具插件,帮助你充分挖掘平台潜力。直接进入正题。

大模型工具Dify进阶-开发tools

准备工作

开发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更加强大。

来源:https://www.53ai.com/news/OpenSourceLLM/2025032110942.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。