🤖 完整指南·2026

LangChain 2026 代理商:ReAct、LangGraph 和 Production Patterns

完整的 2026 年 LangChain 代理指南 — AgentExecutor 已棄用,LangGraph 為標準。了解 ReAct、多代理架構、檢查點、串流和生產偵錯模式。

📅更新日期:2026 年 4 月⏱ 14 分鐘閱讀✍️ EasyClaw 社論
  • X(Twitter) icon
  • Facebook icon
  • LinkedIn icon
  • Copy link icon

什麼是LangChain代理商? (2026 年的答案比你想像的更微妙)

如果您一直在Google上搜尋「LangChain 代理程式」並找到使用 AgentExecutor 的教程,那麼您正在閱讀過時的內容。 LangChain 已棄用該 API。 2026年, LangChain agents means LangGraph-based agents - 如果您正在建立玩具演示之外的任何東西,那麼差異就很重要。

LangChain 代理程式是一個系統,其中 LLM acts as a reasoning engine - 它決定呼叫哪些工具、以什麼順序、何時停止。核心循環看似簡單:觀察輸入→推理要做什麼→行動(呼叫工具或回傳輸出)→觀察結果→重複。

2026 年的關鍵轉變

舊的 AgentExecutor 是一個黑盒子。 LangGraph 將其替換為您控制的明確、有狀態圖——節點、邊、條件路由和檢查點都是一等公民。

其強大且棘手的原因在於法學碩士不僅僅是生成文本。它所做的決策會產生真正的副作用:查詢資料庫、呼叫 API、寫入檔案、瀏覽網頁。代理模式是將聊天機器人與自治系統區分開來的。

因此,2026 年「什麼是 LangChain 代理」的答案是: LangGraph 編譯的狀態機,其中一個或多個 LLM 節點驅動控制流,工具調度是明確的,並且狀態透過檢查指針跨步驟保持。這就是您在編寫一行程式碼之前需要的心理模型。

AgentExecutor 與 LangGraph:發生了什麼變化及其重要性

了解遷移路徑需要了解 AgentExecutor 停用的原因。它不是任意的——當開發人員嘗試建立生產系統時,它遇到了基本的架構限制。

能力 AgentExecutor(已棄用) LangGraph(目前)
State management Implicit, opaque Explicit typed schema
Control flow Fixed loop, no branching Conditional edges, cycles
Persistence / checkpointing None Built-in checkpointers (SQLite, Postgres, Redis)
人在迴路 Hacky workarounds First-class interrupt/resume
多代理支援 Manual orchestration Native subgraph composition
Streaming Token-level only Node-level + token-level
Debugging Printf-level LangSmith trace + graph visualizer

最痛苦的 AgentExecutor 限制是無法在運行中暫停並稍後恢復。任何真正的工作流程——想想「起草報告,等待人工批准,然後發布」——都需要跨時間界限的持久狀態。 LangGraph 的檢查點本身就解決了這個問題。

遷移注意事項

如果您有現有的 AgentExecutor 代碼,LangChain 會提供相容性填充程序,但它只是墊腳石,而不是目的地。計畫使用 StateGraph 重寫編排層。

ReAct 模式:推理+行動循環

ReAct(理性 + 行動)是大多數 LangChain 代理背後的基本提示模式。它指示法學碩士在兩種模式之間交替: Thought (關於下一步該做什麼的內在推理)和 Action (使用特定參數呼叫特定工具)。

在實踐中,循環看起來像這樣:

  1. Thought: 法學碩士對使用者的請求和可用工具進行推理。
  2. Action: LLM 輸出結構化工具呼叫(名稱+參數)。
  3. Observation: 該工具執行並傳回結果,附加到上下文中。
  4. Thought again: 法學碩士對觀察結果進行了推理。
  5. 最終答案: 當法學碩士確定它有足夠的資訊時,它會輸出最終響應。

在 LangGraph 中,每個步驟都是一個 節點 在圖表中。 LLM節點檢查後的條件邊:“模型是否調用了工具,或者是否輸出了最終答案?” - 以及相應的路線。這使得 ReAct 循環變得明確且可檢查,而不是隱含在黑盒執行器中。

為什麼 ReAct 在 2026 年仍然佔據主導地位

儘管有較新的模式(計劃和執行、反射、LATS),ReAct 仍然是預設模式,因為它對於單代理任務來說是最有效的令牌並且最容易調試。從反應開始;只有當你達到極限時,才會轉向更複雜的模式。

現代 LLM(GPT-4o、Claude 3.7、Gemini 2.5)透過其函數呼叫/工具使用 API 本地處理 ReAct。您不再需要手動格式化“Thought/Action/Observation”字串 - 模型的工具使用功能在 API 層級處理此問題。 LangGraph 乾淨地包裝了這一點,因此您的節點可以專注於業務邏輯。

逐步建置 LangGraph 代理

這是 Python 中的最小 LangGraph 代理模式。每個生產代理都是這個骨架的變體。

1. 定義狀態

狀態是流經每個節點的單一事實來源。使用 TypedDict 或 Pydantic 模型:

from typing import Annotated, Sequence
from langchain_core.messages import BaseMessage
from langgraph.graph.message import add_messages
from typing_extensions import TypedDict

class AgentState(TypedDict):
    messages: Annotated[Sequence[BaseMessage], add_messages]
    # add any custom fields your agent needs
    context: str
    iteration_count: int

2. 定義工具

工具是用 @tool 修飾的普通 Python 函數。文件字串成為 LLM 看到的工具描述:

from langchain_core.tools import tool

@tool
def search_web(query: str) -> str:
    """Search the web for current information about a topic."""
    # your search implementation here
    return results

@tool
def write_file(filename: str, content: str) -> str:
    """Write content to a file on disk."""
    with open(filename, 'w') as f:
        f.write(content)
    return f"Written {len(content)} chars to {filename}"

tools = [search_web, write_file]

3. 建構圖表

from langgraph.graph import StateGraph, END
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o").bind_tools(tools)

def agent_node(state: AgentState):
    response = llm.invoke(state["messages"])
    return {"messages": [response]}

def should_continue(state: AgentState):
    last_message = state["messages"][-1]
    if last_message.tool_calls:
        return "tools"
    return END

graph = StateGraph(AgentState)
graph.add_node("agent", agent_node)
graph.add_node("tools", ToolNode(tools))
graph.set_entry_point("agent")
graph.add_conditional_edges("agent", should_continue)
graph.add_edge("tools", "agent")

app = graph.compile()

4. 增加持久性檢查點

from langgraph.checkpoint.sqlite import SqliteSaver

checkpointer = SqliteSaver.from_conn_string("./agent_memory.db")
app = graph.compile(checkpointer=checkpointer)

# Now every run is persisted and resumable
config = {"configurable": {"thread_id": "user-session-123"}}
result = app.invoke({"messages": [("human", "Research LangGraph and write a summary")]}, config)

製作技巧:線程 ID

設定中的 thread_id 是您的會話金鑰。使用使用者 ID、對話 ID 或作業 ID — 任何可以讓您恢復到上次執行的確切狀態的內容。這是多輪代理工作流程的基礎。

JavaScript / TypeScript 中的 LangGraph:全功能奇偶校驗

截至 2026 年,@langchain/langgraph 具有與 Python SDK 相同的完整功能。如果您正在建置 Node.js 後端、Next.js 伺服器操作或 Nuxt API 路由,我們將全力支援您。

import { StateGraph, END } from "@langchain/langgraph";
import { ChatOpenAI } from "@langchain/openai";
import { tool } from "@langchain/core/tools";
import { z } from "zod";

// Define a tool with Zod schema
const searchWeb = tool(
  async ({ query }) => {
    const results = await yourSearchFunction(query);
    return results;
  },
  {
    name: "search_web",
    description: "Search the web for current information",
    schema: z.object({ query: z.string() }),
  }
);

// State type
interface AgentState {
  messages: BaseMessage[];
}

const llm = new ChatOpenAI({ model: "gpt-4o" }).bindTools([searchWeb]);

// Build graph — identical pattern to Python
const graph = new StateGraph<AgentState>({ channels: messagesStateReducer })
  .addNode("agent", async (state) => ({
    messages: [await llm.invoke(state.messages)],
  }))
  .addNode("tools", new ToolNode([searchWeb]))
  .addEdge("__start__", "agent")
  .addConditionalEdges("agent", shouldContinue)
  .addEdge("tools", "agent");

const app = graph.compile();

JS/TS SDK 支援相同的檢查點(用於開發的記憶體中,用於生產的 PostgreSQL)、相同的流 API (streamEvents) 以及相同的 LangSmith 追蹤整合。心理模型在語言之間直接轉移。

多代理架構:協調器和子圖

單代理系統很快就會達到極限:情境視窗溢位、專業化受到影響、複雜的任務需要協調。到 2026 年,生產 LangGraph 部署幾乎總是使用多代理模式。

三個核心模式

導師

編排器 LLM 決定接下來要呼叫哪個專業代理程式。適合角色界線明確的任務(研究員、作家、評論家)。

蜂群

代理根據任務上下文直接相互切換。沒有中央協調員。適合動態、不可預測的工作流程。

分層的

嵌套子圖,其中父圖將整個子任務委託給子圖。最適合模組化、可重複使用的代理組件。

LangGraph 透過以下方式實現多代理系統 子圖組成。每個專家代理程式都是編譯圖,作為節點嵌入到父協調器圖中。狀態可以在等級之間流動,每個子圖可以有自己的檢查指標和記憶體。

何時使用多代理

經驗法則:如果您對單一代理的提示超過約 4,000 個系統上下文標記,或者如果您有超過約 6 個不同的工具,請考慮拆分為專門的代理。在這種規模下,協調開銷是值得的。

生產模式:玩具示範沒有向您展示的內容

讓 LangGraph 代理程式在 Jupyter 筆記本中工作是一回事。大規模可靠地運行它是另一回事。以下是將原型與生產分開的模式。

錯誤處理和重試邏輯

工具故障是不可避免的-速率限制、網路逾時、輸出格式錯誤。 LangGraph 為您提供了兩個槓桿:節點級 try/catch,將錯誤訊息傳回 LLM(讓它正常恢復),以及邊緣上的圖形級重試策略。

迭代限制

編譯時請務必設定 recursion_limit 。沒有它,混亂的 LLM 可能會無限循環並消耗您的 API 預算。對於大多數任務來說,合理的預設值是 25 次迭代。

app = graph.compile(checkpointer=checkpointer)
# Invoke with recursion limit
result = app.invoke(
    {"messages": [("human", query)]},
    config={"recursion_limit": 25, "configurable": {"thread_id": thread_id}}
)

人在環中斷

LangGraph 的 interrupt_beforeinterrupt_after 編譯選項可讓您在特定節點暫停執行、向人類顯示目前狀態、收集輸入並恢復。這對於審批工作流程、內容審查門和高風險工具呼叫是必不可少的。

即時用戶體驗串流

對於面向用戶的應用程序,串流是不可協商的。 LangGraph 的 astream_events 為您提供粒度事件:哪個節點正在運作、呼叫了哪個工具以及逐個令牌的 LLM 輸出。將其連接到伺服器發送事件 (SSE) 或 WebSocket,以在 UI 中取得即時進度。

LangSmith 的可觀察性

設定 LANGCHAIN_TRACING_V2=true ,每個代理運行都會獲得完整的追蹤:哪些節點被觸發、LLM 看到了什麼、每個工具回傳了什麼、總延遲和令牌成本。這就是調試「為什麼它調用了錯誤的工具?」的方法。一類生產錯誤-不是列印語句。

常見的生產錯誤

  • 無遞歸限制(無限循環)
  • 生產中沒有檢查點(重啟時遺失狀態)
  • 拋出而不是傳回錯誤字串的工具
  • 工具描述過於模糊(法學碩士選擇了錯誤的工具)
  • 工具呼叫沒有速率限制

生產清單

  • 設定 recursion_limit (25–50)
  • 用於持久性的 Postgres 檢查點
  • 工具在失敗時傳回字串
  • 具體的、範例豐富的工具文檔字串
  • LangSmith 追蹤已啟用

2026 年真實世界 LangChain 代理用例

上述模式解鎖了廣泛的生產應用。以下是 LangGraph 代理商如今提供真正價值的類別。

🔍 研究自動化

代理商可以搜尋網路、閱讀論文、綜合研究結果並產生結構化報告,取代分析師和內容團隊花費數小時的手動研究。

💻 程式碼產生管道

編寫程式碼、運行測試、觀察故障、修復錯誤和迭代的多步驟代理 - 在合併之前通過人工審查門。 GitHub Copilot Workspace 就是建立在這種模式之上的。

📊 數據分析代理

具有 SQL 工具存取權限的代理程式可以將自然語言問題轉換為查詢、執行查詢、解釋結果並得出見解,而無需接觸 BI 團隊。

📝 內容製作

研究→大綱→草稿→SEO優化→發布管道。多代理系統,其中每個階段都是專家節點,在關鍵檢查點得到人工批准。

🎧 客戶支援自動化

代理商可以找到訂單、處理退款、更新票證以及升級給人工,同時透過檢查點維持跨會話的完整對話上下文。

⚙️ DevOps 和 Ops 代理

監控代理程式偵測異常,透過查詢日誌和指標診斷根本原因,並使用完整的診斷報告自動修復或尋呼待命人員。

為什麼EasyClaw是運行LangGraph代理程式的最佳方式

從架構上理解 LangGraph 是一回事。使用本地法學碩士、自訂工具、流輸出和持久狀態可靠地運行多代理內容生產管道是大多數團隊陷入困境的地方。 EasyClaw 解決了整個堆疊。

  • Desktop-native, no cloud lock-in. EasyClaw 在本地運行您的 LangGraph 代理程式。您的資料、您的模型、您的基礎架構—API金鑰不會洩漏給第三方平台。
  • Built-in checkpointing and session memory. 每個代理運行都會被持久化。還原任何作業、檢查任何狀態快照、重播任何分支-無需建立自訂持久層。
  • Real-time streaming UI. 即時觀察您的代理思考、行動和迭代。節點級進度、工具輸出和 LLM 推理 — 所有這些都出現在 EasyClaw 的即時活動來源中。
  • 開箱即用的多代理編排。 EasyClaw 的代理圖支援具有視覺路由的主管、群體和分層模式 - 無需手動子圖連接。
  • SEO-native content agents. 用於關鍵字研究、內容起草、模式註入和發佈的預先建置代理程式 — 由本指南涵蓋的相同 LangGraph 模式提供支援。
免費試用 EasyClaw →

如何為您的用例選擇正確的代理架構

並非每個問題都需要複雜的多智能體圖。這是一個基於您實際想要建立的決策框架。

你的情況 推薦圖案 關鍵原因
1–5 工具,單一任務類型 Single ReAct agent Simplest, lowest latency
需要審核門或人工審核 ReAct + interrupt_before 無需重新設計的人機交互
6 個以上的工具或 2 個以上的不同角色 Supervisor multi-agent Specialization improves tool accuracy
Unpredictable task routing Swarm / handoffs Dynamic routing without a central bottleneck
Reusable agent modules across projects Hierarchical subgraphs Composability and 隔離
Long-running background jobs Any pattern + Postgres checkpointer State survives restarts and crashes

實用的啟發式: 從可能有效的最簡單模式開始,使用 LangSmith 進行檢測,然後識別瓶頸。預先設計複雜性的工程師幾乎總是過度設計他們的第一個代理系統。隨著需求變得清晰,LangGraph 中的模式可以輕鬆升級到更複雜的架構。

常見問題

Q:LangChain 在 2026 年是否仍然相關,或者有什麼東西取代了它?

答:LangChain 非常活躍,但它已經發生了顯著的演變。 2026 年的核心價值是用於代理編排的 LangGraph 和用於可觀察性的 LangSmith,而不是 2023 年時代的鏈抽象。整合庫 (langchain-community) 對於連接到數十個 LLM 提供者和向量儲存仍然很有用。 CrewAI 和 AutoGen 等專案提供了替代方案,但 LangGraph 擁有最多的生產部署和最佳的可觀察性工具鏈。

Q:我需要了解圖形/狀態機才能使用 LangGraph 嗎?

A:你需要心智模型,但不需要深入的CS理論。如果您可以將代理工作流程視為“由箭頭連接的框,其中每個框執行某項操作,每個箭頭決定下一步去哪裡”,那麼您已經足夠了。 LangGraph API 直接對應到這個心理模型。大多數開發人員透過官方教程在幾個小時內就能掌握它。

Q:LangGraph 代理程式如何處理跨越數小時或數天的長時間運行任務?

