跳到主要内容

在 Langflow 中开发应用程序

按照本指南学习如何使用 Langflow 构建应用程序。您将了解如何设置项目目录、管理依赖项、配置环境变量以及将 Langflow 应用程序打包到 Docker 镜像中。

要将应用程序部署到 Docker 或 Kubernetes,请参阅部署

创建项目目录

创建一个类似这样的项目目录。


_10
LANGFLOW-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.tomluv.lock 文件复制到 Docker 镜像中,方法是将以下内容添加到 Dockerfile。


_10
COPY pyproject.toml uv.lock /app/

环境变量

docker.env 文件是一个加载到 Docker 镜像中的 .env 文件。

以下 docker.env 示例文件定义了自动登录行为和暴露的端口。您的环境可能有所不同。更多信息,请参阅环境变量


_10
LANGFLOW_AUTO_LOGIN=true
_10
LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true
_10
LANGFLOW_BASE_URL=http://0.0.0.0:7860
_10
OPENAI_API_KEY=sk-...

本例使用 Langflow 默认的 SQLite 数据库进行存储,并且未配置身份验证。

要修改 Langflow 的默认内存行为,请参阅内存

要为您的服务器添加身份验证,请参阅身份验证

添加流程和组件

将您的流程的 .JSON 文件添加到 /flows 文件夹。

要从 Langflow 导出流程,请参阅流程

(可选)将所有自定义组件添加到 /components 文件夹,并在您的 docker.env 中指定路径。

将您的 Langflow 项目打包到 Docker 镜像中

  1. 将以下命令添加到您的 Dockerfile。

_26
# 使用最新版本的 langflow
_26
FROM langflowai/langflow:latest
_26
_26
# 创建可访问文件夹并在容器中设置工作目录
_26
RUN mkdir /app/flows
_26
RUN mkdir /app/langflow-config-dir
_26
WORKDIR /app
_26
_26
# 将 flows、可选的 components 和 langflow-config-dir 文件夹复制到容器中
_26
COPY flows /app/flows
_26
COPY components /app/components
_26
COPY langflow-config-dir /app/langflow-config-dir
_26
_26
# 复制 docker.env 文件
_26
COPY docker.env /app/.env
_26
_26
# 设置环境变量
_26
ENV PYTHONPATH=/app
_26
ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows
_26
ENV LANGFLOW_CONFIG_DIR=/app/langflow-config-dir
_26
ENV LANGFLOW_COMPONENTS_PATH=/app/components
_26
ENV LANGFLOW_LOG_ENV=container
_26
_26
# 运行服务器的命令
_26
EXPOSE 7860
_26
CMD ["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

  1. 保存您的 Dockerfile。
  2. 构建 Docker 镜像

_10
docker build -t langflow-pokedex:1.2.0 .

  1. 运行 Docker 容器

_10
docker run -p 7860:7860 langflow-pokedex:1.2.0

注意

有关构建并将镜像推送到 Docker Hub 的说明,请参阅Docker

  1. 确认服务器正在提供您的流程服务。打开 /flows 文件夹中的一个 .JSON 文件,找到文件的 id 值。它是流程文档中的第一个值。

_10
"id": "e4167236-938f-4aca-845b-21de3f399858",

  1. 将文件的 id 值作为 flow-id 添加到发送到 /run 端点的 POST 请求中。

此命令还使用了自定义的 session_idcharizard_test_request。默认情况下,会话 ID 使用 flow-id 值。自定义会话 ID 可以维护唯一的对话线程,保持 LLM 上下文清晰,并使调试更容易。更多信息,请参阅会话 ID


_10
curl --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

Search