IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Dify v1.0本地部署+deepseek

    C1G发表于 2025-03-04 11:43:51
    love 0

    Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)

    生成式 AI 应用创新引擎

    开源的 LLM 应用开发平台。内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持,提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。

    在线体验:https://dify.ai/zh
    开源地址:https://github.com/langgenius/dify
    官方文档:https://docs.dify.ai/v/zh-hans

    Dify云服务,可以在线使用.

    • Sandbox(免费版) 每天可调用200次GPT
    • 专业版 $59/month
    • 团队版 $159/month
    • 企业版 面议

    开源社区版
    安装 Dify 之前, 请确保你的机器已满足最低安装要求:

    CPU >= 2 Core

    RAM >= 4 GiB

    克隆 Dify 代码仓库

    安装git

    yum install -y git

    克隆 Dify 源代码至本地环境

    # 假设当前最新版本为 0.15.3
    git clone https://github.com/langgenius/dify --branch 0.15.3
    
    Cloning into 'dify'...
    remote: Enumerating objects: 143184, done.
    remote: Counting objects: 100% (530/530), done.
    remote: Compressing objects: 100% (279/279), done.
    remote: Total 143184 (delta 440), reused 252 (delta 251), pack-reused 142654 (from 4)
    Receiving objects: 100% (143184/143184), 75.24 MiB | 6.51 MiB/s, done.
    Resolving deltas: 100% (105740/105740), done.
    Note: switching to 'ca19bd31d42fb87c83b91541c473ebae85e9d14e'.
    

    安装docker

    docker,docker-ce,podman 安装其中之一就可
    rocky8 以上默认为podman

    A.安装docker

    yum install docker

    B.安装docker-ce

    删除podman (如需要)
    podman数据不会转移到docker
    迁移 Docker 镜像,可以先导出再导入,容器用docker export和import
    docker save -o image.tar image_name:tag
    docker load image.tar

    先停止所有容器的应用和删除容器,再删除安装包
    podman container prune

    清理所有未使用的镜像
    podman image prune -a

    清理所有未使用的卷
    podman volume prune

    清理所有未使用的网络
    podman network prune

    检查存储状态
    podman system df

    删除 Podman 存储目录
    rm -rf /var/lib/containers/storage
    systemctl restart podman

    检查存储状态
    podman system df

    删除podman
    dnf remove podman

    删除podman残余文件
    rm -rf /etc/containers /etc/registries.conf /etc/containers/policy.json /etc/containers/storage.conf ~/.config/containers ~/.local/share/containers

    安装docker-ce

    安装docker所需依赖

    dnf install -y yum-utils device-mapper-persistent-data lvm2
    dnf install -y dnf-plugins-core

    添加docker官方和阿里的YUM仓库

    dnf config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
    dnf config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    安装 Docker Engine

    dnf install -y docker-ce docker-ce-cli containerd.io

    systemctl start docker
    systemctl enable docker

    docker –version
    Docker version 28.0.1, build 068a01e

    docker加速

    tee > /etc/docker/daemon.json <<EOF
    {
      "builder": {
        "gc": {
          "defaultKeepStorage": "20GB",
          "enabled": true
        }
      },
      "experimental": false,
      "registry-mirrors": [
        "https://hub.rat.dev",
        "https://dockerhub.icu",
        "https://docker.wanpeng.top",
        "https://register.librax.org"
      ]
    }
    EOF

    验证有无出错

    docker info

    C.安装podman

    Podman 是一个与 Docker 兼容的容器工具

    dnf install podman
    docker –version
    Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
    podman version 5.2.2

    设置镜像网站

    Podman 默认注册表配置文件在 /etc/containers/registries.conf
    vi /etc/containers/registries.conf
    [[registry]]
    prefix = "docker.io"
    location = "docker.io"
    mirror = [
    { location = "docker.nju.edu.cn" },
    { location = "docker.m.daocloud.io" }
    ]
    docker info

    docker-compose 安装

    docker-compose 和 podman-compose安装其中之一就可

    docker-compose 安装

    如果安装的是docker则安装docker-compose
    https://github.com/docker/compose/releases/
    curl -L "https://github.com/docker/compose/releases/download/v2.33.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

    使用国内加速

    wget -o /usr/local/bin/docker-compose https://ghproxy.cn/https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-linux-x86_64

    chmod +x /usr/local/bin/docker-compose

    查看 docker-compose

    docker-compose –version 版本
    Docker Compose version v2.29.1

    安装podman-compose

    #yum install podman-compose

    系统自带podman-compose version: 1.0.6版本过老
    podman-compose –version

    podman-compose version: 1.0.6
    ['podman', '--version', '']
    using podman version: 5.2.2
    podman-compose version 1.0.6
    podman --version
    podman version 5.2.2
    exit code: 0

    会出错以下报错
    Cannot connect to the Docker daemon at unix:///run/podman/podman.sock. Is the docker daemon running?

    安装pip 后安装podman-compose

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python3 get-pip.py
    pip –version
    升级 pip
    pip install -U pip

    pip 国内加速

    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

    pip 安装podman-compose

    pip3 install podman-compose
    更新 podman-compose
    运行以下命令更新 podman-compose:
    pip install –upgrade podman-compose

    运行以下命令检查 podman-compose 是否已安装:
    pip show podman-compose

    #没找到
    -bash: /usr/bin/podman-compose: No such file or directory

    find / -name podman-compose 2>/dev/null

    /usr/share/licenses/podman-compose
    /usr/share/doc/podman-compose
    /usr/local/bin/podman-compose

    将路径加入到环境变量

    #临时
    export PATH=/usr/local/bin:$PATH
    #永久添加
    echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc 

    查看版本

    podman-compose –version

    podman-compose version 1.3.0
    podman version 5.2.2

    使用podman-compose 拉起会报错
    podman-compose up -d

    RuntimeError: missing networks: 

    改用docker-compose兼容方式

     检查 Podman 套接字文件

    ls -l /run/podman/podman.sock
    Podman 的套接字文件通常位于 /run/podman/podman.sock。如果该文件不存在,可能是系统未启用 Podman 的套接字功能。

     启用 Podman 套接字

    运行以下命令启用 Podman 套接字:
    systemctl –user enable –now podman.socket
    验证套接字文件
    ls -l /run/podman/podman.sock

    如果 Podman 套接字仍未生成,可以尝试手动启动 Podman 套接字服务。

     手动创建套接字文件

    podman system service –time=0 unix:///run/podman/podman.sock &
    chmod 666 /run/podman/podman.sock
    export DOCKER_HOST=unix:///run/podman/podman.sock

    docker-compose ps

    注册开机自动启动podman socket

    cat >/etc/systemd/system/podman.socket.service<<EOF 
    [Unit]
    Description=Podman API Socket
    Documentation=man:podman-system-service(1)
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/podman system service --time=0 unix:///run/podman/podman.sock
    Restart=always
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target
    EOF 

    systemctl daemon-reload
    systemctl enable podman.socket.service
    systemctl start podman.socket.service
    systemctl status podman.socket.service
    ls -l /run/podman/podman.sock

    Dify 安装

    进入 Dify 源代码的 Docker 目录

    cd dify/docker
    复制环境配置文件

    cp .env.example .env
    启动 Docker 容器

    根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档:

    如果版本是 Docker Compose V2,使用以下命令:
    docker compose up -d

    如果版本是 Docker Compose V1,使用以下命令:
    docker-compose up -d

    使用docker-compose拉起

    docker compose pull

    Trying to pull docker.io/library/redis:6-alpine…
    Trying to pull docker.io/langgenius/dify-api:0.15.3…
    Trying to pull docker.io/library/postgres:15-alpine…
    Trying to pull docker.io/langgenius/dify-web:0.15.3…
    Trying to pull docker.io/ubuntu/squid:latest…
    Trying to pull docker.io/langgenius/dify-api:0.15.3…
    Trying to pull docker.io/semitechnologies/weaviate:1.19.0…
    Trying to pull docker.io/library/nginx:latest…
    Trying to pull docker.io/langgenius/dify-sandbox:0.2.10…

    此时会遇到超时问题
    pinging container registry registry-1.docker.io: Get "https://registry-1.docker.io/v2/": dial tcp 208.43.237.140:443: i/o timeout

    测试拉取

    docker pull docker.io/library/redis:6-alpine
    docker pull docker.io/langgenius/dify-web:0.15.3
    docker pull docker.io/library/postgres:15-alpine

    ocker pull register.librax.org/langgenius/dify-api:0.15.3
    docker pull register.librax.org/semitechnologies/weaviate:1.19.0
    docker pull register.librax.org/library/nginx:latest
    docker pull register.librax.org/langgenius/dify-sandbox:0.2.10

    docker tag register.librax.org/langgenius/dify-api:0.15.3 docker.io/langgenius/dify-api:0.15.3

    docker-compose up -d

    [+] Running 11/11
     ✔ Network docker_default             Created                                        0.0s
     ✔ Network docker_ssrf_proxy_network  Created                                        0.0s
     ✔ Container docker-ssrf_proxy-1      Started                                        0.9s
     ✔ Container docker-db-1              Started                                        1.0s
     ✔ Container docker-weaviate-1        Started                                        1.2s
     ✔ Container docker-sandbox-1         Started                                        1.0s
     ✔ Container docker-redis-1           Started                                        0.9s
     ✔ Container docker-web-1             Started                                        0.9s
     ✔ Container docker-worker-1          Started                                        1.4s
     ✔ Container docker-api-1             Started                                        1.2s
     ✔ Container docker-nginx-1           Started                                        1.4s

    你应该可以看到包括3个业务服务 api / worker / web,以及6个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。
    通过这些步骤,你应该可以成功在本地安装Dify。

    更新Dify

    当Dify版本更新后,你可以克隆或拉取最新的Dify源代码,并通过命令行更新已经部署的Dify环境。‍‍‍‍‍‍‍‍‍‍‍‍
    刚好Dify在2月28日发布了1.0.0版本,那么我们也就直接升级一波!

    dify v1.0.0更新内容介绍
    我们先来看一下这次dify v1.0.0都有哪些重磅更新

    1. 插件机制 (Plugin System)

    核心变化:将原有的模型和工具都改造成插件形式

    应用场景:想用新的 AI 模型时,直接安装对应插件即可

    需要连接 Slack 时,安装 Slack 插件就能实现集成

    2. 智能工作流 (Intelligent Workflow)

    新增 Agent 节点:作为工作流和聊天流的决策中心

    通俗解释:相当于一个智能管家,可以根据需求自动调用合适的流程、工具

    应用场景:客服机器人可以自动判断用户意图,选择合适的回复方式

    数据分析任务可以自动选择合适的分析工具和展示方式

    3. 开放生态系统 (Open Ecosystem)

    Dify Marketplace:官方插件市场

    已有 120+ 插件,包括:模型:OpenAI 、Gemini 2.0 、DeepSeek-R1 等

    工具:Perplexity 、Discord 、Slack 等

    应用场景:企业可以在市场中找到所需的专业工具

    开发者可以发布自己的插件获得收益

    4. 多模态交互 (Multimodal I/O)

    支持多种数据类型:文本、图像、视频、语音

    应用场景:智能客服可以处理图片问题

    教育应用可以结合视频和语音进行互动

    5. 核心能力增强

    推理能力 (Reasoning):提升问题解决能力

    执行能力 (Action):可以操作软件和物联网设备

    动态记忆 (Dynamic Memory):优化上下文理解

    进入dify源代码的docker目录,按顺序执行以下命令:

    cd dify/docker
    关闭服务
    docker-compose down
    git pull origin main

    remote: Enumerating objects: 535, done.
    remote: Counting objects: 100% (290/290), done.
    remote: Total 535 (delta 290), reused 290 (delta 290), pack-reused 245 (from 1)
    Receiving objects: 100% (535/535), 472.65 KiB | 1.10 MiB/s, done.
    Resolving deltas: 100% (387/387), completed with 209 local objects.
    From https://github.com/langgenius/dify
     * branch                main       -> FETCH_HEAD
       bafa46393..330dc2fd4  main       -> origin/main
    

    docker-compose pull
    docker-compose up -d

    执行上述命令更新完成后,需按以下操作同步环境变量配置 (重要!)。‍‍‍‍

    如果.env.example文件有更新,请务必同步修改您本地的.env文件。
    检查.env文件中的所有配置项,确保它们与您的实际运行环境相匹配。
    您可能需要将.env.example中的新变量添加到.env文件中,
    并更新已更改的任何值。

    查看当前ollama的模型

    ollama linux部署可参考之前文章

    ollama list
    NAME          ID              SIZE      MODIFIED
    qwen2:1.5b    f6daf2b25194    934 MB    2 months ago
    
    ollama run qwen2:1.5b
    
    ollama ps
    NAME          ID              SIZE      PROCESSOR    UNTIL
    qwen2:1.5b    f6daf2b25194    1.5 GB    100% CPU     4 minutes from now

    拉取deepseek-r1:1.5b模型

    ollama pull deepseek-r1:1.5b
    pulling manifest
    pulling aabd4debf0c8... 100% ▕██████████████████████████▏ 1.1 GB
    pulling 369ca498f347... 100% ▕██████████████████████████▏  387 B
    pulling 6e4c38e1172f... 100% ▕██████████████████████████▏ 1.1 KB
    pulling f4d24e9138dd... 100% ▕██████████████████████████▏  148 B
    pulling a85fe2a2e58e... 100% ▕██████████████████████████▏  487 B
    verifying sha256 digest
    writing manifest
    success
    
    ollama run deepseek-r1:1.5b
    
     ollama ps
    NAME                ID              SIZE      PROCESSOR    UNTIL
    deepseek-r1:1.5b    a42b25d8c10a    1.6 GB    100% CPU     4 minutes from now
    qwen2:1.5b          f6daf2b25194    1.5 GB    100% CPU     5 seconds from now
    

    创建宿主机到虚拟机的nat

    #我使用980,正常使用80端口
    #http://localhost:980/install

    在virtualbox创建nat转发127.0.0.1:80端口到192.168.244.9:80

    使用Dify

    按照以上步骤部署好Dify后,首先前往管理员初始化页面设置设置管理员账户:

    # 本地环境
    http://localhost/install
    
    # 服务器环境
    http://your_server_ip/install

    通过私有化本地部署Dify,结合Ollama等大模型运行环境,可以打造自己的私有大模型工具链,实现大模型的本地可视化运行。在涉密或敏感数据场合具有极大的应用价值。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

    创建管理员

    第一次访问需要先设置最高管理权限账号、密码

    添加本地Ollama

    登录进去后,右上角用户里设置
    在 Dify 中接入 Ollama 在 设置 > 模型供应商 > Ollama 中填入
    模型名称:qwen2:1.5b

    基础 URL:http://127.0.0.1:11434,此处需填写可访问到的 Ollama 服务地址。
    若 Dify 为 docker 部署,建议填写局域网 IP 地址,如:http://192.168.244.9:11434 或 docker 宿主机 IP 地址,如: http://host.docker.internal:11434 或 http://10.89.1.1:11434

    Docker版本是18.03或更高可以使用 host.docker.internal。
    若为本地源码部署,可填写 http://localhost:11434。

    模型类型:对话

    模型上下文长度:4096

    模型的最大上下文长度,若不清楚可填写默认值 4096。

    最大 token 上限:4096:模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。

    是否支持 Vision:是(当模型支持图片理解(多模态)勾选此项,如 llava。)

    点击 “保存” 校验无误后即可在应用中使用该模型。

    如出现错误可以检查一下ip和端口是否正确,网络是否通畅。

    An error occurred during credentials validation: HTTPConnectionPool(host='10.89.1.1', port=80): Max retries exceeded with url: /api/chat (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f6ea7769040>, 'Connection to 10.89.1.1 timed out. (connect timeout=10)'))

    如果不想使用本地Ollama,我们也可以使用deepseek 官方API,或硅基流动的。
    DeepSeek是目前最好的开源大模型

    Dify v1.0.0是目前最好的开源大模型应用平台

    DeepSeek + Dify v1.0.0可谓强强联手!

    创建聊天助手

    创建空白应用->聊天助手
    发布后你就有了一个自已的聊天助手。


    创建工作流

    回到主页,点击创建空白应用,这里的聊天助手和文本生成应用,是功能最为单一的 LLM 应用,都不支持工具和知识库的接入。
    Agent 和 工作流的区别:

    Agent:智能体,基于大语言模型的推理能力,可以自主选择工具来完成任务,相对简单。
    工作流:以工作流的形式编排 LLM 应用,提供更多的定制化能力,适合有经验的用户。

    The post Dify v1.0本地部署+deepseek first appeared on C1G军火库.



沪ICP备19023445号-2号
友情链接