Ollama + DeepSeek + Dify私有化部署自己的AI Agent
前言
最近研究了一下Dify这个AI应用引擎,感觉功能还是很强大的,特别是流程编排、RAG检索、模型管理、知识库维护等,内置了各种国内外的厂商模型,可以根据自己的业务需求来选择模型进行处理,而且模型可以借助Ollama来私有化部署。与其对等的产品还有FastGPT,字节的Coze,不过目前开源的只有Dify和FastGPT,下面来介绍一下Ollama和Dify怎么私有化部署到自己的电脑或服务器吧。提示:如果想要私有化部署的,首先要保证自己的电脑或服务器的硬件资源跟得上,具体配置推荐可以参考一下表格
模型版本 | CPU | 内存 | GPU | 显卡推荐 |
1.5B | 4核+ | 8GB+ | 非必需 4GB+ | RTX1650 RTX2060 |
7B、8B | 8核+ | 16GB+ | 8GB+ | RTX3070 RTX4060 |
14B | 12核+ | 32GB+ | 16GB+ | RTX4090 RTX5080 |
32B | 16核+ | 64GB+ | 24GB+ | A100 40GB |
70B | 32核+ | 128GB+ | 多卡 | 2×A100 80GB |
671B | 64核+ | 512GB+ | 多卡 | 8×A100/H100 |
声明:以上配置仅供参考
02
安装Ollama
(1)下载Ollama
进入https://ollama.com/,选择Download
目前支持三种系统,macos、Linux、Windows,根据自己的需求来下载,因为我是Windows系统,所以下载的就是Windows,如果你想部署到Linux服务器,就点击Linux,会有专门的Shell脚本,直接在服务器运行即可
下载完后,直接点击install安装,安装过程非常简单,等待安装完成即可。
打开cmd命令框,输入ollama --version验证一下
(2)修改模型下载路径
因为Ollama默认下载模型的路径是在C盘,如果模型太大,放到C盘也是不合适的,所以我们需要修改一下下载模型的目录。
右键此电脑进入属性,进入高级系统设置,点击环境变量,在系统变量中添加变量OLLAMA_MODELS
后面的路径根据自己的情况设置,只要不是C盘就行
设置完后确定保存,重启电脑,保证系统环境变量能够生效。
(3)下载模型
一切就绪,就可以下载模型了,使用命令(ollama run 模型名称) 就可以进行下载模型。我电脑安装的是deepseek-r1:7b的模型,需要下载4G多,大概下了1-2个小时。提示:可能因为下载人数过多的原因,下载会掉网速,如果网速太低了,使用Ctrl + C取消下载,然后立马ollama run 模型名称接着下载,就会基于之前的下载进度继续下载,并且网速还会恢复到初始,重复如此,直到下载结束。
可以通过ollama list命令查看所有下载好的模型
对下载好的模型,输入ollama run 模型名称 就可以运行了
03
下载安装Dify
官网:https://dify.ai/zh
GitHub地址:https://github.com/langgenius/dify
(1)下载Dify
访问GitHub地址,在Code中点击Download zip包
下载完成后,解压项目,打开项目,找到docker文件夹进入,将.env.example文件改名为.env,并使用记事本或文本工具打开.env,在最后一行加入下面的代码
# 启用自定义模型
CUSTOM_MODEL_ENABLED=ture
# 指定Ollama的API地址(根据部署环境调整IP)
OLLAMA_API_BASE_URL=host.docker.internal:11434
(2)使用Docker命令进行部署
因为Dify是通过docker来安装的,所以不管你是Linux服务器或者Mac还是Windows,必须要有docker环境。这里安装docker就不再描述了。可以参考以下文章
如何在Linux、Windows、MacOS中安装Docker
在docker文件夹下进入cmd命令框,执行下面命令
docker compose up -d
docker会自动拉取Dify项目所需要的所有镜像资源,过程会比较慢,大家耐心等待。提示:因为需要拉取国外的docker镜像,所以最好要挂一个梯子翻墙(VPN)
(3)访问Dify
安装部署完毕以后,我们可以访问浏览器 http://localhost/install
初次进入,会让你设置一个admin管理员的账号,根据提示设置即可,然后进入系统。
进入系统后,我们以后就可以在工作室这个页签进行新建空白应用来构建我们的智能体。
(4)引入Ollama模型
打开设置
在模型供应商中,可以添加各个厂商的模型,因为我们是自定义模型,所以找到Ollama,添加进来。
(5)新建对话应用
下面我们就新建一个最基本的对话应用,也是最简单的。
点击创建空白应用
在右上角,就可以看到有个模型选择框,可以选择ollama,这就是我们本地自己搭建的模型,也就是用的本地资源进行跑结果。不过,你也可以选择其他厂商的API服务,只需要在模型设置中填写各个厂商模型的API key即可(可以前往各厂商模型开放平台进行申请API key,一般都是很好申请的,会根据你请求的tokens来进行计费,不过都很便宜)
和他问话,测试一下(这时候你就会听到电脑的风扇开始呼呼的叫起来了^_^)
如果觉得调试好了,就可以在右上角的发布里进行运行界面,或者嵌入网站中,以及可以生产访问的API,提供给后端请求。
04
搭建知识库
在知识库中,点击创建知识库
可以导入已有的文本,支持的格式可以看下图的提示
这里我上传一个员工管理手册,点击下一步,进入配置界面,注意:这里我是提前下载好了一个Text Embedding的模型,所以索引方式这里才能选择,如果没有此类模型,这里是禁止选择的,需要去下载一个,如果用厂商的API服务也可以。
可以在预览中进行查看分段的结果,来根据分段长度进行相应的调整。
点击保持并处理,进行下一步,等待嵌入处理
完成以后,就可以前往文档,看到自己维护的知识库
回到咱们之前创建的LLM小助手,在上下文中就可以选择刚才维护的知识库文档了。选择后,我们直接问它,可以发现它把刚才维护的知识库中的内容也回答出来了。
在引用中,可以看到会根据文章的匹配度进行从上到下进行排序
05
工作流编排
接下来,聊一下重头戏,就是Dify的工作流编排,就类似于生产汽车的流水线,每个环节都各司其职,不再人来干预,直接交给AI来进行完成,咱们只需要等待结果即可。
目前,Dify提供了两种工作流编排,一种是长对话的形式,而另一种就是单轮的自动化任务,也就是只执行一次就结束了。如果你想基于对话形式的,还是使用第一个,如果只是处理一次任务类型的,使用第二种。
下面这个就是我自己配置的智能文档助手的工作流编排图,可以识别文档和图片,结合用户提问来回答。(注意:这里面所用到模型都是API调用的,因为我电脑硬件不足的原因,7b模型没有那么的智能,所以我只能用服务提供者调用满血版的deepseek-r1模型来回答问题,另外,因为deepseek模型不支持解析图片,所以图片识别用的是Qwen-QVQ-72b的模型,它是可以解析图片的)
最后来跑一下,测试一下效果,我这里上传了三个文件,分别是word文档和两张图片,是Java中最经典的面试题bean的循环依赖问题,看看AI是怎么将这几个文件总结的