【Python大语言模型系列】新版Dify 开发自定义工具插件在工作流中直接调用(完整步骤)

【Python大语言模型系列】新版Dify 开发自定义工具插件在工作流中直接调用(完整步骤)

这是我的第441篇原创文章。

一、引言

    “工具插件” 指的是一个完整的项目,其中包含工具供应商文件、功能代码等结构。之前写过一个旧版dify开发自定义工具:

【Python大语言模型系列】Dify 开发一个自定义工具并在工作流中直接调用(完整案例)

      新版dify遵循插件化原则,自定义工具的开发流程和步骤略有不同。基于官方文档和实战经验,以下是 Dify Tools 插件的从零到上线完整开发流程。

二、实现过程

2.1 安装 Dify 插件开发脚手架工具

访问 Dify Plugin CL 项目地址,下载并安装最新版本号和对应操作系统的工具。

运行以下命令检查安装是否成功。

./dify-plugin-darwin-arm64 version  # macOS ./dify-plugin-windows-arm64 version  # windows

运行命令后,终端若返回类似 v0.0.1-beta.15 的版本号信息,则说明安装成功。

如果你已将该二进制文件重命名为 dify 并拷贝至 系统路径下(如:/usr/local/bin 路径)下,配置完成后,在终端输入 dify version 命令后将输出版本号信息。可以运行以下命令创建新的插件项目:

dify plugin init

2.2 初始化插件项目

使用脚手架工具创建插件项目:

/dify-plugin plugin init   

输入插件名称、作者信息,选择插件类型(如 tool 工具插件)。配置权限(如 Tools、Apps、Endpoints 等),完成后生成标准目录结构:

my-plugin/ ├── main.py # 插件入口文件 ├── manifest.yaml # 插件元数据配置,一般可以不管 ├── tools/ # 功能实现代码 ├── provider/ # 服务商凭证与验证,一般可以不管 └── requirements.txt # Python 包依赖 └── .env.example # 配置文件

2.3 功能开发

在tools/my-plugin.py中实现核心逻辑:继承 Tool 基类并实现 _invoke 方法。例如:

from difyplugin import Tool, ToolInvokeError class MyTool(Tool):    def _invoke(self, tool_parameters: dict) -> str:        try:            param = tool_parameters['input']            result = f"Processed: {param}"            return self.create_text_message(result)        except Exception as e:            raise ToolInvokeError(f"Error: {str(e)}")

配置参数:在 tools/ my-plugin.yaml文件中定义插件参数和描述。

2.4 配置 Python 环境

确保 Python 版本 ≥ 3.12,建议使用虚拟环境:

python -m venv .venv source .venv/bin/activate # Linux/macOS \.venv\Scripts\activate # Windows pip install -r requirements.txt # 安装核心包

2.5 测试与验证

复制模板

cp .env.example .env

配置 .env 文件,填写调试 Key 和服务器地址:

INSTALL_METHOD=remote REMOTE_INSTALL_URL=10.0.x.5 REMOTE_INSTALL_PORT=5003 REMOTE_INSTALL_KEY=xxxx

启动插件进行测试:

python -m main

在 Dify 平台中运行工作流,验证插件输出是否符合预期。

2.6 打包与发布

打包插件为 .difypkg 文件:

/dify-plugin plugin package ./my-plugin

可选择签名插件以提高安全性,并上传到 Dify 平台或 Marketplace。

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

Read more

Cursor+Git高效管理代码(github中已有仓库,仓库中有项目)

一、初始化Cursor中的git 1、打开Cursor的终端输入如下代码: git remote -v 如果输出空或者没有输出,则没有连接远程仓库。 2、添加远程仓相关步骤 建立连接 git remote add origin https://github.com/你的用户名/你的仓库名.git 创建分支 git branch -M main 拉取文件---合并冲突文件。 git pull origin main --allow-unrelated-histories 上述步骤运行后,回到项目界面,需要在项目文件里手动合并冲突。 点击合并编辑器中解析,然后选择你要保存传入还是当前的代码。 合并好点击右上角对号或者Ctrl+S保存文件。 回到菜单这里 1、选择你的更改文件,点击加号暂存。 2、在消息中输入消息(任意修改或者”second commit“)。 3、

By Ne0inhk
【每日一技】:GitHub 精确查询

【每日一技】:GitHub 精确查询

🔍GitHub 精确查询 ❝ 想在 GitHub 上快速、精准找到优质项目? 其实,你只需要掌握几条「高级搜索语法」,代码、教程、实战项目统统一网打尽。❞ 💡 01. 为什么要用 GitHub 精确查询? 在 GitHub 上随便搜索“spring boot”“微服务”,得到的结果往往数量庞大且质量参差不齐。 而 GitHub 内置的高级搜索语法,可以帮助你: * 精准锁定特定语言的项目 * 查找描述中包含关键词的仓库 * 筛选高 Star / 高 Fork 的高质量项目 * 限定更新时间、最近活跃度等指标 * 在 README、名字、描述中进行定向搜索 学会后,你能比 95% 的用户更快找到真正有价值的代码资源。 🔎 02. 最常用的 GitHub 精准搜索语法 以下示例全部经过检查和整理,每条都可直接复制使用。

By Ne0inhk

嵌入式开发中的 Git CI/CD

嵌入式开发中的 Git CI/CD 一、CI/CD 概述 1.1 什么是 CI/CD? 持续集成 (Continuous Integration, CI) * 开发人员频繁地将代码集成到主分支 * 每次集成都通过自动化构建和测试来验证 * 及早发现集成错误,降低修复成本 持续交付/部署 (Continuous Delivery/Deployment, CD) * 确保代码随时处于可发布状态 * 自动化部署到测试/生产环境 * 快速、可靠地交付软件更新 1.2 嵌入式开发中的特殊挑战 * 硬件依赖: 需要特定的开发板或模拟器 * 交叉编译: 目标平台与开发平台不同 * 资源限制: 内存、存储空间有限 * 实时性要求: 严格的时序要求 * 安全性: 代码质量直接影响系统稳定性 二、GitHub Actions Workflow

By Ne0inhk