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

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 部署/启动

bash 复制代码
# 下载开源代码
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

bash 复制代码
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 加入一行代码

bash 复制代码
PyMySQL==1.1.1

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

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

bash 复制代码
import pymysql

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

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

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

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

bash 复制代码
CODE_MAX_STRING_ARRAY_LENGTH=100
CODE_MAX_OBJECT_ARRAY_LENGTH=100
CODE_MAX_NUMBER_ARRAY_LENGTH=1000

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

bash 复制代码
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}

参考

官方中文文档: docs.dify.ai/zh-hans

相关推荐
逻辑君几秒前
Research in Brain-inspired Computing [1]-果蝇大脑被上传
人工智能·机器学习
jay神3 分钟前
基于YOLOv8的传送带异物检测系统
人工智能·python·深度学习·yolo·可视化·计算机毕业设计
华科易迅4 分钟前
Spring AOP(注解前置+后置通知)
java·后端·spring
神奇小汤圆5 分钟前
一个 Spring Boot 项目,为什么要拆成 bootstrap、web、business、foundation、components、iot?
后端
强风7945 分钟前
OpenCV基础入门
人工智能·opencv·计算机视觉
小超同学你好6 分钟前
Langgragh 19. Skills 4. SkillToolset 式设计 —— 工具化按需加载的 Skills(含代码示例)
人工智能·语言模型·langchain
人工智能培训7 分钟前
如何衔接知识图谱与图神经网络
人工智能·神经网络·知识图谱
Lear9 分钟前
【SpringBoot】 前后端参数命名踩坑记录:小驼峰变下划线导致接收不到参数
后端
火星资讯10 分钟前
Zenlayer Fabric Port 新加坡首发:城域免费,全球畅连
人工智能·科技