Loading...
Loading...
Compare original and translation side by side
from typing import TypedDict, Annotated
from langgraph.graph import add_messages
class AgentState(TypedDict, total=False):
messages: Annotated[list, add_messages] # Auto-merge
next_agent: str # For handoffs| Pattern | When | Agents |
|---|---|---|
| Supervisor | Clear hierarchy | 3-10 |
| Swarm | Peer collaboration | 5-15 |
| Handoff | Sequential pipeline | 2-5 |
| Router | Classify and dispatch | 2-10 |
| Master | Learning systems | 10-30+ |
@entrypoint@taskpip install langchain langgraph langgraph-supervisor langgraph-swarm langchain-mcp-adaptersAnnotated[..., add_messages]from typing import TypedDict, Annotated
from langgraph.graph import add_messages
class AgentState(TypedDict, total=False):
messages: Annotated[list, add_messages] # Auto-merge
next_agent: str # For handoffs| 模式 | 适用场景 | 智能体数量 |
|---|---|---|
| 监督者模式 | 存在明确层级结构 | 3-10 |
| 集群模式 | 对等协作场景 | 5-15 |
| 移交模式 | 顺序流水线场景 | 2-5 |
| 路由模式 | 分类与调度场景 | 2-10 |
| 主模式 | 学习型系统 | 10-30+ |
@entrypoint@taskpip install langchain langgraph langgraph-supervisor langgraph-swarm langchain-mcp-adaptersAnnotated[..., add_messages]| Pattern | Use When | Complexity | Reference |
|---|---|---|---|
| Supervisor | Clear hierarchy, centralized routing | Low-Medium | |
| Swarm | Peer collaboration, dynamic handoffs | Medium | |
| Handoff | Sequential pipelines, escalation | Low | |
| Router | Classify-and-dispatch, fan-out | Low | |
| Skills | Progressive disclosure, on-demand | Low | |
| Master | Learning systems, complex workflows | High | |
| 模式 | 适用场景 | 复杂度 | 参考文档 |
|---|---|---|---|
| 监督者模式 | 存在明确层级、集中式路由 | 低-中 | |
| 集群模式 | 对等协作、动态移交 | 中 | |
| 移交模式 | 顺序流水线、升级处理 | 低 | |
| 路由模式 | 分类调度、扇出处理 | 低 | |
| 技能模式 | 渐进式披露、按需调用 | 低 | |
| 主模式 | 学习型系统、复杂工作流 | 高 | |
from typing import TypedDict, Annotated, Dict, Any
from langchain_core.messages import BaseMessage
from langgraph.graph import add_messages
class AgentState(TypedDict, total=False):
messages: Annotated[list[BaseMessage], add_messages] # Auto-merge
agent_type: str
metadata: Dict[str, Any]
next_agent: str # For handoffsreference/state-schemas.mdfrom typing import TypedDict, Annotated, Dict, Any
from langchain_core.messages import BaseMessage
from langgraph.graph import add_messages
class AgentState(TypedDict, total=False):
messages: Annotated[list[BaseMessage], add_messages] # Auto-merge
agent_type: str
metadata: Dict[str, Any]
next_agent: str # For handoffsreference/state-schemas.mdundefinedundefined**Deep dive:** `reference/base-agent-architecture.md`, `reference/cost-optimization.md`**深度解析:** `reference/base-agent-architecture.md`, `reference/cost-optimization.md`from langgraph_supervisor import create_supervisor # pip install langgraph-supervisor
from langgraph.prebuilt import create_react_agent
research_agent = create_react_agent(model, tools=research_tools, prompt="Research specialist")
writer_agent = create_react_agent(model, tools=writer_tools, prompt="Content writer")
supervisor = create_supervisor(agents=[research_agent, writer_agent], model=model)
result = supervisor.invoke({"messages": [("user", "Write article about LangGraph")]})from langgraph_supervisor import create_supervisor # pip install langgraph-supervisor
from langgraph.prebuilt import create_react_agent
research_agent = create_react_agent(model, tools=research_tools, prompt="Research specialist")
writer_agent = create_react_agent(model, tools=writer_tools, prompt="Content writer")
supervisor = create_supervisor(agents=[research_agent, writer_agent], model=model)
result = supervisor.invoke({"messages": [("user", "Write article about LangGraph")]})from langgraph_swarm import create_swarm, create_handoff_tool # pip install langgraph-swarm
handoff_to_bob = create_handoff_tool(agent_name="Bob", description="Transfer for Python tasks")
alice = create_react_agent(model, tools=[query_db, handoff_to_bob], prompt="SQL expert")
bob = create_react_agent(model, tools=[execute_code], prompt="Python expert")
swarm = create_swarm(agents=[alice, bob], default_active_agent="Alice")from langgraph_swarm import create_swarm, create_handoff_tool # pip install langgraph-swarm
handoff_to_bob = create_handoff_tool(agent_name="Bob", description="Transfer for Python tasks")
alice = create_react_agent(model, tools=[query_db, handoff_to_bob], prompt="SQL expert")
bob = create_react_agent(model, tools=[execute_code], prompt="Python expert")
swarm = create_swarm(agents=[alice, bob], default_active_agent="Alice")from langgraph.func import entrypoint, task
from langgraph.checkpoint.memory import InMemorySaver
@task
def research(query: str) -> str:
return f"Results for: {query}"
@entrypoint(checkpointer=InMemorySaver())
def workflow(query: str) -> dict:
result = research(query).result()
return {"output": result}reference/functional-api.mdfrom langgraph.func import entrypoint, task
from langgraph.checkpoint.memory import InMemorySaver
@task
def research(query: str) -> str:
return f"Results for: {query}"
@entrypoint(checkpointer=InMemorySaver())
def workflow(query: str) -> dict:
result = research(query).result()
return {"output": result}reference/functional-api.mdfrom langchain_mcp_adapters.client import MultiServerMCPClient
async with MultiServerMCPClient(
{"tools": {"transport": "stdio", "command": "python", "args": ["./mcp_server.py"]}}
) as client:
tools = await client.get_tools()
agent = create_react_agent(model, tools=tools)reference/mcp-integration.mdfrom langchain_mcp_adapters.client import MultiServerMCPClient
async with MultiServerMCPClient(
{"tools": {"transport": "stdio", "command": "python", "args": ["./mcp_server.py"]}}
) as client:
tools = await client.get_tools()
agent = create_react_agent(model, tools=tools)reference/mcp-integration.mdfrom deep_agents import create_deep_agent
from deep_agents.backends import CompositeBackend, StateBackend, StoreBackend
backend = CompositeBackend({
"/workspace/": StateBackend(), # Ephemeral
"/memories/": StoreBackend() # Persistent
})
agent = create_deep_agent(
model=ChatAnthropic(model="claude-opus-4-6"),
backend=backend,
interrupt_on=["deploy", "delete"],
skills_dirs=["./skills/"]
)reference/deep-agents.mdfrom deep_agents import create_deep_agent
from deep_agents.backends import CompositeBackend, StateBackend, StoreBackend
backend = CompositeBackend({
"/workspace/": StateBackend(), # 临时存储
"/memories/": StoreBackend() # 持久化存储
})
agent = create_deep_agent(
model=ChatAnthropic(model="claude-opus-4-6"),
backend=backend,
interrupt_on=["deploy", "delete"],
skills_dirs=["./skills/"]
)reference/deep-agents.mdundefinedundefined**Deep dive:** `reference/guardrails.md` (input/output validation, tripwires, graph-node guardrails)**深度解析:** `reference/guardrails.md`(输入/输出验证、触发机制、图谱节点防护)reference/state-schemas.mdreference/base-agent-architecture.mdreference/tools-organization.mdreference/orchestration-patterns.mdreference/context-engineering.mdreference/cost-optimization.mdreference/functional-api.mdreference/mcp-integration.mdreference/deep-agents.mdreference/streaming-patterns.mdreference/guardrails.mdreference/testing-patterns.mdreference/observability.mdreference/deployment-patterns.mdreference/state-schemas.mdreference/base-agent-architecture.mdreference/tools-organization.mdreference/orchestration-patterns.mdreference/context-engineering.mdreference/cost-optimization.mdreference/functional-api.mdreference/mcp-integration.mdreference/deep-agents.mdreference/streaming-patterns.mdreference/guardrails.mdreference/testing-patterns.mdreference/observability.mdreference/deployment-patterns.md| Issue | Solution |
|---|---|
| State not updating | Add |
| Infinite loops | Add termination condition or set |
| High costs | Route simple tasks to cheaper models; use fallback chains |
| Context loss | Use checkpointers or memory systems |
| Wrong imports | |
| Wrong imports | |
| MCP API mismatch | Use |
| PII leakage | Add PII redaction guard node (see |
| No observability | Set |
| Fragile agents | Add guardrails: call limits, budget tripwires, structured output |
| 问题 | 解决方案 |
|---|---|
| 状态不更新 | 添加 |
| 无限循环 | 添加终止条件或在配置中设置 |
| 成本过高 | 将简单任务路由到低成本模型;使用降级链 |
| 上下文丢失 | 使用检查点或内存系统 |
| 导入错误 | |
| 导入错误 | |
| MCP API不匹配 | 使用 |
| PII泄露 | 添加PII脱敏防护节点(详见 |
| 无观测能力 | 设置 |
| 智能体不稳定 | 添加防护机制:调用次数限制、预算触发、结构化输出 |
@traced_agentget_llm_for_task(priority=...)from lang_core import traced_agent, get_llm_for_task, LLMPriority
from lang_core.middleware import budget_enforcement_middleware
@traced_agent("QualificationAgent", tags=["sales"])
async def run_qualification(data):
llm = get_llm_for_task(priority=LLMPriority.SPEED)
# ... agent logic@traced_agentget_llm_for_task(priority=...)from lang_core import traced_agent, get_llm_for_task, LLMPriority
from lang_core.middleware import budget_enforcement_middleware
@traced_agent("QualificationAgent", tags=["sales"])
async def run_qualification(data):
llm = get_llm_for_task(priority=LLMPriority.SPEED)
# ... 智能体逻辑~/.claude/skill-analytics/last-outcome-langgraph-agents.json{"ts":"[UTC ISO8601]","skill":"langgraph-agents","version":"2.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"agents_created":[n],"nodes_configured":[n],"graphs_built":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}~/.claude/skill-analytics/last-outcome-langgraph-agents.json{"ts":"[UTC ISO8601]","skill":"langgraph-agents","version":"2.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"agents_created":[n],"nodes_configured":[n],"graphs_built":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}