Open Source Gazette

Curated artifacts and insights from the GitHub ecosystem

LangManus 開源 AI 自動化框架解析

AI agent
manus
在 AI 應用快速發展的今天,許多開發者都面臨一個共同的挑戰:如何將語言模型與各種專業工具整合,創建真正實用的 AI 應用?
LangManus:開源 AI 自動化框架解析

🤖 LangManus

開源 AI 自動化框架解析

🎯 開發動機與解決的痛點

在 AI 應用快速發展的今天,許多開發者都面臨一個共同的挑戰:如何將語言模型與各種專業工具整合,創建真正實用的 AI 應用?

LangManus 解決的核心痛點

🔧 工具整合複雜度: 將搜尋引擎、網頁爬蟲、Python 執行環境等工具與 LLM 整合往往需要大量的膠水代碼

🏗️ 多智能體協作困難: 缺乏有效的框架來管理多個專業化的 AI 智能體之間的協作與任務分配

🔄 工作流程管理: 複雜任務的執行流程難以控制和監控,容易出現執行中斷或資源浪費

🌐 開源生態分散: 現有解決方案多為商業化產品,開源社群缺乏統一且易於擴充的框架

LangManus 以「源於開源,回饋開源」的理念,建構了一個社群驅動的 AI 自動化框架,讓開發者能夠輕鬆建立功能強大的多智能體系統。

🛠️ 技術框架與設計模式

🧠 核心框架

LangGraph: 用於構建有狀態的多智能體對話系統

LangChain: LLM 應用開發框架,提供豐富的工具整合

🌐 Web 框架

FastAPI: 現代高效能的 API 框架,支援自動文件生成

SSE (Server-Sent Events): 實現即時串流響應

🔍 專業工具

Tavily API: 網路搜尋能力

Jina AI: 神經搜尋技術

Browser-use: 網頁自動化操作

⚙️ 開發工具

uv: 現代 Python 套件管理器

Pydantic: 資料驗證和設定管理

🏗️ 採用的設計模式

# 1. 責任鏈模式 (Chain of Responsibility) # 每個智能體負責特定類型的任務 class SupervisorNode: def route_task(self, task): if task.type == 'research': return 'researcher' elif task.type == 'coding': return 'coder' elif task.type == 'web_browsing': return 'browser'
# 2. 策略模式 (Strategy Pattern) # 不同類型的任務使用不同的 LLM AGENT_LLM_MAP = { 'coordinator': 'basic', 'planner': 'reasoning', 'researcher': 'basic', 'coder': 'basic', 'browser': 'vision', 'reporter': 'basic' } def get_llm_by_type(llm_type): if llm_type == 'reasoning': return create_deepseek_llm( model=REASONING_MODEL, api_key=REASONING_API_KEY ) # ... 其他策略
# 3. 建造者模式 (Builder Pattern) # 透過 StateGraph 建構複雜的工作流程 def build_graph(): builder = StateGraph(State) # 添加節點 builder.add_node('coordinator', coordinator_node) builder.add_node('planner', planner_node) builder.add_node('supervisor', supervisor_node) builder.add_node('researcher', research_node) # 定義連接關係 builder.add_edge(START, 'coordinator') return builder.compile()
# 4. 模板方法模式 (Template Method) # 透過 Markdown 模板定義智能體行為 def apply_prompt_template(prompt_name, state): system_prompt = PromptTemplate( input_variables=['CURRENT_TIME'], template=get_prompt_template(prompt_name) ).format( CURRENT_TIME=datetime.now().strftime('%Y-%m-%d %H:%M:%S'), **state ) return [ {'role': 'system', 'content': system_prompt} ] + state['messages']

🎯 應用情境

📊 市場研究分析

自動搜集競爭對手資訊、分析市場趨勢,並生成專業的分析報告。研究員負責資料蒐集,程式設計師處理數據分析,報告員整理成報告。

💻 程式碼審查助手

結合網路搜尋找到最佳實務,透過程式設計師智能體執行程式碼測試,並產生改善建議報告。

🌐 內容自動化生產

研究員蒐集主題相關資訊,瀏覽器智能體截取網頁內容,報告員整合成高品質的內容輸出。

📈 投資決策支援

整合財務資料搜尋、技術分析計算、市場情報蒐集,提供全面的投資建議分析。

🏗️ 軟體架構

