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

news2024/11/28 9:50:35

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进行配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数学】通用三阶矩阵特征向量的快速求法 超简单!!!

目录 三个定理1、3个特征值(即根互不相等)例题实践2、2个特征值(即有一个双重根)3、1个特征值(即有一个三重根)定理证明 三个定理 本定理适用于 所有三阶矩阵 的特征向量求法! 1、3个特征值&…

MapReduce 的 Shuffle 过程

MapReduce 的 Shuffle 过程指的是 MapTask 的后半程,以及ReduceTask的前半程,共同组成的。 从 MapTask 中的 map 方法结束,到 ReduceTask 中的 reduce 方法开始,这个中间的部分就是Shuffle。是MapReduce的核心,心脏。 …

【WebRTC】视频采集模块中各个类的简单分析

目录 1.视频采集模块中的类1.1 视频采集基础模块(VideoCaptureModule)1.2 视频采集工厂类(VideoCaptureFactory)1.3 设备信息的实现(DeviceInfoImpl)1.4 视频采集的实现(VideoCaptureImpl&#…

江协科技STM32学习- P40 硬件SPI读写W25Q64

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

智慧场馆:安全、节能与智能化管理的未来

在当今社会,智慧场馆已经成为了现代场馆建设的一种重要模式。通过整合先进技术和智能系统,智慧场馆致力于提供全方位的解决方案,以实现场馆的安全性、节能性和智能化管理。本文将深入探讨智慧场馆如何实现安全、节能和全面智能化,…

Facebook与人工智能:推动社交媒体发展的新动力

在数字化时代的浪潮中,社交媒体已成为人们日常生活不可或缺的一部分。作为全球最大的社交平台之一,Facebook凭借其庞大的用户基础和先进的技术,正积极探索与人工智能(AI)的结合,以推动社交媒体的不断发展。…

【论文复现】自动化细胞核分割与特征分析

本文所涉及所有资源均在这里可获取。 作者主页: 七七的个人主页 文章收录专栏: 论文复现 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 自动化细胞核分割与特征分析 引言效果展示HoverNet概述HoverNet原理分析整…

阿里云文本内容安全处理

1、什么是内容安全 内容安全是一款基于AI算法和云计算技术,对多媒体内容的不宜或违规内容提供识别和标注的产品。该产品,支持对各行业及业务场景下的图片、视频、文本、语音等对象进行检测,可以帮助您提高内容审核效率、提高平台内容质量和用…

双指针算法习题解答

1.移动零 题目链接:283. 移动零 - 力扣(LeetCode) 题目解析:该题要求将数组中为0的元素全部转移到数组的末尾,同时不能改变非零元素的相对位置。 解题思路:我们可以用变量dest和cur将该数组分为三个区域。…

idea、pycharm等软件的文件名红色怎么变绿色

1.问题 有时候在写完代码打算提交的时候,会遇到某个资源文件不是绿色的,不能提交 2.解决方法 右键该文件——git——添加即可 3.不同颜色含义 3.1 蓝色(Blue) 含义:文件被修改了但尚未保存。蓝色通常表示文件自上…

Python进阶之IO操作

文章目录 一、文件的读取二、文件内容的写入三、之操作文件夹四、StringIO与BytesIO 一、文件的读取 在python里面,可以使用open函数来打开文件,具体语法如下: open(filename, mode)filename:文件名,一般包括该文件所…

ECharts折线图背景渐变设置

目录 引入 1.在一个HTML文件中编写两个图表 2.渐变背景 引入 如何在一个HTML文件中编写两个图表:(这个例子基于这个篇文章的基础)一篇搞懂前端获取数据-CSDN博客 一个例子: 1.在一个HTML文件中编写两个图表 重点在于名字的不重…

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 二手…

CSS弹性布局:灵活布局的终极指南

在网页设计中,CSS 弹性布局(Flexbox)是一个不可或缺的工具。它能帮助你轻松地排列和对齐元素,尤其是在响应式设计中表现出色。今天,我们就来深入探讨一下 Flexbox 的各个属性,让你彻底掌握这个强大的布局工…

OpenJDK Vendor下载选择

首先JDK可以通过idea进行安装 File➡️Project Structure➡️SDK➡️Add SDK➡️Download JDK 然后在JDK版本选择时,Idea提供了很多版本,让我茫然了 OpenJDK国外厂商 供应商 说明 Amazon Corretto 亚马逊云基于OpenJDK构建,收费 Eclipse…

SAP-ABAP开发-ONLINE 程序、DIALOG屏幕开发

目录 一、Online 程序概览 1、程序类型 2、Online程序的主要对象 二、界面 1、SAP的屏幕开发 2、屏幕功能实现 3、界面中的事件块(Event Block) 4、界面的创建 三、简单界面元素 1、文本/输入框控件 2、数据检查 3、一些常用的关键字 四、复…

基于vue框架的的留守儿童帮扶系统143b5(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:留守儿童,帮扶活动,申请记录,帮扶机构,帮扶进度,帮扶人,申请加入记录,参与帮扶记录 开题报告内容 基于Vue框架的留守儿童帮扶系统开题报告 一、研究背景与意义 随着城乡经济差异的不断扩大,大量农村劳动力涌向城市寻求更好…

xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法

我们使用sudo vim不成功,但是我们使用sudo su就可以 了! root用户权利更大! 喵的,终于成功了,一个xftp连接半天不成功。(添加上面的内容就可以连接成功了↑)

这款Chrome 插件,使浏览器页面快速滑动到最底部和最顶部,并且还能...

前言 前几日我在使用谷歌浏览器,也就是chrome的时候,浏览一个内容很长的页面,由于页面上的内容有前后关联,所以我必须不停地切换到上面和下面。这非常不方便。使我非常抓狂。后来,我灵机一动,去谷歌浏览器…

嵌入式linux中设备树控制硬件的方法

大家好,今天主要给大家分享一下,如何使用linux系统下的设备树进行硬件控制方法。 第一:linux系统中设备树驱动LED原理 在linux系统中可以使用设备树向Linux内核传递相关的寄存器地址,linux驱动中使用OF函数从设备树中获取所需的属性值,然后使用获取到的属性值来初始化相关…