標籤: Deep Agents

  • 用 LangChain Deep Agents 搭一個自己的 Perplexity

    用 LangChain Deep Agents 搭一個自己的 Perplexity

    📌 本文重點

    • Deep Agents 讓 AI 像專職助理跑長流程
    • 可自動調研、用多工具、多模型協作
    • 完全自建自控,比封閉 SaaS 更可客製

    給它一個問題,它會自動上網查資料、調工具、寫成 Markdown 報告——LangChain Deep Agents 解決的,就是過去只有 Perplexity、Claude 這類封閉產品才有的「自動調研 + 多步推理 + 多工具協作」能力,現在你可以自己部署掌控。

    官方介紹與範例程式可見 LangChain 部落格與文件:https://python.langchain.com/docs/deep_agents/
    參考解讀(英文):Towards AI:LangChain Just Made Frontier-Style Deep Agents Open Source


    核心功能:讓 Agent 像「專職助理」一樣持續做事

    1. 多步推理:自動拆解任務,不再只回答一個問題

    一般 ChatGPT 類工具,回答完一輪就結束;Deep Agents 是會自己拆任務的「流程型助理」:

    • 你只丟一句:幫我比較今年主流開源 LLM,寫一份 Markdown 報告
    • Agent 自己決定步驟:
    • 搜索今年開源 LLM 清單
    • 進一步查每個模型規格(參數量、效能、硬體需求)
    • 彙整成表格 + 評語
    • 最後輸出成 Markdown

    💡 關鍵: Deep Agents 會自己規劃與拆解步驟,從一句任務描述完成整個多階段流程,而不是只回覆一輪答案。

    你可以做的事:

    • 寫「任務描述」而不是「一步一步指令」,例如:
      “`text
      幫我整理一份 2024 年可本地部署 LLM 的比較報告,條件:
    • 模型大小 7B–30B
    • 適合在 24GB VRAM 內運行
    • 需要列出評測來源與分數
      “`
    • 把這段描述寫死在後端程式裡,前端只接使用者問題,就能幫同事省下一堆「怎麼問」的時間。

    2. 多工具 / 多模型:像 Perplexity 一樣「邊問邊查」

    Deep Agents 的設計重點是「會自己決定要用哪個工具」,典型會接:

    • 搜索工具(如 Tavily、SerpAPI、自建搜尋 API)
    • HTTP 工具(抓 REST API:GitHub、Jira、自家服務)
    • 向量庫(如 Chroma、PGVector,查公司內部文件)
    • 多個 LLM 模型(雲端 / 本地混搭)

    你可以配置:

    • 一個「大模型」負責推理與規劃(例如雲端的 GPT-4 / Claude / Qwen API)
    • 一個「便宜模型」負責簡單摘要(例如本地 Qwen 7B / DeepSeek 7B,參考:r/LocalLLaMA 模型比較表)

    你可以做的事:

    • 先接一個搜尋工具 + 一個 HTTP 工具:
    • 搜索:Tavily 或 SerpAPI
    • HTTP:LangChain 內建 Requests 工具
    • 讓 Agent 自己選:
    • 有網路 → 先查
    • 有內部 API → 優先打 API

    3. 長任務鏈管理與錯誤恢復:不怕中斷的長流程

    Deep Agents 預設支援:

    • 任務狀態記錄:每一步做了什麼、用什麼工具
    • 中途錯誤重試:API timeout / 工具失敗能重跑某步
    • 可視化 trace(在 LangSmith 裡看完整呼叫鏈)

    這讓它適合跑「需要 10–20 步」的長任務,例如:

    💡 關鍵: 對需要 10–20 步、會呼叫多個外部 API 的長流程,Deep Agents 能維持完整狀態並在錯誤時自動重試,不會整個任務報廢。

    • 連續調 5 個外部 API
    • 多輪搜尋 + 逐段寫報告

    你可以做的事:

    • 在程式裡加入:
    • 最大步數限制(防止無限迴圈)
    • 單次任務總 token 上限(防止爆成本)
    • 把 trace 連到 LangSmith 或 logging 系統,出錯時直接看哪一步掛掉。

    適合誰用:三個具體場景

    1. 技術團隊:自動化「調研 + 報告」Agent

    使用情境:

    • 每週要寫「某技術趨勢整理」
    • 每次都要:Google → 點 10 個連結 → 摘要 → 整理成内部 wiki

    用 Deep Agents 可以:

    • 設定固定 Prompt:
    • 主題
    • 需要標準小節(背景 / 優缺點 / 成熟度 / 相關開源專案)
    • Agent 自動:
    • 上網搜尋最新資料
    • 過濾過舊或不相關文章
    • 整理成 Markdown 報告

    可立即行動:

    • Fork 官方範例(見下方實作段落),改成輸出 .md 檔,定期跑一個「技術雷達」任務。

    2. 資料與營運團隊:自動週報 / 數據分析 Agent

    使用情境:

    • 每週要從 BI、資料庫、CRM 抓數字,整理成週報

    Deep Agents 可以:

    • 用 HTTP 工具接你的 BI / 數據 API
    • 每週:
    • Agent 調 API 拿數據
    • 自動計算環比 / 年比
    • 寫成「管理者看得懂」的自然語言結論

    可立即行動:

    • 先把一個「既有的 SQL 報表 API」包成工具,讓 Agent 負責:「怎麼解讀數字」而不是「查數字」。

    3. 個人開發者:半自動運維助手(GitHub / Jira / 自家 API)

    使用情境:

    • 你一個人或小團隊維護多個專案,需要:
    • 看 issue / PR 狀態
    • 查 error log
    • 開 / 關 ticket

    Deep Agents 可以:

    • 接:
    • GitHub API(Issue / PR 摘要)
    • Jira API(任務狀態)
    • 自家監控或 log API
    • 做到:
    • 問:這週專案 A 有哪些重大 bug?
    • Agent 自己去拉 GitHub / Jira 資料,整理成列表與優先順序

    可立即行動:

    • 先做「只讀版」:只拉資料不寫入,避免一開始就讓 Agent 動到 production。

    LangChain Deep Agents vs 封閉產品

    下表用「使用方式」角度,快速比較:

    名稱 核心功能 免費方案 適合誰
    LangChain Deep Agents 開源多步 Agent,工具任意擴充 開源,需自付模型 想自建 / 部署自家 Agent 的團隊
    Perplexity 現成搜尋 + 答題 + 文件上傳 有免費層 想立刻用、不寫程式的使用者
    Claude Projects / Workflows 團隊用流程型 Agent,整合在 Claude 內 有試用 / 收費方案 已採用 Anthropic 生態的公司

    重點差異在:Deep Agents 完全自己掌控與客製,但需要你寫一點 Python 與 DevOps;Perplexity / Claude 比較像「即用即走」的 SaaS。

    💡 關鍵: Deep Agents 是開源、可客製的方案,需要自付模型成本與運維,而封閉產品則以方便與免部署為主。


    怎麼開始:從零搭一個「自動上網查 + Markdown 報告」Deep Agent

    下面以 Python 為例,做一個簡單版本:給問題 → 自動上網查 → 輸出 Markdown 報告。

    1. 安裝環境:Python + Poetry + LangChain

    前置條件:

    • 建議 Python 3.10+
    • 安裝 Poetry(包管理):
      bash
      pip install poetry

    建立專案:

    mkdir deep-agent-report && cd deep-agent-report
    poetry init  # 按提示建立 pyproject.toml
    poetry add langchain langchain-openai langchain-community
    poetry add tavily-python  # 當作搜尋工具
    

    若要用其他模型供應商,改裝對應的 LangChain integration 即可,例如 langchain-anthropic、langchain-qianfan 等。

    2. 選模型:先雲端,之後再切本地

    先用雲端(方便、快速試)

    例如用 OpenAI 或對應的相容 API:

    export OPENAI_API_KEY=你的_key
    

    在程式裡:

    from langchain_openai import ChatOpenAI
    
    llm = ChatOpenAI(model="gpt-4.1-mini", temperature=0)
    

    你可以先選便宜模型(如 -mini / -lite),控制成本。

    想切到本地 LLM 怎麼辦?

    • 可以用 Ollama 或本地伺服器跑 Qwen / DeepSeek 等模型
    • 再用 LangChain 的 ChatOllama 或 HTTP wrapper 包進來
    from langchain_community.chat_models import ChatOllama
    
    llm = ChatOllama(model="qwen:7b")
    

    建議架構:

    • 推理規劃:用雲端較強模型
    • 摘要 / 重寫:用本地 LLM(成本較低)

    3. 配置工具:搜尋 + HTTP(可選)

    以 Tavily 搜尋為例:

    export TAVILY_API_KEY=你的_tavily_key
    
    from langchain_community.tools.tavily_search import TavilySearchResults
    
    search_tool = TavilySearchResults(k=5)
    

    如果你有自己的 API(例如:公司知識庫、專案清單):

    from langchain_community.tools import RequestsGet
    
    http_tool = RequestsGet()
    

    之後你可以把兩個工具一起交給 Deep Agent,讓它自己決定何時使用。

    4. 建一個最小可用 Deep Agent:問題 → 報告

    下面是一個簡化範例(概念版),實際 API 以官方文件為準:

    from langchain_deep_agents import DeepAgent  # 假想匯入路徑,請以官方為準
    
    agent = DeepAgent(
        llm=llm,
        tools=[search_tool, http_tool],
        max_steps=12,           # 防止無限迴圈
        max_tokens=6000,        # 控制成本
    )
    
    SYSTEM_PROMPT = """
    你是一個技術研究助手,任務:
    1. 收集最新公開資訊(優先使用搜尋工具)
    2. 整理成結構化 Markdown 報告,包含:
       - 摘要
       - 主要發現
       - 資料來源(附上連結)
    3. 避免抄全文,請用自己的話重新整理。
    """
    
    question = input("請輸入想調研的主題:")
    
    result = agent.run(
        system_prompt=SYSTEM_PROMPT,
        user_query=question,
    )
    
    with open("report.md", "w", encoding="utf-8") as f:
        f.write(result)
    
    print("已輸出到 report.md")
    

    你可以立刻做的事:

    • 把 SYSTEM_PROMPT 改成你團隊的報告模板
    • 把 max_steps 調小(例如 8),避免初期測試跑太久

    5. 基本錯誤處理與成本控制

    幾個實用建議:

    1. 限制任務長度與次數:
    2. max_steps、max_tokens 都要設
    3. 外層再加一個「總執行時間」timeout
    4. 工具錯誤重試:
    5. 用 LangChain 的 retry 機制(例如 Retrying decorator)
    6. 搜尋失敗時,可以 fallback 到其他工具或直接回答「資料不足」
    7. 記錄花費:
    8. 把每次任務的 token 使用與工具呼叫次數寫 log
    9. 每週 review 哪些任務最花錢,是否可以改成「批次離線」處理

    小結:讀完可以做的三步

    1. 先用雲端模型 + Tavily,照上面的範例跑出第一個 Markdown 報告 Agent。
    2. 替換 Prompt 和工具,改成符合你團隊需求的「技術調研」「數據週報」或「運維助手」。
    3. 再考慮本地 LLM + 更完整工具鏈,把敏感資料與成本問題一起收回自己掌控。

    只要願意寫一點 Python,你就能把「Perplexity 那種會自己查、自己寫的 AI 助理」搬進自己的專案與內網。

    🚀 你現在可以做的事

    • 到 LangChain 官方文件頁面閱讀 Deep Agents 章節並 Fork 範例專案
    • 建立一個 deep-agent-report 專案,照文中步驟跑出第一個 report.md
    • 把 SYSTEM_PROMPT 與工具配置改成你的技術調研或數據週報模板,部署在內網試跑