AgentBuilder 應用程式
Podman 可以用來替代 Docker 執行這裡顯示的所有命令。更多資訊,請參閱 Podman 文件。
在視覺編輯器中設計 Flow只是建置使用 AgentBuilder 應用程式的第一步。
一旦您有了一個功能性的 Flow,您就可以在更大的應用程式中使用該 Flow,例如網站或行動應用程式。 因為 AgentBuilder 同時是 IDE 和運行時,您可以使用 AgentBuilder 在本地建置和測試您的 Flow,然後在生產環境中打包和提供您的 Flow。
本指南介紹從初始設定到打包和部署的 AgentBuilder 應用程式開發。 本文件不說明如何撰寫完整應用程式;它只描述如何在更大應用程式的上下文中包含 AgentBuilder。
目錄結構
以下範例描述了最小 AgentBuilder 應用程式的目錄結構:
_10LANGFLOW-APPLICATION/_10├── docker.env_10├── Dockerfile_10├── flows/_10│ ├── flow1.json_10│ └── flow2.json_10├── langflow-config-dir/_10├── README.md
此目錄包含以下內容:
docker.env:此檔案會作為.env檔案複製到容器根目錄中的 Docker 映像。Dockerfile:此檔案控制如何建置您的 AgentBuilder 映像。/flows:此資料夾存放您想要託管的 Flow,也就是您的應用程式使用的 Flow。/langflow-config-dir:此資料夾在 Dockerfile 中被引用為您的 AgentBuilder 部署的配置文件、資料庫和日誌的位置。README.md:這是應用程式文件的典型 README 檔案。
這是最小 AgentBuilder 應用程式目錄的範例。
您的應用程式可能有額外的檔案和資料夾,例如用於自訂Components的 /components 資料夾,或用於額外依賴項的 pyproject.toml 檔案。
套件管理
基礎 AgentBuilder Docker 映像包含 AgentBuilder 核心依賴項,因為它使用 langflowai/langflow:latest 作為父映像。
如果您的應用程式需要額外依賴項,請為額外依賴項建立 pyproject.toml 檔案。
如需更多資訊,請參閱安裝自訂依賴項。
要將具有額外依賴項的應用程式部署到 Docker,您必須將 pyproject.toml 和 uv.lock 檔案複製到 Docker 映像。
要執行此操作,請將以下內容新增到您的 AgentBuilder 應用程式 Dockerfile:
_10COPY pyproject.toml uv.lock /app/
環境變數
docker.env 檔案是載入到您的 Docker 映像中的 .env 檔案。
它包含用於 Flow 或控制 AgentBuilder 行為的 AgentBuilder 環境變數,例如驗證、資料庫儲存、API 金鑰和伺服器配置。
例如:
_10LANGFLOW_AUTO_LOGIN=True_10LANGFLOW_SAVE_DB_IN_CONFIG_DIR=True_10LANGFLOW_BASE_URL=http://0.0.0.0:7860_10OPENAI_API_KEY=sk-...
您也可以在 Dockerfile 中設定環境變數。
但是,如果您在 docker.env 和 Dockerfile 中都設定了環境變數,AgentBuilder 會使用在 docker.env 中設定的值。
AgentBuilder 也可以從您的環境變數建立全域變數,或將環境變數用作遺失全域變數的備份。
秘密
為了簡化,AgentBuilder 文件中的範例可能會直接引用 API 金鑰和其他敏感值。 在您自己的應用程式中,您應該始終遵循管理秘密的業界最佳實務,例如使用環境變數或秘密管理工具。
如需在 AgentBuilder 中產生驗證金鑰和管理秘密的資訊,請參閱 API 金鑰和驗證。
儲存
預設情況下,AgentBuilder 使用 SQLite 資料庫進行儲存。 如果您偏好使用 PostgreSQL,請參閱配置外部 PostgreSQL 資料庫。
如需有關儲存的更多資訊,包括快取和記憶體,請參閱記憶體管理選項。
Flow
您的本地 AgentBuilder 實例可能有許多用於不同應用程式的 Flow。 當您將 AgentBuilder 打包為應用程式的依賴項時,您只想包含您的應用程式使用的FLOW。
-
匯出 與您的應用程式相關的FLOW。
如果您有鏈式FLOW(觸發其他FLOW的FLOW),請確保匯出_所有_必要的FLOW。
-
將匯出的 AgentBuilder JSON 檔案新增到應用程式目錄中的
/flows資料夾。
Components
您在 AgentBuilder 視覺編輯器中看到的 核心Components 和 [套件] 會自動包含在基礎 AgentBuilder Docker 映像中。
如果您有為應用程式建立的任何自訂Components,您必須將這些Components包含在應用程式目錄中:
- 在應用程式目錄中建立
/components資料夾。 - 將您的自訂Components檔案新增到
/components資料夾。 - 在您的
docker.env中指定/components的路徑。
AgentBuilder Dockerfile
Dockerfile 決定如何建置您的 AgentBuilder 映像,包括依賴項、 Flow、Components和配置文件。
至少,您需要指定基礎 AgentBuilder 映像、在容器中建立必要的資料夾、將資料夾和檔案複製到容器,並提供啟動命令。
_29# Use the latest version of the base Langflow image_29FROM langflowai/langflow:latest_29_29# Create folders and set the working directory in the container_29RUN mkdir /app/flows_29RUN mkdir /app/langflow-config-dir_29WORKDIR /app_29_29# Copy flows, langflow-config-dir, and docker.env to the container_29COPY flows /app/flows_29COPY langflow-config-dir /app/langflow-config-dir_29COPY docker.env /app/.env_29_29# Optional: Copy custom components to the container_29COPY components /app/components_29_29# Optional: Use custom dependencies_29COPY pyproject.toml uv.lock /app/_29_29# Set environment variables if not set in docker.env_29ENV PYTHONPATH=/app_29ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows_29ENV LANGFLOW_CONFIG_DIR=/app/langflow-config-dir_29ENV LANGFLOW_COMPONENTS_PATH=/app/components_29ENV LANGFLOW_LOG_ENV=container_29_29# Command to run the Langflow server on port 7860_29EXPOSE 7860_29CMD ["langflow", "run", "--backend-only", "--env-file","/app/.env","--host", "0.0.0.0", "--port", "7860"]
此 Dockerfile 中直接設定的環境變數為 AgentBuilder 指定資源路徑。
如果這些變數也在 docker.env 中設定,docker.env 中的值會覆蓋 Dockerfile 中設定的值。
在此範例中,ENV LANGFLOW_LOG_ENV=container 將序列化 JSON 的日誌行為設定為 stdout,以追蹤容器化環境中應用程式的行為。如需更多資訊,請參閱日誌。
僅後端模式
CMD 中的 --backend-only 旗標以僅後端模式啟動 AgentBuilder,這僅提供程式設計存取。
當將 AgentBuilder 作為不需要存取視覺編輯器的應用程式依賴項運行時,建議使用此模式。
如果您想要提供 AgentBuilder 視覺編輯器_和_後端,請省略 --backend-only。
如需更多資訊,請參閱在 Docker 上部署 AgentBuilder。
測試您的 AgentBuilder Docker 映像
建置並運行您的 AgentBuilder Docker 映像來測試它。
此範例在本地運行容器。 如需有關在 Docker Hub 上發佈映像和遠端運行 AgentBuilder 容器的資訊,請參閱部署到 Docker Hub 和 Kubernetes。
-
建置 Docker 映像:
_10docker build -t langflow-pokedex:1.2.0 . -
運行 Docker 容器以啟動您的 AgentBuilder 伺服器:
_10docker run -p 7860:7860 langflow-pokedex:1.2.0 -
要確認容器按預期提供您的FLOW,請使用 AgentBuilder API 運行FLOW:
-
開啟應用程式
/flows資料夾中的其中一個 JSON 檔案,然後在額外中繼資料和專案資訊中找到FLOW的id。有許多
id值;確保您取得整個FLOW的 ID,而不是個別Components的 ID。 如果您的FLOW很複雜,請嘗試搜尋FLOW的名稱,通常在FLOW的id附近。_10"name": "Basic Prompting",_10"description": "Perform basic prompting with an OpenAI model.",_10"id": "e4167236-938f-4aca-845b-21de3f399858", -
使用上一步中的FLOW ID 向
/v1/run/$FLOW_ID端點發送 POST 請求。以下範例運行一個簡單的 LLM 聊天FLOW,該FLOW回應聊天輸入字串。 如有必要,請修改您的FLOW的有效載荷。 例如,如果您的FLOW沒有 Chat Input Components,您必須修改有效載荷以提供您的FLOW預期的輸入。
_10curl --request POST \_10--url 'http://localhost:7860/api/v1/run/e4167236-938f-4aca-845b-21de3f399858?stream=true' \_10--header 'Content-Type: application/json' \_10--data '{_10"input_value": "Tell me about Charizard.",_10"output_type": "chat",_10"input_type": "chat",_10"session_id": "charizard_test_request"_10}'關於此範例
此命令運行 Pokédex 範本FLOW。 它提供關於特定寶可夢的聊天輸入,使用可選的自訂
session_id,並通過?stream=true啟用回應串流。預設的工作階段 ID 是FLOW ID。 自訂工作階段 ID 有助於隔離獨特的對話串流以保持 LLM 的上下文乾淨,並且它們有助於在FLOW日誌中識別特定對話以使除錯更容易。
此命令使用回應串流,因為 Pokédex FLOW可能會返回大量文字。 要使用批次處理,請設定
?stream=false。 -
驗證請求成功且回應有效,取決於您運行的特定FLOW。
這確認您的 AgentBuilder Docker 映像正確配置,此FLOW可通過託管在容器上的 AgentBuilder API 伺服器存取。 當您建置和測試整個應用程式堆疊時,您的前端應用程式可以使用 AgentBuilder API 請求來觸發由 AgentBuilder 容器提供的FLOW,就像您在上一步中手動測試FLOW一樣。
此範例通過向
/v1/run/$FLOW_ID端 點發送聊天輸入來觸發FLOW。 如需更多FLOW觸發範例,請參閱使用 Webhook 觸發FLOW 和建立可擷取檔案的聊天機器人 教學。
-
部署到 Docker Hub 和 Kubernetes
當您準備好與世界分享您的應用程式時,您需要在生產環境中提供 AgentBuilder。 如需有關部署 AgentBuilder 的更多資訊,請參閱以下內容: