引言
Dify 是一个开源 LLM 应用开发平台,拥有直观的界面结合了 AI 工作流、RAG 管道、代理功能、模型管理、可观察性功能等,可以快速从原型开发到生产。
Ollama 是一个本地推理框架,允许开发人员轻松地在本地部署和运行 LLM,例如 Llama 3、Mistral 和 Gemma。Dify 是一个 AI 应用开发平台,提供了一套完整的工具和 API,用于构建、管理和部署 AI 应用。
1、环境准备
1.1 虚拟机环境
Ubuntu24.04
安装教程请见:VMware安装ubuntu-24.04-live-server服务版超详细教程
1.2 Docker&Docker-compose环境:
Docker27.3.1
docker-compose version 1.29.2
安装教程请见:Ubuntu正确安装Docker和Docker Compose详细讲解
1.3 克隆dify
将 Dify 源代码克隆到opt目录下:
cd /opt
git clone https://github.com/langgenius/dify.git
2、安装dify
2.1、启动Dify
导航到 Dify 源代码中的 Docker 目录
cd /opt/dify/docker
cp .env.example .env
2.2、启动 Docker 容器
进入/opt/dify/docker 执行
docker compose up -d
此时docker报错,错误如下:
root@ubuntu-database:/opt/dify/docker# docker compose up -d
[+] Running 9/9
✘ api Error context canceled 15.1s
✘ db Error context canceled 15.1s
✘ nginx Error context canceled 15.1s
✘ redis Error Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers) 15.1s
✘ ssrf_proxy Error context canceled 15.1s
✘ worker Error context canceled 15.1s
✘ weaviate Error context canceled 15.1s
✘ sandbox Error context canceled 15.1s
✘ web Error context canceled 15.1s
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
此问题解决,请见:完美解决Docker pull时报错:https://registry-1.docker.io/v2/
这个过程有点长,但值得等待。
执行命令后,您应该看到类似于以下内容的输出,显示所有容器的状态和端口映射:
最后检查所有容器是否运行成功:
docker compose ps
这包括 3 个核心服务:api / worker / web和 6 个依赖组件:weaviate / db / redis / nginx / ssrf_proxy / sandbox
root@ubuntu-database:/opt/dify/docker# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:0.12.1 "/bin/bash /entrypoi…" api 11 minutes ago Up 11 minutes 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db 11 minutes ago Up 11 minutes (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx 11 minutes ago Up 11 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis 11 minutes ago Up 11 minutes (healthy) 6379/tcp
docker-sandbox-1 langgenius/dify-sandbox:0.2.10 "/main" sandbox 11 minutes ago Up 11 minutes (healthy)
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy 11 minutes ago Up 11 minutes 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate 11 minutes ago Up 11 minutes
docker-web-1 langgenius/dify-web:0.12.1 "/bin/sh ./entrypoin…" web 11 minutes ago Up 11 minutes 3000/tcp
docker-worker-1 langgenius/dify-api:0.12.1 "/bin/bash /entrypoi…" worker 11 minutes ago Up 11 minutes 5001/tcp
3、访问Dify
进入管理员初始化页面设置管理员账户:
# Local environment
http://localhost/install
# Server environment
http://192.168.x.18/install
正确打开,如下图:
设置管理员账户/密码。
使用设置的管理员账户/密码登录,如下图:
登录成功进入后,页面效果如下图:
dify提供的模型提供商,可以根据需要定制自己的服务,如下图:
4、dify配置Ollama大语言模型
4.1、部署ollama
1、下载后并解压至/usr目录下
mkdir /soft
cd /soft
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
2、运行安装包
cd /usr/lib/ollama/
ollama serve
3、查看ollama版本
需要另外打开一个窗口,执行ollama -v
ollama -v
4、修改配置文件
使其他主机也可以访问,修改/etc/systemd/system/ollama.service文件
第一步:设置ollama用户和组
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)
vi /etc/systemd/system/ollama.service
第二步:在/etc/systemd/system/ollama.service文件内添加:
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_HOST=192.168.x.18:11434/:11434"
[Install]
WantedBy=default.target
5、重载并重启服务
systemctl daemon-reload
systemctl restart ollama.service
6、验证是否正常运行
curl localhost:11434
执行后显示Ollama is running说明服务运行正常
7、安装&运行llava
ollama run llava
这个过程有点长,但值得等待。
安装完成,并运行成功,如下图:
8、dify集成ollama大模型
第一步:点击右上角的账号,在账号下拉菜单中点击设置,如下图:
第二步:打开设置后,点击模型提供商,向下滑动,选择ollama大模型,点击添加模型,如下图:
第三步:输入相应的数据,如下图:
9、llava对话窗口,如下图
至此,完成。