LangManus 架構圖 協調員 (Coordinator) 處理初始互動與路由 規劃員 任務分析 主管 任務協調 報告員 結果整理 研究員 資訊蒐集 程式設計師 程式執行 瀏覽器 網頁操作 Tavily 網路搜尋 Python 程式執行 Jina 內容爬取 Browser 自動化 多層 LLM 系統 基礎 推理 視覺 圖例說明 控制流程 工具呼叫 LLM 連接 多智能體 協作系統

🏗️ 架構特色

分層設計: 從協調員到執行智能體,每一層都有明確的職責分工

多 LLM 策略: 根據任務複雜度選擇合適的語言模型(基礎/推理/視覺)

工具整合: 無縫整合各種專業工具,擴展 AI 的實際能力

狀態管理: 透過 LangGraph 的 StateGraph 管理複雜的工作流程狀態

❓ 常見問題 Q&A

Q: LangManus 可以使用哪些 LLM 供應商?

A: LangManus 支援多種 LLM 供應商,採用三層架構設計:

🔥 DeepSeek(專用支援)

  • DeepSeek R1、DeepSeek V3 等推理模型
  • 透過 langchain_deepseek 原生支援
  • 適用於複雜推理任務

🌐 OpenAI 相容供應商

  • OpenAI:GPT-4, GPT-4o, o1-preview, o1-mini
  • Google Gemini:透過 OpenAI 相容接口
  • 通義千問:qwen-max-latest, qwen2.5-vl-72b
  • Anthropic Claude:透過相容接口
  • Azure OpenAI:透過自訂 base_url
  • 本地部署:Ollama, vLLM, LocalAI

⚙️ 三層 LLM 策略(任何供應商皆可)

  • 推理層: DeepSeek R1、OpenAI o1、Gemini Pro
  • 基礎層: GPT-4o、Claude 3.5、Qwen-Max
  • 視覺層: GPT-4o、Gemini Pro Vision、Qwen2.5-VL

Q: 推理任務可以使用 OpenAI o1 或 Gemini 嗎?

A: 絕對可以!推理層支援所有主流推理模型:

# 使用 OpenAI o1 進行推理 REASONING_MODEL=o1-preview REASONING_API_KEY=sk-xxx REASONING_BASE_URL=https://api.openai.com/v1 # 使用 Google Gemini 進行推理 REASONING_MODEL=gemini-2.0-flash-thinking-exp REASONING_API_KEY=your-gemini-key REASONING_BASE_URL=https://your-gemini-proxy.com/v1 # 使用 Claude 進行推理 REASONING_MODEL=claude-3-5-sonnet-20241022 REASONING_API_KEY=sk-ant-xxx REASONING_BASE_URL=https://api.anthropic.com

🎯 推理模型選擇建議:

  • OpenAI o1: 數學推理優異,適合科學計算
  • Gemini 2.0: 多模態推理強,支援思考模式
  • Claude 3.5: 邏輯推理清晰,程式設計友善
  • DeepSeek R1: 成本效益高,中文推理佳

系統會根據您的 REASONING_MODEL 設定,自動選擇對應的推理模型來處理規劃員的複雜任務。

Q: 如何配置不同的 LLM 供應商?

A: 透過 .env 檔案設定三個獨立的配置層:

# 混合使用範例:OpenAI + Gemini + Claude REASONING_MODEL=o1-preview REASONING_API_KEY=sk-openai-xxx REASONING_BASE_URL=https://api.openai.com/v1 BASIC_MODEL=gemini-1.5-pro BASIC_API_KEY=gemini-key-xxx BASIC_BASE_URL=https://your-gemini-proxy.com/v1 VL_MODEL=claude-3-5-sonnet-20241022 VL_API_KEY=sk-ant-xxx VL_BASE_URL=https://api.anthropic.com

每個層級都可以使用不同的供應商和 API 金鑰,實現最佳的成本效益組合。

Q: 可以混合使用不同供應商嗎?

A: 完全可以!LangManus 支援靈活的混合配置:

🏆 推薦組合範例:

  • 推理任務: OpenAI o1-preview(數學推理優異)
  • 一般任務: Gemini 1.5 Pro(速度快,成本低)
  • 視覺任務: Claude 3.5 Sonnet(程式碼理解佳)

