在 Langflow 中开发应用程序
按照本指南学习如何使用 Langflow 构建应用程序。您将了解如何设置项目目录、管理依赖项、配置环境变量以及将 Langflow 应用程序打包到 Docker 镜像中。
要将应用程序部署到 Docker 或 Kubernetes,请参阅部署。
创建项目目录
创建一个类似这样的项目目录。
_10LANGFLOW-APPLICATION/_10├── flows/_10│ ├── flow1.json_10│ └── flow2.json_10├── langflow-config-dir/_10├── docker.env_10├── Dockerfile_10├── README.md
/flows
文件夹用于存放您想要托管的流程。
langflow-config-dir
在 Dockerfile 中被引用,作为 Langflow 配置文件、数据库和日志的位置。更多信息,请参阅环境变量。
docker.env
文件被复制到 Docker 镜像中,作为容器根目录下的 .env
文件。此文件控制 Langflow 的行为,包含敏感信息,并配置运行时设置,如身份验证、数据库存储、API 密钥和服务器配置。
Dockerfile
控制镜像如何构建。此文件将您的流程和 docker.env
文件复制到您的镜像中。
包管理
基础 Docker 镜像通过使用 langflowai/langflow:latest
作为父镜像,包含了 Langflow 核心依赖项。
如果您的应用程序需要额外的依赖项,请创建一个 pyproject.toml
文件并将依赖项添加到其中。更多信息,请参阅安装自定义依赖项。
要将带有额外依赖项的应用程序部署到 Docker,请将 pyproject.toml
和 uv.lock
文件复制到 Docker 镜像中,方法是将以下内容添加到 Dockerfile。
_10COPY pyproject.toml uv.lock /app/
环境变量
docker.env
文件是一个加载到 Docker 镜像中的 .env
文件。
以下 docker.env
示例文件定义了自动登录行为和暴露的端口。您的环境可能有所不同。更多信息,请参阅环境变量。
_10LANGFLOW_AUTO_LOGIN=true_10LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true_10LANGFLOW_BASE_URL=http://0.0.0.0:7860_10OPENAI_API_KEY=sk-...
本例使用 Langflow 默认的 SQLite 数据库进行存储,并且未配置身份验证。
要修改 Langflow 的默认内存行为,请参阅内存。
要为您的服务器添加身份验证,请参阅身份验证。
添加流程和组件
将您的流程的 .JSON
文件添加到 /flows
文件夹。
要从 Langflow 导出流程,请参阅流程。
(可选)将所有自定义组件添加到 /components
文件夹,并在您的 docker.env
中指定路径。
将您的 Langflow 项目打包到 Docker 镜像中
- 将以下命令添加到您的 Dockerfile。
_26# 使用最新版本的 langflow_26FROM langflowai/langflow:latest_26_26# 创建可访问文件夹并在容器中设置工作目录_26RUN mkdir /app/flows_26RUN mkdir /app/langflow-config-dir_26WORKDIR /app_26_26# 将 flows、可选的 components 和 langflow-config-dir 文件夹复制到容器中_26COPY flows /app/flows_26COPY components /app/components_26COPY langflow-config-dir /app/langflow-config-dir_26_26# 复制 docker.env 文件_26COPY docker.env /app/.env_26_26# 设置环境变量_26ENV PYTHONPATH=/app_26ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows_26ENV LANGFLOW_CONFIG_DIR=/app/langflow-config-dir_26ENV LANGFLOW_COMPONENTS_PATH=/app/components_26ENV LANGFLOW_LOG_ENV=container_26_26# 运行服务器的命令_26EXPOSE 7860_26CMD ["langflow", "run", "--backend-only", "--env-file","/app/.env","--host", "0.0.0.0", "--port", "7860"]
Dockerfile 中设置的环境变量指定了资源路径,并允许 Langflow 访问它们。docker.env
中的值会覆盖 Dockerfile 中设置的值。此外,这里通过 ENV LANGFLOW_LOG_ENV=container
设置了日志行为,用于将序列化 JSON 输出到 stdout
,以便在容器化环境中跟踪应用程序的行为。有关配置日志的更多信息,请参阅日志。
(可选)从启动命令中删除 --backend-only
标志,以启用前端启动 Langflow。有关 --backend-only
模式和 Langflow Docker 镜像的更多信息,请参阅Docker。
- 保存您的 Dockerfile。
- 构建 Docker 镜像
_10docker build -t langflow-pokedex:1.2.0 .
- 运行 Docker 容器
_10docker run -p 7860:7860 langflow-pokedex:1.2.0
有关构建并将镜像推送到 Docker Hub 的说明,请参阅Docker。
- 确认服务器正在提供您的流程服务。打开
/flows
文件夹中的一个.JSON
文件,找到文件的id
值。它是流程文档中的第一个值。
_10"id": "e4167236-938f-4aca-845b-21de3f399858",
- 将文件的
id
值作为flow-id
添加到发送到/run
端点的 POST 请求中。
此命令还使用了自定义的 session_id
值 charizard_test_request
。默认情况下,会话 ID 使用 flow-id
值。自定义会话 ID 可以维护唯一的对话线程,保持 LLM 上下文清晰,并使调试更容易。更多信息,请参阅会话 ID。
_10curl --request POST \_10--url 'http://127.0.0.1:7860/api/v1/run/e4167236-938f-4aca-845b-21de3f399858?stream=false' \_10--header 'Content-Type: application/json' \_10--data '{_10"input_value": "Tell me about Charizard please",_10"output_type": "chat",_10"input_type": "chat",_10"session_id": "charizard_test_request"_10}'
如果流程将结果流式传输回您,则您的流程正在被服务,并且可以通过向前端应用程序提交 POST 请求来使用。
要通过外部事件触发您的应用程序,请参阅Webhook。
测试应用程序返回大量文本,因此示例命令使用了 ?stream=true
。如果您愿意,可以设置 ?stream=false
以使用批处理。更多信息,请参阅API 示例。
部署到 Docker Hub 和 Kubernetes
有关构建并将镜像推送到 Docker Hub 的说明,请参阅Docker。
要将您的应用程序部署到 Kubernetes,请参阅将 Langflow 生产环境部署到 Kubernetes。