当前位置: 首页 > news >正文

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

1.前言

简要介绍下 dify:

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

背景信息:

​ 环境:dify-0.8.3、docker-21

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

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

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

2.1原始页面

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

2.2改造后页面

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

2.3改造流程

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

identity:author: Difyname: yahoolabel:en_US: YahooFinancezh_Hans: 雅虎财经pt_BR: YahooFinancedescription: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.pngtags:- 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进行配置。

http://www.lryc.cn/news/479106.html

相关文章:

  • Pytorch用BERT对CoLA、新闻组文本数据集自然语言处理NLP:主题分类建模微调可视化分析...
  • LightGBM-GPU不能装在WSL,能装在windows上
  • 工业相机常用功能之白平衡及C++代码分享
  • Foundry 单元测试
  • idea database连接数据库后看不到表解决方法、格式化sql快捷键
  • 【数学二】线性代数-向量-向量组的秩、矩阵得秩
  • ABAP开发-内存管理
  • 【Ajax】跨域
  • yii 常用一些调用
  • 网页版五子棋——用户模块(服务器开发)
  • 以RK3568为例,ARM核心板如何实现NTP精准时间同步?
  • Twitter(X)2024最新注册教程
  • 10.桥接模式设计思想
  • Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
  • (已解决)Dependency “ ” not found 细谈
  • 网络编程、UDP、TCP、三次握手、四次挥手
  • 程序员的生活周刊 #7:耐克总裁被裁记
  • sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)
  • 【Ubuntu20】VSCode Python代码规范工具配置 Pylint + Black + MyPy + isort
  • 游戏提示错误:xinput1_3.dll缺失?四种修复错误的xinput1_3.dll文件
  • YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路
  • [Web安全 网络安全]-学习文章汇总导航(持续更新中)
  • Docker Compose部署Rabbitmq(Docker file安装延迟队列)
  • SpringBoot+FileBeat+ELK8.x版本收集日志
  • 本地模型导入ollama
  • scala Map训练
  • WorkFlow源码剖析——Communicator之TCPServer(下)
  • 数据结构与算法分析:专题内容——动态规划2之例题讲解(代码详解+万字长文+算法导论+力扣题)
  • 【Qt】QTreeView 和 QStandardItemModel的关系
  • containerd配置私有仓库registry