Skip to content

Agent development using prebuilt components

LangGraph 提供了用於建立基於 agent 的應用程式的低階原語和高級預建構元件。本節重點介紹預先建置的、即用型元件,旨在幫助您快速可靠地建立代理系統,而無需從頭開始實現編排、記憶體或人工回饋處理。

What is an agent?

Agent 由三個元件組成:大型語言模型 (LLM)、一組可供使用的 tools 以及提供指令的 prompt

LLM 以循環方式運作。在每次迭代中,它會選擇一個要呼叫的工具,提供輸入,接收結果(觀察結果),並使用該觀察結果來指導下一步操作。循環持續進行,直到滿足停止條件—— 通常是當代理收集到足夠的資訊來回應使用者時

Info

Agent loop:LLM 選擇工具並使用其輸出來滿足使用者請求。

Key features

LangGraph 包含建構強大、可投入生產的代理系統所需的幾項功能:

  • Memory integration: 原生支援短期(基於會話)和長期(跨會話持久)記憶,從而實現聊天機器人和助手的狀態行為。
  • Human-in-the-loop control: 執行可以無限期暫停,以等待人工回饋——這與基於 WebSocket 的解決方案受限於即時互動不同。這使得在工作流程的任何階段都能實現非同步審批、更正或介入。
  • Streaming support: 代理狀態、模型令牌、工具輸出或組合流的即時流。
  • Deployment tooling: 包含無需基礎架構的部署工具。 LangGraph 平台支援測試、調試和部署。
  • Studio:: 用於檢查和調試工作流程的可視化 IDE。
  • 支援多種生產部署選項

High-level building blocks

LangGraph 附帶一組預先建置元件,用於實現常見的代理行為和工作流程。這些抽象建構於 LangGraph 框架之上,不僅能夠更快投入生產,還能靈活地進行進階客製化。

使用 LangGraph 進行代理開發,您可以專注於應用程式的邏輯和行為,而無需建立和維護用於狀態、記憶體和人工回饋的支援基礎架構。

Package ecosystem

高級組件被組織成幾個包,每個包都有特定的重點。

Package Description Installation
langgraph-prebuilt 用於建立代理的預先建置元件(langgraph 的一部分) pip install -U langgraph langchain
langgraph-supervisor 建構 supervisor agents 的工具 pip install -U langgraph-supervisor
langgraph-swarm 建構 swarm multi-agent 系統的工具 pip install -U langgraph-swarm
langchain-mcp-adapters 用於工具和資源整合的 MCP 伺服器接口 pip install -U langchain-mcp-adapters
langmem Agent 記憶體管理:短期長期 pip install -U langmem
agentevals 評估 agent 績效的工具程序 pip install -U agentevals

Visualize an agent graph

使用下列工具視覺化 create_react_agent 產生的 graph,並查看對應程式碼的概要。它允許您探索代理的基礎架構,該基礎架構由以下內容定義:

  • tools: 代理程式可以用來執行任務的工具(函數、API 或其他可呼叫物件)清單。
  • pre_model_hook: 在呼叫模型之前呼叫的函數。它可用於壓縮訊息或執行其他預處理任務。
  • post_model_hook: 呼叫模型後呼叫的函數。它可用於實現護欄、人機互動流程或其他後處理任務。
  • response_format: 用於約束最終輸出類型的資料結構,例如 pydantic BaseModel。

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

model = ChatOpenAI("o4-mini")

agent = create_react_agent(
    model,
)

agent.get_graph().draw_mermaid_png()

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

model = ChatOpenAI("o4-mini")

def tool() -> None:
    """Testing tool."""
    ...

agent = create_react_agent(
    model,
    tools=[tool],
)

agent.get_graph().draw_mermaid_png()

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from pydantic import BaseModel

model = ChatOpenAI("o4-mini")

def tool() -> None:
    """Testing tool."""
    ...

class ResponseFormat(BaseModel):
    """Response format for the agent."""
    result: str

agent = create_react_agent(
    model,
    tools=[tool],
    response_format=ResponseFormat,
)

agent.get_graph().draw_mermaid_png()

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from pydantic import BaseModel

model = ChatOpenAI("o4-mini")

def tool() -> None:
    """Testing tool."""
    ...

def pre_model_hook() -> None:
    """Pre-model hook."""
    ...

def post_model_hook() -> None:
    """Post-model hook."""
    ...

class ResponseFormat(BaseModel):
    """Response format for the agent."""
    result: str

agent = create_react_agent(
    model,
    tools=[tool],
    pre_model_hook=pre_model_hook,
    post_model_hook=post_model_hook,
    response_format=ResponseFormat,
)

agent.get_graph().draw_mermaid_png()