使用 Langflow 透過拖放介面建構 LLM 應用程式,支援 RAG、Agent、API 部署 專案簡介 Langflow 是一個視覺化的 AI 工作流程建構平台,基於 LangChain 開發。透過拖放介面設計複雜的 LLM 應用,無需編寫大量程式碼。
GitHub Stars : 144K+
主要功能 視覺化設計 - 拖放建構工作流程LangChain 整合 - 完整元件支援即時預覽 - 立即測試流程API 匯出 - 一鍵部署為 API多模型 - 支援各種 LLM 提供者安裝 pip 安裝 1
2
pip install langflow
langflow run
訪問 http://localhost:7860
Docker 部署 1
2
3
docker run -d -p 7860:7860 \
--name langflow \
langflowai/langflow:latest
Docker Compose 1
2
3
4
5
6
7
8
9
10
11
version : '3.8'
services :
langflow :
image : langflowai/langflow:latest
ports :
- "7860:7860"
environment :
- LANGFLOW_DATABASE_URL=sqlite:///./langflow.db
- LANGFLOW_CONFIG_DIR=/app/langflow
volumes :
- ./langflow-data:/app/langflow
基本操作 建立流程 點擊「New Project」 從側邊欄拖入元件 連接元件之間的節點 設定各元件參數 點擊「Run」測試 核心元件 類別 元件 LLMs OpenAI、Anthropic、Ollama Prompts ChatPromptTemplate、PromptTemplate Chains LLMChain、ConversationChain Agents ZeroShotAgent、ReActAgent Retrievers VectorStoreRetriever Vector Stores Chroma、FAISS、Pinecone
建構 RAG 應用 流程架構 1
2
3
[Document Loader] → [Text Splitter] → [Embeddings] → [Vector Store]
↓
[User Input] → [Retriever] → [Prompt Template] → [LLM] → [Output]
步驟 載入文件 - 加入 File Loader切割文字 - 加入 RecursiveCharacterTextSplitter向量化 - 加入 OpenAI Embeddings儲存 - 加入 Chroma Vector Store檢索 - 加入 VectorStoreRetriever生成 - 加入 ChatOpenAI + Prompt建構 Agent ReAct Agent 流程 1
2
3
[Tools] → [Agent] → [Agent Executor] → [Output]
↑
[LLM]
自訂工具 1
2
3
4
5
6
7
8
9
10
# 在 Custom Component 中定義
from langflow import CustomComponent
class WebSearchTool ( CustomComponent ):
display_name = "Web Search"
description = "Search the web"
def build ( self , query : str ) -> str :
# 實作搜尋邏輯
return search_results
API 部署 匯出 API 完成流程設計 點擊「API」按鈕 取得 API 端點 呼叫 API 1
2
3
4
5
6
7
8
9
10
11
import requests
response = requests . post (
"http://localhost:7860/api/v1/run/flow-id" ,
json = {
"input_value" : "What is SQL injection?" ,
"output_type" : "chat"
}
)
print ( response . json ())
cURL 範例 1
2
3
curl -X POST "http://localhost:7860/api/v1/run/flow-id" \
-H "Content-Type: application/json" \
-d '{"input_value": "Explain XSS attacks"}'
進階功能 變數和條件 1
2
3
[Conditional Router] - 根據條件選擇路徑
[Text Input] - 使用者輸入變數
[Pass] - 傳遞資料不處理
迴圈處理 1
2
[Loop] - 迭代處理列表
[Aggregator] - 合併多個結果
記憶功能 1
2
[ConversationBufferMemory] - 對話歷史
[ConversationSummaryMemory] - 摘要記憶
範本庫 內建範本 Basic RAG - 文件問答Chat with PDF - PDF 對話Web Scraper - 網頁擷取Code Assistant - 程式助手匯入範本 下載 JSON 範本 點擊「Import」 選擇範本檔案 自訂元件 建立元件 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from langflow.custom import CustomComponent
from langchain.schema import Document
class SecurityScanner ( CustomComponent ):
display_name = "Security Scanner"
description = "Scan for vulnerabilities"
def build_config ( self ):
return {
"target" : { "display_name" : "Target URL" },
"scan_type" : {
"display_name" : "Scan Type" ,
"options" : [ "quick" , "full" ]
}
}
def build ( self , target : str , scan_type : str ) -> Document :
# 實作掃描邏輯
results = scan ( target , scan_type )
return Document ( page_content = results )
環境變數 1
2
3
4
5
6
7
8
9
10
environment :
# OpenAI
- OPENAI_API_KEY=sk-xxx
# 資料庫
- LANGFLOW_DATABASE_URL=postgresql://user:pass@db:5432/langflow
# 認證
- LANGFLOW_SUPERUSER=admin
- LANGFLOW_SUPERUSER_PASSWORD=password
相關連結 延伸閱讀 Licensed under CC BY-NC-SA 4.0