答:這就是 LangGraph 的檢查點的閃光點。每個步驟都會將狀態保存到持久性儲存(SQLite、Postgres、Redis)。如果您的進程崩潰、重新啟動,或者您故意暫停以供人工審核,代理程式將使用 thread_id 從其停止的位置準確恢復。這是任何比單一 HTTP 請求壽命更長的代理工作流程背後的架構。

Q:2026 年與 LangGraph 代理程式一起使用的最佳 LLM 是什麼?

答:對於使用複雜工具的生產代理,GPT-4o、Claude 3.7 Sonnet 和 Gemini 2.5 Pro 是表現最好的。對於延遲敏感或成本敏感的工作負載,GPT-4o-mini 和 Claude 3.5 Haiku 達到了良好的平衡。對於完全本地/私有部署,Llama 3.3 70B 和 Qwen 2.5 72B 在足夠的硬體上運行時可以可靠地處理工具使用。最好的模型是最便宜的模型,可以可靠地選擇正確的工具 - 在投入模型層之前先向 LangSmith 介紹您的代理。

Q:LangGraph 與 Temporal 或 Prefect 在工作流程編排有何不同?

答:Temporal 和 Prefect 是通用工作流程引擎,其中 明確地編寫控制流。 LangGraph 是不同的: 法學碩士 在運行時動態驅動控制流決策。 LangGraph 適用於無法提前完全了解下一步的工作流程 - 這取決於法學碩士在當前狀態下的最佳理由。對於確定性的、完全預先指定的工作流程,Temporal/Prefect 更為合適。在實務中,許多生產系統同時使用:LangGraph 用於代理決策層,Temporal 用於調度和觸發作業。

Q:我可以在沒有 LangChain 的其他抽象的情況下使用 LangGraph 嗎?

答:是的。 LangGraph 設計為可與普通 LangChain 核心(最小訊息/工具原語)一起使用,而無需匯入完整的 langchain 套件。如果您願意,您也可以將 LangGraph 與原始 OpenAI/Anthropic SDK 呼叫一起使用 - 圖形和狀態機機制獨立於您如何呼叫 LLM。

Q:LangGraph 雲端/平台產品與自架有何不同?

答:LangGraph 平台(以前稱為 LangServe)可讓您將編譯後的圖部署為可擴展的 API,具有託管運行時、內建佇列和水平擴展功能。 LangSmith 是可觀察層。兩者都是 LangChain Inc. 提供的 SaaS 產品。自託管 LangGraph 非常簡單 - 它只是在您的基礎設施中運行的 Python/Node,並帶有用於檢查點的資料庫。大多數團隊開始自架,並在操作複雜性成為瓶頸時轉向平台。

最後的想法:LangGraph 是 2026 年的代理標準

您應該在 2026 年建置的「LangChain 代理程式」是 LangGraph 狀態機。已棄用的 AgentExecutor 時代已經結束。 LangGraph 的明確狀態、條件路由、持久檢查點和本機多代理組合並不是可有可無的——它們是您在生產中信任的任何東西的先決條件。

ReAct 模式仍然是大多數任務的正確起點。只有當單一代理明顯達到其極限時,才增加多代理的複雜性。從第一天起就用 LangSmith 來檢測一切——沒有痕蹟的調試是在需要 10 分鐘才能透過可見性進行診斷的問題上浪費一周時間的最快方法。

最重要的轉變是Notion上的:LangGraph 代理程式不是附加工具的聊天機器人。它們是有狀態、持久的系統,由法學碩士驅動控制流。像分散式系統一樣設計它們——具有故障模式、重試邏輯、狀態邊界和可觀察性——它們將為您帶來連經驗豐富的工程師都感到驚訝的可靠性。

下一步去哪裡

  • LangGraph 官方教程 — 透過「ReAct from scrap」筆記本進行操作
  • LangSmith — 在編寫任何其他程式碼之前在第一個代理程式上設定跟踪
  • LangGraph 平台文件 — 儘早了解部署模型
  • EasyClaw — 查看在生產桌面應用程式中執行的 LangGraph 代理模式

如果您正在建立內容自動化、SEO 管道或多步驟研究工作流程, EasyClaw 是查看這些模式實際應用的最快方法 - 無需花費數週時間自行連接基礎設施。