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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