目录

dify-docker-部署方式

dify docker 部署方式

https://i-blog.csdnimg.cn/direct/b141485e912846ad8069d1475e98bd41.jpeg#pic_center

简绍

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

docker dify 部署

官网地址

去官方仓库 将代码 拉下来

git clone https://github.com/langgenius/dify.git

进入 Dify 源代码的 Docker 目录

cd dify/docker

复制配置环境

cp .env.example .env

启动 docker compose 安装容器

docker compose up -d

等容器安装完后 可以看到 80 端口被占用

网址:

https://i-blog.csdnimg.cn/direct/10003ffeca6b42909b17b270ec41d647.png

安装问题

如 80 端口打不开,麻烦修改 env 文件, 找到如下调整端口

# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=8190
EXPOSE_NGINX_SSL_PORT=1443

打开网址报 502 或者 无法登录, 大概率是 nginx 转发失败

通过 查找 docker-web-1 和 docker-api-1 服务 的信息, 寻找对应的 IPAddress 的地址

C:\Users\sys>docker inspect docker-api-1

"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.6",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
C:\Users\sys>docker inspect docker-web-1
"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": [
	"docker-web-1",
	"web",
	"a9044b828f6e"
]

修改 dify/docker/nginx/conf.d 文件夹下

3000 端口是 docker-web-1 的 ip address 填入

5001 端口是 docker-api-1 的 ip address 填入

后面直接重启对应的 nginx 容器

https://i-blog.csdnimg.cn/direct/30a5e603ca7f4e9b9794033ab8b1b65c.png

# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.

server {
    listen ${NGINX_PORT};
    server_name ${NGINX_SERVER_NAME};

    location /console/api {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /api {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /v1 {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /files {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /explore {
      proxy_pass http://172.19.0.5:3000;
      include proxy.conf;
    }

    location /e {
      proxy_pass http://plugin_daemon:5002;
      proxy_set_header Dify-Hook-Url ://;
      include proxy.conf;
    }

    location / {
      proxy_pass http://172.19.0.5:3000;
      include proxy.conf;
    }

    # placeholder for acme challenge location
    ${ACME_CHALLENGE_LOCATION}

    # placeholder for https config defined in https.conf.template
    ${HTTPS_CONFIG}
}

添加模型

在设备里有个 模型提供商, 可以在这边通过 ollama、xinference 等等 手段添加模型

https://i-blog.csdnimg.cn/direct/22916537aa1a49db82bfbe99afd05e1e.png

https://i-blog.csdnimg.cn/direct/a9640772f5f0422ca2fabd218e6d7405.png

使用方式

知识库添加自己的文档信息,然后通过Rerank 模型 和 Embedding 模型 导入知识库就可以了

https://i-blog.csdnimg.cn/direct/9bb95ef10e94458d9c03ae60e75dfafb.png

模型供应商列表

Dify 为以下模型提供商提供原生支持:

https://i-blog.csdnimg.cn/direct/b78949ef47ca4a0f8c6574b4c28483ba.png

https://i-blog.csdnimg.cn/direct/24bdbc813fbc46e688ec163ea1fd98ea.png

https://i-blog.csdnimg.cn/direct/3511f02d1b0b46ea9ba063d328a24f63.png

其中 (🛠️) 代表支持 Function Calling,(👓) 代表视觉能力。

工作流

基本介绍

工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。

Dify 工作流分为两种类型:

  • Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。

  • Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

    为解决自然语言输入中用户意图识别的复杂性,Chatflow 提供了问题理解类节点。相对于 Workflow 增加了 Chatbot 特性的支持,如:对话历史(Memory)、标注回复、Answer 节点等。

为解决自动化和批处理情景中复杂业务逻辑,工作流提供了丰富的逻辑节点,如代码节点、IF/ELSE 节点、模板转换、迭代节点等,除此之外也将提供定时和事件触发的能力,方便构建自动化流程。

常见案例

  • 客户服务
    • 通过将 LLM 集成到你的客户服务系统中,你可以自动化回答常见问题,减轻支持团队的工作负担。 LLM 可以理解客户查询的上下文和意图,并实时生成有帮助且准确的回答。
  • 内容生成
    • 无论你需要创建博客文章、产品描述还是营销材料,LLM 都可以通过生成高质量内容来帮助你。只需提供一个大纲或主题,LLM将利用其广泛的知识库来制作引人入胜、信息丰富且结构良好的内容。
  • 任务自动化
    • 可以与各种任务管理系统集成,如 Trello、Slack、Lark、以自动化项目和任务管理。通过使用自然语言处理,LLM 可以理解和解释用户输入,创建任务,更新状态和分配优先级,无需手动干预。
  • 数据分析和报告
    • 可以用于分析大型知识库并生成报告或摘要。通过提供相关信息给 LLM,它可以识别趋势、模式和洞察力,将原始数据转化为可操作的智能。对于希望做出数据驱动决策的企业来说,这尤其有价值。
  • 邮件自动化处理
    • LLM 可以用于起草电子邮件、社交媒体更新和其他形式的沟通。通过提供简要的大纲或关键要点,LLM 可以生成一个结构良好、连贯且与上下文相关的信息。这样可以节省大量时间,并确保你的回复清晰和专业。