一文速通 Dify + Ollama 本地化部署:从零配置到应用发布,超详细保姆级教程!
低代码本地化 AI 应用解决方案 Dify,结合 Ollama 快速部署大模型应用。内容涵盖 Windows 系统下的 Git、Docker、Dify、Ollama 安装指南,并演示如何通过 Dify 创建 AI 对话应用以及在 Python 中调用
前言
还在为内部数据该不该上传 AI 而发愁?还不满足于 Ollama 的简单对话?还在绞尽脑汁编写 AI 工作流代码?笔者将带大家实现一个低代码的本地化 AI 应用解决方案,Dify + Ollama 从安装部署到应用案例,一文速通,让我们开始吧!
本文关键词:Dify 部署、Ollama 插件、本地大模型、LLM 部署、AI 框架、Python 开发 AI应用。
文章目录
一、什么是 Dify
1.Dify 简介
Dify 是一个低代码平台(有云服务版和开源版),用于快速构建 AI 驱动的应用程序,具有大模型集成、AI 知识库、自动化工作流等功能,适用于企业内部自动化、数据分析、智能客服等场景。其核心组件包括:
- 数据处理:支持从多种来源获取数据,并进行清洗、转换至知识库 。
- 模型调用:支持与OpenAI官方接口对齐的API,支持多种本地模型框架。
- 知识库管理:支持多知识库联动。
- 可视化编排:支持复杂问答逻辑链的构建,可通过拖拽的方式设计工作流程。
- 部署与运维:支持容器化部署,UI交互友好,降低了技术门槛。
2.同类产品对比
维度 | Dify | FastGPT | 扣子 |
---|---|---|---|
开源性 | 开源 | 开源 | 闭源 |
应用数 | 上限5个 | 上限30个 | 未提及 |
知识库 | 上限50个 | 上限10个 | 免费1GB |
部署难度 | 容器化部署 | 需配置Nginx等,技术门槛较高 | 在线使用 |
API支持 | 对齐OpenAI | 对齐OpenAI | 对齐OpenAI |
可视化编排 | ✅ | ✅ | ✅ |
收费模式 | 免费 | 免费 | 部分功能需付费 |
注:Dify 和 FastGPT 均有付费的专业版、企业版,表中为社区版,定价策略和服务差异详见其官网。
二、安装部署二三事
本文为 Windows 系统下的解决方案,其他系统还需注意区别哦。
1.安装 Git
Git 是开源的项目版本管理工具,用于从 Github 拉取 Dify 源码(非必要,Dify 也提供了 zip 下载)。官方下载速度较慢,笔者下载好后传到了网盘,需要的同学可自取,安装就是一路 next 就搞定啦~
官方地址:https://git-scm.com/downloads/win
网盘下载:https://pan.baidu.com/s/1yw2Ql-VHwI9q96wJyVhA6Q?pwd=m3i5
2.安装 Docker
Docker 是开源的应用容器引擎,用于解决一次开发处处部署的跨平台问题,Dify 将基于 Docker 进行部署。也基本是一路 next 完成安装(可能会提示安装和启用 WSL)。
官方地址:https://www.docker.com/
启动 Docker Desktop 后无需登录也可使用,点击右上角的齿轮图标进入 Docker Engine 进行镜像配置,以加速从 Docker hub 拉取需要的应用服务。笔者使用毫秒镜像、轩辕镜像配置如下:
“registry-mirrors”: [
“https://docker.1ms.run”,
“https://docker.xuanyuan.me”
]
3.安装 Dify
按照操作指引一步步执行即可。
官方文档:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
- 拉取源码,在 Git Bash 中进入拟安装的路径后执行以下命令:
git clone https://github.com/langgenius/dify.git
- 或者下载 zip 后在拟安装的文件夹中解压,访问不了 github 也可以在国内的 gitcode 搜索他人同步的仓库。
- 在 cmd 命令行中按顺序一步步执行以下命令(假设将 Dify 解压至 D 盘,进入其内部的 docker 文件夹):
cd /d D:/dify/docker
cp .env.example .env
docker compose up -d
- 安装完成后将显示以下信息(全打勾即为成功):
[+] Running 11/11
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.0s
✔ Container docker-redis-1 Started 2.4s
✔ Container docker-ssrf_proxy-1 Started 2.8s
✔ Container docker-sandbox-1 Started 2.7s
✔ Container docker-web-1 Started 2.7s
✔ Container docker-weaviate-1 Started 2.4s
✔ Container docker-db-1 Started 2.7s
✔ Container docker-api-1 Started 6.5s
✔ Container docker-worker-1 Started 6.4s
✔ Container docker-nginx-1 Started 7.1s
- 之后在浏览器中输入
http://localhost/install
即可访问 Dify 界面,每次打开 Dify 前都需启动 Docker Desktop,初次使用需注册一个账号。
4.安装 Ollama
一键安装,嗖嗖的——安装完后在 cmd 命令行执行 ollama serve
即可启动服务,执行 ollama pull/run 模型名称
即可自动下载和运行大模型,可用模型在官网的 library 中检索。启动服务后默认开机运行,使用 Dify 时若不下载新模型则无需再执行相关命令。
官方地址:https://ollama.com/
三、开发你的第一个 AI 应用
1.选择模型服务提供商
Dify 中配置 Ollama 插件,点击右上角用户图标,点击设置,在模型供应商中找到 Ollama 并安装对应插件。随后添加模型,输入模型名称(在 cmd 命令行中执行 ollama list
查看已安装的模型),输入 URL (Docker 容器的内部 IP 地址:http://host.docker.internal:11434
)。
根据模型情况选择是否支持 Vision(视觉模型)和函数调用。
2.构建 AI 对话应用
Dify 中提供了五种应用类型:
- 聊天助手:基于 LLM 构建对话式交互的助手
- 文本生成应用:面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等(与前者区别是只能一问一答,只保存当次上下文)
- Agent:能够分解任务、推理思考、调用工具的对话式智能助手
- 对话流:适用于定义等复杂流程的多轮对话场景,具有记忆功能的应用编排方式
- 工作流:适用于自动化、批处理等单轮生成类任务的场景的应用编排方式
在工作室栏目点击创建空白应用,可先选择最简单的聊天助手。
以图像识别助手为例,右上角选择 qwen2.5vl 视觉模型,左侧编排开启视觉,即可上传图片进行测试。
应用发布后可轻松嵌入到网站中,就像各种常见的客服机器人一样。
3.在 Python 中调用 Dify API
也可通过 API 调用进行二次开发,以 Python 为例:
import requests
headers = {
'Authorization': f'Bearer {API_KEY}', # 在 Dify 应用中点击【访问API】获取
'Content-Type': 'application/json'
}
data = {
"inputs": {}, # 允许传入 App 定义的各变量值
"query": "你好",
"response_mode": "blocking", # 流式输出填 streaming
"conversation_id": "", # 会话 ID,若需要基于之前的聊天记录继续则必填
"user": USER # 用于定义终端用户的身份,方便检索、统计
}
res = requests.post('http://localhost/v1/chat-messages', headers=headers, json=data)
res.json()
{‘event’: ‘message’,
‘task_id’: …,
‘id’: …,
‘message_id’: …,
‘conversation_id’: …,
‘mode’: ‘chat’,
‘answer’: ‘你好!请上传图片以便我更好地帮助你。’,
‘metadata’: …}
若要上传图片需先行 post 获取文件ID。
with open(r'C:\Users\Seon\Desktop\back.png', 'rb') as f:
headers = {
'Authorization': f'Bearer {API_KEY}',
}
data = {
"user": USER # 需和对话用户一致
}
files = {
'file': ('back.png', f, 'image/png') # 文件名、文件流、文件类型的元组
}
res_file = requests.post('http://localhost/v1/files/upload', headers=headers, json=data, files=files)
res_file.json()
{‘id’: ‘0325d083-2651-4ede-a0f4-af8409d5085c’,
‘name’: ‘back.png’,
‘size’: 84890,
‘extension’: ‘png’,
‘mime_type’: ‘image/png’,
…}
获取文件ID后在对话参数中补充 files
,即可实现 LLM 解释图片的需求。
data = {
...
"files": [
{
"type": "image",
"transfer_method": "local_file", # 在线图片填 remote_url
# "url": "https://cloud.dify.ai/logo/logo-site.png"
"upload_file_id": FILE_ID
}
]
}
{…
‘answer’: ‘这张图片包含以下元素:\n\n1. 左上角有一个蓝色渐变的“D”形标志。\n2. 中间部分有中文文字“一文速通通”,旁边有一个卡通羊驼的图案。\n3. 左下角有英文单词“Dify_”。\n4. 中间部分还有一个握手的图标,象征合作。\n5. 右下角有英文单词“Ollama”。\n6. 底部有中文文字“本地化 AI 应用解决方案”,重复了多次。\n\n综合解释:这张图片可能是一个与AI应用解决方案相关的品牌或服务的宣传图。图片中包含了品牌名称“Dify_”和“Ollama”,以及相关的标志和文字,强调了本地化AI应用解决方案。中间的卡通羊驼图案可能代表品牌或服务的吉祥物。’,
…}
后记
至此,我们初步掌握了如何安装 Dify 并构建一个 AI 应用,结合官方文档可进行更多的探索。笔者试验电脑的配置为 I7 / RTX4060 / 32G,故只使用了 7~14B 规格的大模型,有高性能硬件可使用更高规格的大模型,或可接受云服务则可使用各大厂商的 API 以取得更好的效果。
碎碎念时间:啊好久好久之前就想试试,原本打算先学 FastGPT 的,但感觉操作成本太高,还是选择先在各种在线平台体验了。结果是在工作中刚好遇到 AI 项目,才开始本地化试验,刚需拯救拖延症呀 ~ 有空再写一篇工作流的搭建 😄
这里是梦想 Title 为大数据和人工智能应用架构师、AI-Agent 行业解决方案首席顾问的 Seon塞翁,下一篇见!总之先把数据分析和产品经理干好吧(¯﹃¯)
更多推荐
所有评论(0)