Deepseek+Dify+Chatbox应用及Dify配置

in 默认分类 with 1 comment

2025-02-07T07:23:18.png

Deepseek+Dify搭建过程全篇参考:DeepSeek + Dify :零成本搭建企业级本地私有化知识库保姆级教程)(如有侵权请联系删除)

除Dify,本文还详细说明chatbox调用ollama API,deepseek API对接及Dify配置。(本人花较多时间摸索Dify配置)

本文,将按照以下主线展开:

安装Docker->安装Ollama->安装Dify->创建应用->创建知识库

2025-02-07T07:24:50.png

Deepseek+Dify


下载并安装docker

网址:https://www.docker.com/

2025-02-07T07:25:00.png

一路点击下一步安装即可,因为docker会用到hyper-v,如果电脑没开启hyper-v,可能会需要重启一次。
2025-02-07T07:25:15.png

下载ollama

Ollama 是一个开源的本地化工具,旨在简化大型语言模型(LLMs)的本地运行和部署。它专注于让用户能够轻松在个人计算机或服务器上运行多种开源语言大模型(如deepseek ,qwen,Llama、Mistral、Gemma等),而无需依赖云端服务或复杂的配置流程。
网址:https://ollama.com/

2025-02-07T07:25:31.png
2025-02-07T07:25:42.png
安装完成后,桌面右下角会显示ollama图标
2025-02-07T07:25:51.png

安装deepseek-r1模型

一)找到模型
在ollama官网首页的搜索框,点击一下即可看到deepseek-r1在第一个位置,可见热度之高啊!

可以看到模型有根据参数分为1.5b,7b,8b,14b,32b,70b,671b等,我们需要根据自己电脑选择下载对应参数的模型。
2025-02-07T07:26:05.png

二)如何选择适合自己电脑的模型?
我的电脑配置如下:
2025-02-07T07:26:18.png
2025-02-07T07:26:29.png
2025-02-07T07:26:36.png

问一下deepseek,让他帮我们选择,提示词如下:

我现在正在使用ollama部署deepseek-r1模型,但是模型分为1.5b,7b,8b,14b,32b,70b,671b等,我不知道该怎么选择适合我电脑配置模型了,我现在把我电脑的配置信息告诉你,你帮我选择一下吧

个人电脑信息如下:
系统:windows 11
运行内存:32G
专用GPU显存:6G
共享GPU内存:15.9G

2025-02-07T07:26:52.png

三)安装r1模型

ollama run deepseek-r1:8b

2025-02-07T07:27:06.png

ollama安装完后,没有图形界面,安装大模型,可以类比为docker拉取镜像,因为很多操作命令类似

四)测试
安装完成后,会自动运行大模型,我们输入一个问题测试一下:
2025-02-07T07:27:18.png

安装dify

dify官网地址:http://difyai.com/

dify官网文档:https://docs.dify.ai/zh-hans

dify项目github地址:https://github.com/langgenius/dify

一)先了解一下dify
这里简单介绍一下dify,需要详细了解的可以看dify的官网或官方文档。

Dify.AI 是一个开源的大模型应用开发平台,旨在帮助开发者轻松构建和运营生成式 AI 原生应用。该平台提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等全方位的能力,使开发者能够专注于创造应用的核心价值,而无需在技术细节上耗费过多精力。

从创建应用页面可以看到,他可以创建:聊天助手,Agent,文生文应用,对话工作流,任务编排工作流等

2025-02-07T07:27:32.png

支持接入的大模型供应商几乎涵盖了全球所有知名大模型供应商

2025-02-07T07:27:46.png

当然也包括国内的deepseek,ollama

2025-02-07T07:27:58.png

他也支持从已有文本,Notion,网页等数据源创建知识库:
2025-02-07T07:28:11.png

这就意味着,我们可以通过部署本地大模型,企业知识库,来部署企业私有化AI应用,比如:企业垂直领域的销售客服,HR用来培训企业招聘来的新员工,教育机构可以部署私有题库。并通过api的形式灵活构建自己的应用。

二)下载dify项目压缩包
2025-02-07T07:28:23.png

三)安装dify环境
1、进入项目根目录找到docker文件夹
2025-02-07T07:28:38.png
2、.env文件重命名
2025-02-07T07:28:50.png
3、右键打开命令行
2025-02-07T07:28:59.png
4、运行docker环境
docker compose up -d
2025-02-07T07:29:19.png
此时回到docker桌面客户端可看到,所有dify所需要的环境都已经运行起来了
2025-02-07T07:29:32.png

四)安装dify
在浏览器地址栏输入即可安装:

http://127.0.0.1/install
2025-02-07T07:29:44.png
2025-02-07T07:29:53.png
进入dify主页如下:
2025-02-07T07:30:02.png

如何将本地大模型与dify关联起来?

由于本教程的dify是通过docker部署的,也就是说,项目是运行在docker容器内部的,但是我们的ollama是运行在本地电脑的,但是他们是在同一台电脑上的,这就意味着,要想dify能够访问ollama提供的服务,需要获取到本地电脑的内网IP即可。

一)配置docker下的env文件
方法一:直接配置如下代码
CUSTOM_MODEL_ENABLED=true(启用自定义模型)
OLLAMA_API_BASE_URL=host.docker.internal:11434(指定 Ollama 的 API 地址,根据部署环境调整 IP)
方法二:获取本机内网IP
打开命令行:win+r

输入:cmd
2025-02-07T07:30:23.png

在命令行输入:ipconfig,并找到当前连接的网络适配器(如“无线局域网适配器 WLAN”或“以太网适配器”),下方显示的 IPv4 地址 即为内网IP(如 192.168.x.x 或 10.x.x.x)
2025-02-07T07:30:33.png
然后,配置本地内网IP到dify的docker部署配置文件内

找到dify项目下的docker文件夹并进入,前面已经将.env.example改为了.env文件了,在末尾填上以下配置:
CUSTOM_MODEL_ENABLED=true(启用自定义模型)
OLLAMA_API_BASE_URL=http://192.168.1.10:11434(指定 Ollama 的 API 地址,根据部署环境调整 IP)
2025-02-07T07:30:45.png
二)配置大模型
2025-02-07T07:30:56.png
2025-02-07T07:31:03.png
三)设置系统模型(此步之前出现过问题,如不能自动带出本地的deepseek模型,则需要在.env文件中重新编辑IP地址后保存刷新页面)
2025-02-07T07:31:12.png
到此,dify就与前面部署的本地大模型关联起来了

创建一个应用

一)创建空白应用
2025-02-07T07:31:30.png
二)应用配置
2025-02-07T07:31:39.png
三)配置当前应用的大模型
2025-02-07T07:31:51.png
四)测试
2025-02-07T07:32:02.png
这表明,dify与本地部署的大模型deepseek-r1连通了,但是,我想让他的回答是基于我的私有知识库作为上下文来和我聊天怎么办?这就需要用到本地知识库了

创建本地知识库

一)添加Embedding模型
1、为什么要添加Embedding模型?
Embedding模型的作用是将高维数据(如文本、图像)转换为低维向量,这些向量能够捕捉原始数据中的语义信息。常见的应用包括文本分类、相似性搜索、推荐系统等。

我们上传的资料要通过Embedding模型转换为向量数据存入向量数据库,这样回答问题时,才能根据自然语言,准确获取到原始数据的含义并召回,因此我们需要提前将私有数据向量化入库。

2、下载 Embedding 模型
ollama pull bge-m3
2025-02-07T07:32:17.png
Embedding 模型那么多,为什么选择 bge-m3 ?

BGE (BAAI General Embedding) 专注于检索增强llm领域,经本人测试,对中文场景支持效果更好,当然也有很多其他embedding模型可供选择,可以根据自己的场景,在ollama上搜索“embedding”查询适合自己的嵌入模型。
2025-02-07T07:32:30.png
3、配置 Embedding 模型
2025-02-07T07:32:44.png
2025-02-07T07:32:52.png
二)创建知识库
2025-02-07T07:33:03.png
三)上传资料
2025-02-07T07:33:13.png
四)保存并处理(推荐混合检索,并将语义和关键词设置0.5)
2025-02-11T07:20:35.png

