大模型应用编排工具Dify二开之工具和模型页面改造

1.前言

简要介绍下 dify:

​ 一款可以对接市面上主流大模型的任务编排工具,可以通过拖拽形式进行编排形成解决某些业务场景的大模型应用。

背景信息:

​ 环境:dify-0.8.3、docker-21

​ 最近笔者在做 dify的私有化部署和二次开发相关工作,本文总结界面改造的一些内容。

2.去除工具里面的内置第三方工具

dify工具里面内置了很多第三方工具,在私有化部署的场景下要求去除所有的内置第三方工具。

2.1原始页面

内置第三方工具,如下:
在这里插入图片描述

2.2改造后页面

仅通过修改后端代码,无需前端介入,效果如下:
在这里插入图片描述

2.3改造流程

通过阅读与调试dify源码,发现内置工具设计巧妙,满足优秀软件具备的高内聚、低耦合特点。工具通过 yaml文件进行定义,方便扩展和缩减内置工具。比如,选取其中一个 yaml文件如下:

identity:
  author: Dify
  name: yahoo
  label:
    en_US: YahooFinance
    zh_Hans: 雅虎财经
    pt_BR: YahooFinance
  description:
    en_US: Finance, and Yahoo! get the latest news, stock quotes, and interactive chart with Yahoo!
    zh_Hans: 雅虎财经,获取并整理出最新的新闻、股票报价等一切你想要的财经信息。
    pt_BR: Finance, and Yahoo! get the latest news, stock quotes, and interactive chart with Yahoo!
  icon: icon.png
  tags:
    - business
    - finance

看懂了工程结构和代码设计,改造方法就比较简单了。所有的内置第三方工具都放在:api/core/tools/provider/builtin 这个路径下,每一个第三方工具都在一个独立目录中,如下

drwxr-xr-x. 1 root root  38 Oct 18 08:32 websearch
drwxr-xr-x. 1 root root  38 Oct 18 08:32 wecom
drwxr-xr-x. 1 root root  38 Oct 18 08:32 wikipedia
drwxr-xr-x. 1 root root  38 Oct 18 08:32 wolframalpha
drwxr-xr-x. 1 root root  38 Oct 18 08:32 yahoo
drwxr-xr-x. 1 root root  38 Oct 18 08:32 youtube
...

比如要删除雅虎这个工具,直接在源码里面把 yahoo这个目录删除即可。

3.去除模型供应商里面的多余模型

dify在 设置》模型供应商里面可以添加需要对接的大模型,比如 国内有 阿里的千问、谷歌的 Gemini等。

3.1原始页面

市面上主流大模型提供商,如下:
在这里插入图片描述

3.2改造后页面

可以按需进行删减,如下:
在这里插入图片描述

3.3改造流程

模型供应商和内置第三方工具类似,这里就直接讲怎么改了。

供应模型路径是:api/core/model_runtime/model_providers

同样,删模型对应的目录即可,这里要注意不能删除 openai 这个模型,否则模型供应商界面会无法用。

4.从源码编译并部署 Dify

下载 dify源码包,预先准备好 docker环境。

本次修改涉及的是 api模块,使用下面的命令进行编译打包:

docker build -t langgenius/dify-api:0.8.3-20241107 ./api

然后修改配置文件中 api的版本号为改造后的版本 0.8.3-20241107,再使用 docker compose up -d命令启动 dify即可。

5.总结

dify源码架构设计极优,容易阅读、理解和修改,甚至部分界面可以由后端 yaml进行配置。

### Dify 源码二次开发教程 #### 了解项目结构 为了有效地对 Dify 进行源码级别的二次开发,理解其整体架构至关重要。Dify 是基于微服务架构构建的,采用现代化的技术栈来实现前后端分离设计[^1]。 对于想要深入研究并自定义修改 Dify发者来说,建议先熟悉项目的文件夹布局以及各个模块之间的交互方式。可以从 GitHub 上获取完整的源代码仓库链接[^2],并通过阅读官方文档中的发指南部分获得更详细的指导[^3]。 #### 设置发环境 确保安装了必要的依赖项之后,在本地环境中克隆 Dify 的 Git 仓库,并按照给定说明配置好所需的运行条件。这通常涉及到设置数据库连接、API 密钥以及其他外部服务集成等操作。 完成上述准备工作后,可以启动应用程序来进行初步测试,验证一切正常工作后再继续下一步骤。 #### 修改现有功能或添加新特性 当准备就绪时,可以根据需求调整现有的业务逻辑或是引入全新的组件服务。由于 Dify 支持多种主流编程语言的大规模预训练模型接入,因此在扩展过程中可能会涉及不同框架间的协作问题;此时应特别注意接口兼容性数据传输效率等方面的要求。 另外,考虑到性能优化的重要性,针对特定场景下的瓶颈进行针对性分析也是必不可少的一环。比如可以通过 Profiler 工具定位热点函数,进而采取措施提高执行速度或者减少资源消耗。 #### 测试与调试 每次改动完成后都应当进行全面而细致的功能性检测,以确认预期效果得以体现且未引发其他潜在错误。单元测试集成测试相结合的方式有助于发现隐藏较深的问题所在之处。此外,借助日志记录机制跟踪异常情况的发生位置及其上下文信息同样重要。 最后一步则是将经过充分检验后的版本发布出去供他人试用反馈意见,从而进一步完善整个系统的稳定性用户体验度。 ```bash # 克隆仓库 git clone https://github.com/langgenius/dify.git # 安装依赖包 cd dify && npm install # 启动应用 npm run dev ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值