[Dify] 从零开发一个 Dify 插件:Hello World 实例教程

一、前言:为什么要自己开发 Dify 插件?

Dify 的插件系统本质上是一个“AI 工具接口层”——
它允许你通过 OpenAPI Schema 文件 定义任何外部 API 的调用方式,
并让 Dify 的智能体(Agent)或工作流自动使用这些接口。

你可以用插件来:

  • 连接自有系统(CRM、ERP、OA、数据库);

  • 接入第三方 API(天气、翻译、邮件、支付、消息推送);

  • 创建自动执行类工具(Webhook、HTTP 请求等);

  • 实现真正的“AI + 执行”闭环。

本篇将带你从零开始开发一个最小可用插件 ——
“Hello World API” 插件,并在 Dify 中注册、测试、调用。

注意,本文假设环境是Dify已本地部署,因此Hello World服务也可以直接用localhost连接,如果是用Remote形式在官网Dify测试则需要给出正确的外网IP。


二、开发目标

我们要实现一个最简单的 HTTP 接口:

GET /hello

返回内容:

<
Dify 平台开发插件并实现一个插件包含两个工具,主要涉及插件结构的配置与工具的定义。以下是具体步骤和实现方法: ### 插件项目结构 首先,创建一个新的插件项目,并确保项目结构符合 Dify 插件的标准格式。通常,一个插件项目应包含以下文件和目录: ``` my_plugin/ ├── env ├── plugin.yaml ├── tools/ │ ├── tool1/ │ │ ├── __init__.py │ │ └── tool1.py │ └── tool2/ │ ├── __init__.py │ └── tool2.py ``` - `env`:环境配置文件,用于定义插件运行时所需的环境变量。 - `plugin.yaml`:插件的元数据配置文件,描述插件的基本信息。 - `tools/`:存放所有工具的目录,每个工具应作为一个子目录。 ### 配置 `plugin.yaml` 在 `plugin.yaml` 文件中,需要定义插件的基本信息,以及声明插件包含的工具。示例配置如下: ```yaml name: MyPlugin description: A plugin containing two tools version: 1.0.0 tools: - name: Tool1 module: tools.tool1.tool1 - name: Tool2 module: tools.tool2.tool2 ``` - `name`:插件的名称。 - `description`:插件的简要描述。 - `version`:插件的版本号。 - `tools`:插件包含的工具列表。 - `name`:工具的名称。 - `module`:工具的模块路径,指向工具的 Python 文件。 ### 实现工具功能 每个工具需要在各自的目录中实现其功能。例如,`tool1.py` 和 `tool2.py` 分别实现工具的具体逻辑。 #### 工具 1 示例 (`tool1.py`) ```python def execute(input_data): # 工具 1 的具体实现 result = f"Tool1 processed: {input_data}" return result ``` #### 工具 2 示例 (`tool2.py`) ```python def execute(input_data): # 工具 2 的具体实现 result = f"Tool2 processed: {input_data}" return result ``` 每个工具通常需要提供一个 `execute` 函数,该函数接受输入数据并返回处理结果。 ### 配置环境文件 (`env`) 为了确保插件能够正确运行,需要在 `env` 文件中配置必要的环境变量。例如: ```env PLUGIN_NAME=MyPlugin PLUGIN_VERSION=1.0.0 ``` 这些环境变量可以用于插件的运行时配置。 ### 插件部署与测试 完成插件开发后,可以将其部署到 Dify 平台进行测试。确保插件能够正确加载并调用每个工具的功能。 #### 示例调用工具 假设插件已经部署并可以通过 Dify 平台调用,以下是一个调用工具的示例: ```python # 假设插件已经加载 plugin = load_plugin("MyPlugin") # 调用工具 1 result1 = plugin.tools["Tool1"].execute("Hello") print(result1) # 输出: Tool1 processed: Hello # 调用工具 2 result2 = plugin.tools["Tool2"].execute("World") print(result2) # 输出: Tool2 processed: World ``` 通过上述步骤,可以在 Dify 平台开发一个包含两个工具的插件,并确保每个工具能够独立运行。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术小甜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值