💡 其他熱門組合:

  • 成本優化: DeepSeek R1 + Qwen-Max + GPT-4o Vision
  • 性能優先: o1-preview + Claude 3.5 + Gemini Pro Vision
  • 中文特化: Qwen2.5-72B + DeepSeek V3 + Qwen2.5-VL

這樣的配置能夠充分發揮各家 LLM 的優勢,同時有效控制 API 使用成本。

Q: 支援本地部署的模型嗎?

A: 支援!只要提供 OpenAI 相容的 API 接口:

✅ 支援的本地部署方案:

  • Ollama: 個人本地部署首選
  • vLLM: 高效能推理服務
  • LocalAI: 全功能本地 API
  • Text Generation WebUI: 社群熱門選擇

只需將 base_url 指向您的本地服務地址即可,非常適合對數據隱私有嚴格要求的企業應用。

🚀 快速開始

# 複製儲存庫 git clone https://github.com/langmanus/langmanus.git cd langmanus # 透過 uv 建立虛擬環境 uv python install 3.12 uv venv --python 3.12 # 啟動虛擬環境 source .venv/bin/activate # 安裝相依套件 uv sync # 配置環境變數 cp .env.example .env # 編輯 .env 檔案,填入您的 API 金鑰 # 執行專案 uv run main.py
# 啟動 API 伺服器 make serve # 或直接執行 uv run server.py # API 端點範例 POST /api/chat/stream { "messages": [ { "role": "user", "content": "幫我分析一下台積電最近的股價走勢" } ], "debug": false }

🤖 支援的 LLM 供應商

🔥 DeepSeek

專用支援: 透過 langchain_deepseek

適用於: 推理型任務 (o1-mini, R1 等)

特色: 原生推理鏈支援

🌐 OpenAI 相容

支援模型: GPT-4, GPT-4o, GPT-4-turbo

透過: ChatOpenAI 類別

用途: 基礎任務與視覺理解

☁️ 通義千問 (Qwen)

模型: qwen-max-latest, qwen2.5-vl-72b

整合: 阿里雲 DashScope API

優勢: 中文理解優異

🔧 其他供應商

兼容: 任何 OpenAI API 相容服務

包含: Azure OpenAI, Anthropic Claude

本地: Ollama, vLLM, 其他本地部署

🏗️ 多層 LLM 配置

# .env 配置範例 # DeepSeek 推理模型 (用於複雜推理任務) REASONING_MODEL=deepseek-r1 REASONING_API_KEY=sk-xxx REASONING_BASE_URL=https://api.deepseek.com # 通義千問基礎模型 (一般任務) BASIC_MODEL=qwen-max-latest BASIC_API_KEY=sk-xxx BASIC_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # 視覺語言模型 (圖像理解) VL_MODEL=qwen2.5-vl-72b-instruct VL_API_KEY=sk-xxx VL_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

⚙️ LLM 選擇策略

# 智能體與 LLM 類型對應 AGENT_LLM_MAP = { 'coordinator': 'basic', # 協調使用基礎 LLM 'planner': 'reasoning', # 規劃使用推理 LLM 'supervisor': 'basic', # 主管使用基礎 LLM 'researcher': 'basic', # 研究使用基礎 LLM 'coder': 'basic', # 編程使用基礎 LLM 'browser': 'vision', # 瀏覽器使用視覺 LLM 'reporter': 'basic' # 報告使用基礎 LLM } # 動態 LLM 選擇 def get_llm_by_type(llm_type): if llm_type == 'reasoning': return create_deepseek_llm( model=REASONING_MODEL ) elif llm_type == 'vision': return create_openai_llm( model=VL_MODEL ) # ...

🚀 供應商選擇建議

DeepSeek: 推理能力強,適合複雜分析任務,價格相對親民

通義千問: 中文理解優異,多模態能力強,適合中文應用

OpenAI: 生態成熟,API 穩定,適合對穩定性要求高的場景

本地部署: 數據隱私性高,適合企業內部使用

💡 為什麼選擇 LangManus?

LangManus 不只是一個技術框架,更是一個理念的實踐。在 AI 快速發展的時代,我們相信開源協作的力量能夠創造更大的價值。

🌟 社群驅動: 由開發者為開發者打造,持續回饋開源社群

🔧 易於擴展: 模組化設計讓您可以輕鬆添加新的智能體和工具

📚 學習友善: 完整的文件和範例,適合各種程度的開發者

🎯 實用導向: 專注解決真實世界的問題,而非玩具式的展示