添加知识库为对话上下文

一)应用内添加知识库
回到刚才的应用聊天页面,添加知识库
2025-02-07T07:34:00.png
二)保存当前应用设置
如果只是当前应用内调试可以不必更新,但是如果想把当前应用发布为对外api服务或者持久化保存,就需要保存当前应用设置,记得实时保存当前设置。
2025-02-07T07:34:13.png
二)测试
思考过程具有浓厚的deepseek风格,就好像真的有一个很认真的人在翻看文档一样,它把自己翻看文档的过程,清晰的展示了出来,最后给出自己的结论,非常严谨。如果是个特定的学术知识库,他一定还能帮你推演,思考,总结,非常方便。
2025-02-07T07:34:23.png

chatbox对接ollama API及 deepseek API


前提:如需使用chatbox进行对话,则只需完成上述前面三点即可。
添加环境变量,添加变量【OLLAMA_HOST】值为【0.0.0.0】,添加变量【OLLAMA_ORIGINS】值为【*】,设置完成后此服务器可被远程访问;
2025-02-07T07:39:29.png

使用ollama API

如本地化正常安装的情况下,可通过chatbox直接调用本地的deepseek-r1:8b模型。点击左下角【设置】,选择【OLLAMA API】,API域名输入【http://192.168.X.X:11434】,此为本地化部署ollama的电脑IP地址,模型将自动带出,选择【deepseek-r1:8b】
2025-02-07T07:53:50.png
此时新对话,则使用本地部署的deepseek 8b模型。

2025-02-07T07:56:47.png

使用deepseek API

由于本地化只有8b的量,如有在线获取最新数据或需要联网访问的用户可使用是deepseek API接口进行对接。(此API接口按Token收费,前期有10元赠送金额,花费完后需额外充值)
后台API获取地址:deepseek后台,在API后台点击【API keys】,创建API key,创建后将生成key,此key请勿交给别人并要牢记,因后续将不再显示;
2025-02-07T07:43:21.png
在chatbox中点击【设置】,【模型提供方】选择【DEEPSEEK API】,将上述生成的key写入至【API密钥】,模型选择【deepseek-chat】(其中模型有三种,chat,coder,reasoner。如仅对话选择deepseek-chat)
2025-02-07T07:38:51.png
此时点击【新对话】,则会调用deepseek的API,进行对话。
2025-02-07T07:51:02.png

PS:Chatbox还支持手机端及imac端,可随意根据自己需求进行配置。

修改chatbot机器人名字


如chatbot机器人名字需修改,直接在【工作室】->在机器人中【编辑信息】->直接修改不生效。
2025-02-18T07:57:42.png
2025-02-18T08:04:46.png

具体表现为公开URL中chabot机器人名字仍然为旧名
2025-02-18T08:05:07.png

需在【工作室】->chatbot的【监测】页面->点击【设置】->【Webapp】名称中修改chatbot机器人名字;
2025-02-18T08:00:29.png
2025-02-18T08:07:01.png

此时再次访问公开URL中的chabot机器人名字为最新设置的名字。
2025-02-18T08:03:08.png

修改密码


如果你通过 Docker Compose 部署,你可以运行以下 Docker Compose 命令行重置密码。
打开CMD,输入:

PS C:\Users\Administrator\Downloads\dify-main\dify-main\docker>docker exec -it docker-api-1 flask reset-password

请按照提示输入邮箱地址和新密码,例如:

dify@my-pc:~/hello/dify/docker$ docker compose up -d
[+] Running 9/9
 ✔ Container docker-web-1         Started                                                              0.1s 
 ✔ Container docker-sandbox-1     Started                                                              0.1s 
 ✔ Container docker-db-1          Started                                                              0.1s 
 ✔ Container docker-redis-1       Started                                                              0.1s 
 ✔ Container docker-weaviate-1    Started                                                              0.1s 
 ✔ Container docker-ssrf_proxy-1  Started                                                              0.1s 
 ✔ Container docker-api-1         Started                                                              0.1s 
 ✔ Container docker-worker-1      Started                                                              0.1s 
 ✔ Container docker-nginx-1       Started                                                              0.1s 
dify@my-pc:~/hello/dify/docker$ docker exec -it docker-api-1 flask reset-password
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
sagemaker.config INFO - Not applying SDK defaults from location: /etc/xdg/sagemaker/config.yaml
sagemaker.config INFO - Not applying SDK defaults from location: /root/.config/sagemaker/config.yaml
Email: [email protected]
New password: newpassword4567
Password confirm: newpassword4567
Password reset successfully.

设置邮件发送服务


dify设置邮件服务器可用于,密码重置。可以通过修改.env文件中修改其数值来改变。其中下面字段中的SMTP_PASSWORD为授权码,授权码申请方式:QQ授权码申请及运用

# Mail type, support: resend, smtp
MAIL_TYPE=smtp

# Default send from email address, if not specified
MAIL_DEFAULT_SEND_FROM=QQ号码@qq.com

# API-Key for the Resend email provider, used when MAIL_TYPE is `resend`.
RESEND_API_URL=https://api.resend.com(保持默认)
RESEND_API_KEY=your-resend-api-key(保持默认)

# SMTP server configuration, used when MAIL_TYPE is `smtp`
SMTP_SERVER=smtp.qq.com
SMTP_PORT=465
SMTP_USERNAME=QQ号码@qq.com
SMTP_PASSWORD=X(此为上述链接申请QQ申请授权码)
SMTP_USE_TLS=true
SMTP_OPPORTUNISTIC_TLS=false

按上面修改后在docker文件夹中【右键】->【在终端中打开】->重启容器。(重启后方可生效)

 PS C:\Users\Administrator\Downloads\dify-main\dify-main\docker>docker compose up -d

设置上传文件大小及数量


默认知识库上传大小为15M,单次上传文件数量为5个,可以通过修改.env文件中修改其数值来改变。

# Upload file size limit, default 15M.(上传文件大小设置)
UPLOAD_FILE_SIZE_LIMIT=100

# The maximum number of files that can be uploaded at a time, default 5.(上传文件数量大小)
UPLOAD_FILE_BATCH_LIMIT=100

# The format of the image/video/audio/document sent when the multi-modal model is input,
# the default is base64, optional url.
# The delay of the call in url mode will be lower than that in base64 mode.
# It is generally recommended to use the more compatible base64 mode.
# If configured as url, you need to configure FILES_URL as an externally accessible address so that the multi-modal model can access the image/video/audio/document.
MULTIMODAL_SEND_FORMAT=base64
# Upload image file size limit, default 10M.
UPLOAD_IMAGE_FILE_SIZE_LIMIT=100
# Upload video file size limit, default 100M.
UPLOAD_VIDEO_FILE_SIZE_LIMIT=100
# Upload audio file size limit, default 50M.
UPLOAD_AUDIO_FILE_SIZE_LIMIT=100

按上面修改后在docker文件夹中【右键】->【在终端中打开】->重启容器。(重启后方可生效)

 PS C:\Users\Administrator\Downloads\dify-main\dify-main\docker>docker compose up -d

Responses / Cancel Reply
  1. [...]此方案可使用本地deepseek加Dify知识库对接钉钉机器人制作智能客,在使用此方案时需在钉钉开发者后台付费 API 调用量及API 请求并发量问题。全文参考将 Dify 应用与钉钉机器人集成打字机效果流式 AI 卡片添加接口调用权限前提条件1)本地化部署Deepseek+Dify知识库,可参考前文:Deepseek+Dify+Chatbox应用;2)钉钉开发者后台;3)IMAC OS(此处可使[...]

    Reply