Dify: 大模型(LLM) 应用开发平台

前言

Dify 是一个用于构建AI应用程序的开源平台,它融合了后端即服务(Backend as Service,BaaS)和 LLMOps(大语言模型运维)理念。 Dify 平台旨在简化和加速生成式AI应用的创建和部署,为开发者提供了一个用户友好的界面和一系列强大的工具。

💡

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

为什么使用 Dify

Dify 就像是一套脚手架,它能带来的好处太多了:

  • 降低开发门槛
  • 可视化编排与管理
  • 强大的RAG管道
  • 企业级LLMOps
  • 丰富的插件工具箱
  • 活跃的社区支持

有了 Dify ,一个产品经理就能够完成以前需要需求、开发、测试、运维一起完成的工作。

Docker Compose 部署/启动

# 下载开源代码
git clone https://github.com/langgenius/dify.git

# 进入docker目录
cd dify/docker

# 复制配置示例
cp .env.example .env

# 检查 docker compose 版本
docker compose version

# 如果版本是 Docker Compose V2
docker compose up -d

# 如果版本是 Docker Compose V1
docker-compose up -d

# 查看容器启动状态
docker compose ps

如果启动成功,应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox

.env 文件里保存的是一些环境变量,在 docker-compose.yaml 配置文件里会引用到这些配置。

更新 Dify

cd dify/docker
docker compose down
git pull origin main
# 检查 .env.example 配置文件是否有更新,如果有则更新道 .env 文件中,再执行以下命令
docker compose pull
docker compose up -d

访问 Dify

主页面访问地址:

http://localhost

首先会进入到管理员账号的初始界面,访问地址:

http://localhost/install

创建了管理员账号就可以进入登录页面

进入主页面,在探索标签页可以看到 Dify 内置的多个实用工具。

工作室标签页展示的是用户创建的自定义的应用。

知识库标签页用来展示由用户上传的文件生成的知识库,知识库可以用来作为 AI 应用的上下文,辅助 AI 回答问题。

工具标签页展示的是用户 Dify 内置的工具和用户创建的自定义工具。这些工具可以看作是一个个小应用,在工作室里创建的 AI Agents 可以引用这些小工具,这样一来可以简化 AI Agents 的流程。

Dify 的应用类型主要分为四种:

  • 聊天助手,基于 LLM 构建对话式交互的助手;
  • 文本生成,构建文本生成类型任务的助手,例如文本分类、文本摘要、翻译、撰写故事等;
  • Agent,能够分解任务、推理、调用工具的对话式智能助手;
  • 工作流,基于编排流程的方式定义更加灵活的 LLM 工作流。

配置技巧

给python沙箱引入包

如果想要在python执行结点中引入pymysql这样的三方工具包,则需要在 dify\docker\volumes\sandbox\dependencies 目录下的 python-requirements.txt 加入一行代码

PyMySQL==1.1.1

dify\docker\volumes\sandbox\dependencies 目录是在 docker-compose 里配置的启动容器的数据卷映射地址。

如此一来即可在python代码执行结点中加上如下代码

import pymysql

但是这样还是不能连接mysql数据库,因为docker-compose里配置的沙箱是一个封闭的容器,不能和非本地的数据库建立连接,所以还需要修改networks配置,一旦修改了就要注意会有安全问题,生产环境不推荐修改。最好的方式还是通过在python代码执行结点中调用数据库服务的接口,dify自带的http结点也支持接口调用。

迭代结点循环次数超过30次

在一个迭代结点中的迭代次数如果超过30次就会报错,次数是可以在dify配置里配置的。

修改dify\docker\.env文件,将下面三个配置的数量改成适合你的数量。.env文件是从.env.example文件复制过来的。

CODE_MAX_STRING_ARRAY_LENGTH=100
CODE_MAX_OBJECT_ARRAY_LENGTH=100
CODE_MAX_NUMBER_ARRAY_LENGTH=1000

dify\docker\docker-compose.yaml 文件中也有这三个配置,但优先级没有.env文件的高

CODE_MAX_STRING_ARRAY_LENGTH: ${CODE_MAX_STRING_ARRAY_LENGTH:-100}
CODE_MAX_OBJECT_ARRAY_LENGTH: ${CODE_MAX_OBJECT_ARRAY_LENGTH:-100}
CODE_MAX_NUMBER_ARRAY_LENGTH: ${CODE_MAX_NUMBER_ARRAY_LENGTH:-1000}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