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