Tip
-
Subgraph Node 支持: 新增子图节点Subgraph Node支持,允许您在工作流中封装和重用完整的子工作流!
- 📦 模块化:将复杂工作流封装为独立的子图节点
- 🔄 可重用:在不同工作流中复用相同的子图节点
- 🎯 易维护:独立更新和维护子工作流逻辑
- Human Node(人机协作节点): 新增人机协作节点,支持以下关键场景:
- 🛠️ 工具调用审核:人工审核、编辑或批准 LLM 请求的工具调用
- ✅ LLM 输出验证:人工审核、编辑或批准 LLM 生成的内容
- 💡 提供上下文:允许 LLM 主动请求人工输入以获取澄清或补充信息,支持多轮对话
- If-Else 节点: 新增 If-Else 节点以支持工作流中的条件逻辑!该节点支持多种条件类型,包括:包含、不包含、开始是、结束是、是、不是、为空、不为空。可以使用 AND/OR 运算符组合多个条件进行复杂的条件判断,让您能够基于数据创建复杂的分支工作流。
- 代码执行节点: 新增 Python 代码执行功能!该节点允许您在工作流中直接编写和执行 Python 代码,支持变量引用和动态数据转换。它非常适合算术运算、数据处理、文本操作等场景,让您能够实现超越预设节点功能的自定义逻辑。
Flock 是一个基于工作流 workflow 的低代码平台,用于快速构建聊天机器人、RAG 应用和协调多代理团队。它基于 LangChain 和 LangGraph 构建,提供灵活的低代码编排协作代理解决方案,支持聊天机器人、RAG 应用、代理和多代理系统,并具备离线运行能力。
flock.mp4
Flock 的工作流系统由各种类型的节点组成,每种节点都有特定的用途:
- 输入节点:处理初始输入并将其转换为工作流可处理的格式。
- LLM 节点:利用大型语言模型进行文本生成和处理。
- 检索节点:从知识库中获取相关信息。
- 工具节点:执行特定的任务或操作,扩展工作流功能。
- 检索工具节点:结合检索能力和工具功能。
- 意图识别节点:根据预设类别自动识别用户输入意图并路由到不同的处理流程。
- 回答节点:生成最终答案或输出,整合前序节点的结果。
- 子图节点:封装完整的子工作流,允许模块化设计。
- 开始和结束节点:标记工作流的开始和结束。
未来计划添加的节点包括:
- 文件上传节点
- 参数提取节点
这些节点可以组合创建强大而灵活的工作流,适用于各种复杂的业务需求和应用场景。
本项目受到 StreetLamb 项目及其 tribe 项目的启发,采用了许多相似的方法和代码。在此基础上 我们引入了一些新的特性和方向。
项目的部分布局参考了 Lobe-chat、Dify 和 fastgpt。 它们都是优秀的开源项目,在此表示感谢 🙇。
项目技术栈:LangChain + LangGraph + React + Next.js + Chakra UI + PostgreSQL
Flock 内置多种工具,并支持轻松集成自定义工具。查看我们的 工具指南 了解可用工具以及如何添加自己的工具。
- 持久化对话:保存并维护聊天历史,使您能够继续之前的对话。
- 可观察性:使用 LangSmith 实时监控和跟踪代理的性能和输出,确保它们高效运行。
- 工具调用:使您的代理能够使用外部工具和 API。
- 检索增强生成:使您的代理能够利用内部知识库进行推理。
- 人机协作:在工具调用前启用人工审批。
- 开源模型:使用开源 LLM 模型,如 llama、Qwen 和 Glm。
- 多租户:管理和支持多个用户和团队。
git clone https://github.com/Onelevenvy/flock.git
cp .env.example .env
.env 文件中的一些环境变量默认值为 changethis。 您必须将它们更改为密钥,要生成密钥,可以运行以下命令:
python -c "import secrets; print(secrets.token_urlsafe(32))"
复制内容并将其用作密码/密钥。再次运行该命令以生成另一个安全密钥。
cd docker
docker compose --env-file ../.env up -d
服务器启动需要 Python 3.10.x。建议使用 pyenv 快速安装 Python 环境。
要安装其他 Python 版本,请使用 pyenv install。
pyenv install 3.10
要切换到 "3.10" Python 环境,请使用以下命令:
pyenv global 3.10
按照以下步骤操作: 导航到 "backend" 目录:
cd backend
激活环境。
poetry env use 3.10
poetry install
# 让数据库启动
python /app/app/backend_pre_start.py
# 运行迁移
alembic upgrade head
# 在数库中创建初始数据
python /app/app/initial_data.py
uvicorn app.main:app --reload --log-level debug
poetry run celery -A app.core.celery_app.celery_app worker --loglevel=debug
cd web
pnpm install
cd web
pnpm dev
# 或者 pnpm build 然后 pnpm start