From a0de0a2472a454f8bf2e7699687cf81ab3e5c7fb Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Fri, 24 Oct 2025 11:06:22 +0800 Subject: [PATCH] feat: add app Langflow --- apps/langflow/1.6.5/data.yml | 11 ++++++ apps/langflow/1.6.5/docker-compose.yml | 43 ++++++++++++++++++++++++ apps/langflow/README.md | 35 +++++++++++++++++++ apps/langflow/README_en.md | 35 +++++++++++++++++++ apps/langflow/data.yml | 24 +++++++++++++ apps/langflow/latest/data.yml | 11 ++++++ apps/langflow/latest/docker-compose.yml | 43 ++++++++++++++++++++++++ apps/langflow/logo.png | Bin 0 -> 4034 bytes 8 files changed, 202 insertions(+) create mode 100644 apps/langflow/1.6.5/data.yml create mode 100644 apps/langflow/1.6.5/docker-compose.yml create mode 100644 apps/langflow/README.md create mode 100644 apps/langflow/README_en.md create mode 100644 apps/langflow/data.yml create mode 100644 apps/langflow/latest/data.yml create mode 100644 apps/langflow/latest/docker-compose.yml create mode 100644 apps/langflow/logo.png diff --git a/apps/langflow/1.6.5/data.yml b/apps/langflow/1.6.5/data.yml new file mode 100644 index 0000000..3508175 --- /dev/null +++ b/apps/langflow/1.6.5/data.yml @@ -0,0 +1,11 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Port + zh: 端口 + required: true + type: number + edit: true + rule: paramPort diff --git a/apps/langflow/1.6.5/docker-compose.yml b/apps/langflow/1.6.5/docker-compose.yml new file mode 100644 index 0000000..799b06d --- /dev/null +++ b/apps/langflow/1.6.5/docker-compose.yml @@ -0,0 +1,43 @@ +services: + langflow: + image: langflowai/langflow:1.6.5 # or another version tag on https://hub.docker.com/r/langflowai/langflow + container_name: ${CONTAINER_NAME} + pull_policy: always # set to 'always' when using 'latest' image + ports: + - "${PANEL_APP_PORT_HTTP}:7860" + depends_on: + - postgres + environment: + - LANGFLOW_DATABASE_URL=postgresql://langflow:langflow@postgres:5432/langflow + # This variable defines where the logs, file storage, monitor data and secret keys are stored. + - LANGFLOW_CONFIG_DIR=/app/langflow + volumes: + - ./data:/app/langflow + + networks: + - 1panel-network + labels: + createdBy: "Apps" + postgres: + image: postgres:16 + container_name: ${CONTAINER_NAME}-postgres + environment: + POSTGRES_USER: langflow + POSTGRES_PASSWORD: langflow + POSTGRES_DB: langflow + ports: + - "5432:5432" + volumes: + - langflow-postgres:/var/lib/postgresql/data + + networks: + - 1panel-network + labels: + createdBy: "Apps" +volumes: + langflow-postgres: + langflow-data: + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/langflow/README.md b/apps/langflow/README.md new file mode 100644 index 0000000..0ad6dfb --- /dev/null +++ b/apps/langflow/README.md @@ -0,0 +1,35 @@ +## 产品介绍 + +**Langflow** 是一个基于 LangChain 的可视化 UI 工具,使用 react-flow 设计,为用户提供了一种直观、简便的方式来实验和构建 AI 流程原型。通过拖拽式的界面,用户可以轻松创建复杂的语言模型工作流,无需编写复杂的代码。 + +## 主要功能 + +- **可视化流程构建**:Langflow 提供了直观的拖拽式界面,用户可以通过简单的拖拽操作来构建复杂的 AI 工作流。系统内置了丰富的组件库,包括各种 LangChain 组件、数据处理节点和输出节点,用户可以根据需要自由组合这些组件。 +- **实时预览与调试**:在构建流程的过程中,用户可以实时预览每个节点的输出结果,便于调试和优化工作流。系统提供了详细的日志信息,帮助用户快速定位和解决问题。 +- **多种数据源支持**:Langflow 支持连接多种数据源,包括文本文件、数据库、API 接口等。用户可以轻松地将外部数据集成到自己的 AI 工作流中。 +- **模板与分享**:系统提供了丰富的预置模板,用户可以基于这些模板快速开始自己的项目。同时,用户也可以将自己创建的流程保存为模板,与团队成员分享。 + +## 配置和使用说明 + +### 注意事项 + +在使用 Langflow 之前,请确保您的系统满足以下要求: +- 至少 1GB 的可用内存 +- 稳定的网络连接(用于访问外部 API) +- 现代浏览器(推荐使用 Chrome 或 Firefox) + +### 访问方式 + +安装完成后,您可以通过浏览器访问 Langflow 界面: +- 默认端口:7860 +- 访问地址:http://您的服务器IP:端口号 + +### 基本使用步骤 + +1. 打开浏览器,访问 Langflow 界面 +2. 在左侧组件面板中选择需要的组件 +3. 将组件拖拽到中央画布区域 +4. 通过连接线将各个组件连接起来 +5. 配置每个组件的参数 +6. 点击运行按钮测试您的工作流 +7. 根据输出结果调整和优化流程 diff --git a/apps/langflow/README_en.md b/apps/langflow/README_en.md new file mode 100644 index 0000000..a2d7b76 --- /dev/null +++ b/apps/langflow/README_en.md @@ -0,0 +1,35 @@ +## Introduction + +**Langflow** is a visual UI tool based on LangChain, designed with react-flow to provide users with an intuitive and convenient way to experiment and build AI workflow prototypes. Through a drag-and-drop interface, users can easily create complex language model workflows without writing complex code. + +## Features + +- **Visual Workflow Building**: Langflow provides an intuitive drag-and-drop interface that allows users to build complex AI workflows through simple drag-and-drop operations. The system includes a rich component library with various LangChain components, data processing nodes, and output nodes that users can freely combine according to their needs. +- **Real-time Preview and Debugging**: During the workflow building process, users can preview the output results of each node in real-time, facilitating debugging and optimization of workflows. The system provides detailed log information to help users quickly locate and resolve issues. +- **Multiple Data Source Support**: Langflow supports connections to various data sources, including text files, databases, API interfaces, and more. Users can easily integrate external data into their AI workflows. +- **Templates and Sharing**: The system provides rich preset templates that users can use to quickly start their projects. Users can also save their created workflows as templates to share with team members. + +## Configuration and Usage Instructions + +### Important Notes + +Before using Langflow, please ensure your system meets the following requirements: +- At least 1GB of available memory +- Stable network connection (for accessing external APIs) +- Modern browser (Chrome or Firefox recommended) + +### Access Method + +After installation, you can access the Langflow interface through your browser: +- Default port: 7860 +- Access URL: http://YourServerIP:PortNumber + +### Basic Usage Steps + +1. Open your browser and access the Langflow interface +2. Select the required components from the left component panel +3. Drag components to the central canvas area +4. Connect components using connection lines +5. Configure parameters for each component +6. Click the run button to test your workflow +7. Adjust and optimize the process based on output results diff --git a/apps/langflow/data.yml b/apps/langflow/data.yml new file mode 100644 index 0000000..552dbb2 --- /dev/null +++ b/apps/langflow/data.yml @@ -0,0 +1,24 @@ +name: Langflow +tags: + - AI + - 开发工具 +title: 一款强大的工具,用于构建和部署 AI 驱动的代理和工作流 +description: + en: Langflow is a powerful tool for building and deploying AI-powered agents and + workflows. + zh: 一款强大的工具,用于构建和部署 AI 驱动的代理和工作流 +additionalProperties: + key: langflow + name: Langflow + tags: + - AI + - DevTool + shortDescZh: 一款强大的工具,用于构建和部署 AI 驱动的代理和工作流 + shortDescEn: Langflow is a powerful tool for building and deploying AI-powered + agents and workflows. + type: website + crossVersionUpdate: true + limit: 0 + website: http://www.langflow.org/ + github: https://github.com/langflow-ai/langflow + document: https://docs.example.com diff --git a/apps/langflow/latest/data.yml b/apps/langflow/latest/data.yml new file mode 100644 index 0000000..3508175 --- /dev/null +++ b/apps/langflow/latest/data.yml @@ -0,0 +1,11 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Port + zh: 端口 + required: true + type: number + edit: true + rule: paramPort diff --git a/apps/langflow/latest/docker-compose.yml b/apps/langflow/latest/docker-compose.yml new file mode 100644 index 0000000..ca94764 --- /dev/null +++ b/apps/langflow/latest/docker-compose.yml @@ -0,0 +1,43 @@ +services: + langflow: + image: langflowai/langflow:latest # or another version tag on https://hub.docker.com/r/langflowai/langflow + container_name: ${CONTAINER_NAME} + pull_policy: always # set to 'always' when using 'latest' image + ports: + - "${PANEL_APP_PORT_HTTP}:7860" + depends_on: + - postgres + environment: + - LANGFLOW_DATABASE_URL=postgresql://langflow:langflow@postgres:5432/langflow + # This variable defines where the logs, file storage, monitor data and secret keys are stored. + - LANGFLOW_CONFIG_DIR=/app/langflow + volumes: + - ./data:/app/langflow + + networks: + - 1panel-network + labels: + createdBy: "Apps" + postgres: + image: postgres:16 + container_name: ${CONTAINER_NAME}-postgres + environment: + POSTGRES_USER: langflow + POSTGRES_PASSWORD: langflow + POSTGRES_DB: langflow + ports: + - "5432:5432" + volumes: + - langflow-postgres:/var/lib/postgresql/data + + networks: + - 1panel-network + labels: + createdBy: "Apps" +volumes: + langflow-postgres: + langflow-data: + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/langflow/logo.png b/apps/langflow/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b1bb156adbe73e29d4d4ddf3b10f5332b66b6a GIT binary patch literal 4034 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 P=77PiyE-M>kFfs-P8hRc literal 0 HcmV?d00001