用 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 與工具配置改成你的技術調研或數據週報模板,部署在內網試跑

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *