Dify体验

Dify部署及本地模型配置

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

核心功能

1. 可视化 Prompt 编排

Dify 提供了一个直观的界面,用于编排和管理 Prompt(提示词),使得开发者可以通过简单的拖拽操作来设计复杂的对话流程或任务执行逻辑。这个特性大大降低了使用高级语言模型的门槛,让没有深厚编程背景的人也能构建有效的 AI 应用 。

2. 数据集管理与 RAG 引擎

Dify 内置了高质量的 Retrieval-Augmented Generation (RAG) 引擎,可以帮助用户安全地构建私有数据与大型语言模型之间的数据通道,并提供高可靠的索引和检索工具 。这使得基于特定领域知识的应用程序开发变得更加容易,例如通过上传 PDF、TXT 等格式的数据文件,即可创建针对这些文档内容进行查询和分析的智能助手 。

3. 模型管理

Dify 支持对数百个不同的语言模型进行集成和支持,这意味着它可以为用户提供广泛的选择,以适应各种业务需求和技术偏好 。此外,它还允许用户自定义模型参数和服务配置,确保最佳性能和灵活性。

4. Agent 框架

Dify 提供了一个稳健的 Agent 框架,允许开发者创建定制化的代理程序,这些代理可以根据预设规则自主调用一系列工具完成复杂任务 。这种能力对于自动化工作流特别有用,因为它能减少人工干预,提高效率。

5. 流程编排

借助于其强大的 Workflow 编排能力,Dify 能够帮助开发者将多个独立的任务串联起来形成完整的业务流程,从而实现更加稳定可控的输出结果 。

6. 插件系统

新的插件系统突破了原有框架的限制,提供了更丰富和强大的扩展能力。Dify 提供五种类型的插件——Models、Tools、Agent 策略、Extensions 和 Bundle——每一种类型都对应着成熟的场景解决方案 。这不仅增强了平台的功能多样性,也为开发者提供了无限的可能性去改造自己的应用。

7. 企业级 LLMOps

Dify 还为企业提供了全面的企业级 LLMOps 解决方案,包括观测推理过程、记录日志、标注数据以及训练并微调模型等功能,帮助企业脱离黑盒状态,持续迭代优化模型表现 。

综上所述,Dify 是一款旨在简化 AI 应用开发流程的强大工具,无论是初创公司希望快速验证概念还是大企业寻求高效部署内部 AI 解决方案,都能从中受益。它的开放性和可扩展性使其成为当今市场上极具竞争力的选择之一。

本地部署

本地部署最简单的方法是直接使用docker compose

1
2
3
git clone git@github.com:langgenius/dify.git
cd dify/docker
docker-compose up

如何使用本地模型

部署Dify,使用本地模型是一个常见的诉求。如果我们将Dify通过docker容器的方式进行部署,那么关键的问题是注意本地模型IP配置不能用127.0.0.1,因为那将指向容器内部,而应该使用 host.docker.internal

Dify支持Ollama和 OpenAI-API-Compaitble 等模型,以我们本地模型使用 LMStudio 为例,对应的 API Endpoint 地址应该配置为 http://host.docker.internal:1234/v1

服务器部署

服务器部署Dify,与本地部署不同,主要难点在于网络连接的问题,众所周知,现在docker仓库也被作为不和谐因素被Ban了。因此服务器上部署需要通过中间网络进行中转,常用的方法包括使用docker 站点镜像和科学方法。但是docker镜像并不完整包含所有的内容(在Dify docker部署过程中会发现通过镜像能够成功拉取一部分),因此还得回到后一种方案:

1
2
3
4
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker

http-proxy.conf配置如下:

1
2
3
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"

常见问题

常见问题可以参考官方FAQ,诸如解决忘记密码、邮件找回等问题

  • 忘记密码的解决方法
1
docker exec -it docker-api-1 flask reset-password
  • 修改端口

修改 .env 文件的内容示例:

1
2
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus