LangGraph项目中的Plan-and-Execute模式实现详解

LangGraph项目中的Plan-and-Execute模式实现详解

【免费下载链接】langchain-kr LangChain 공식 Document, Cookbook, 그 밖의 실용 예제를 바탕으로 작성한 한국어 튜토리얼입니다. 본 튜토리얼을 통해 LangChain을 더 쉽고 효과적으로 사용하는 방법을 배울 수 있습니다. 【免费下载链接】langchain-kr 项目地址: https://gitcode.com/gh_mirrors/la/langchain-kr

什么是Plan-and-Execute模式

Plan-and-Execute是一种先进的AI代理架构模式,它将复杂任务的解决过程分为两个主要阶段:规划阶段和执行阶段。这种模式借鉴了人类解决复杂问题时的思维方式——先制定整体计划,再分步执行。

与传统的ReAct模式相比,Plan-and-Execute具有以下显著优势:

  1. 显式的长期规划:通过专门规划阶段,系统能够建立更全面、更长远的任务分解方案
  2. 资源优化:规划阶段可以使用更强大的模型,执行阶段则使用轻量级模型,实现计算资源的高效分配
  3. 动态调整能力:在执行过程中可以根据实际情况重新评估和调整计划

实现Plan-and-Execute的核心组件

1. 工具定义

首先需要定义代理可以使用的工具集。在本项目中,我们使用Tavily搜索工具作为示例:

from langchain_teddynote.tools import TavilySearch
tools = [TavilySearch(max_results=3)]

2. 执行代理(Execution Agent)

执行代理负责实际执行规划阶段分解出的具体任务。我们使用ReAct风格的代理:

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model=MODEL_NAME, temperature=0)
agent_executor = create_react_agent(llm, tools, state_modifier=prompt)

3. 状态管理

定义代理的运行时状态结构:

class PlanExecute(TypedDict):
    input: Annotated[str, "User's input"]
    plan: Annotated[List[str], "Current plan"]
    past_steps: Annotated[List[Tuple], operator.add]
    response: Annotated[str, "Final response"]

4. 规划器(Planner)

规划器负责将用户输入分解为可执行的步骤序列:

class Plan(BaseModel):
    steps: Annotated[List[str], "Different steps to follow"]

planner_prompt = ChatPromptTemplate.from_messages([
    ("system", "For the given objective, come up with a simple step by step plan..."),
    ("placeholder", "{messages}")
])

planner = planner_prompt | ChatOpenAI(model=MODEL_NAME).with_structured_output(Plan)

5. 重新规划器(Replanner)

在执行过程中动态调整计划:

class Act(BaseModel):
    action: Union[Response, Plan]

replanner_prompt = ChatPromptTemplate.from_template(
    "For the given objective, update your plan based on current progress..."
)

replanner = replanner_prompt | ChatOpenAI(model=MODEL_NAME).with_structured_output(Act)

构建执行流程图

将各个组件连接成完整的工作流:

from langgraph.graph import StateGraph

workflow = StateGraph(PlanExecute)

# 添加节点
workflow.add_node("planner", plan_step)
workflow.add_node("execute", execute_step)
workflow.add_node("replan", replan_step)
workflow.add_node("final_report", generate_final_report)

# 定义边连接
workflow.add_edge(START, "planner")
workflow.add_edge("planner", "execute")
workflow.add_edge("execute", "replan")
workflow.add_edge("final_report", END)

# 条件分支
workflow.add_conditional_edges(
    "replan",
    should_end,
    {"execute": "execute", "final_report": "final_report"}
)

app = workflow.compile()

实际应用示例

让我们看一个实际查询的处理流程:

inputs = {
    "input": "Modular RAG가 기존의 Naive RAG와 어떤 차이가 있는지와 production level에서 사용하는 이점을 설명해줘"
}

result = app.invoke(inputs)

系统会按照以下步骤处理:

  1. 规划阶段:将问题分解为多个可执行的子任务
  2. 执行阶段:逐个执行子任务
  3. 重新规划:根据执行结果调整后续计划
  4. 最终报告:整合所有结果生成最终回答

总结

Plan-and-Execute模式通过明确的阶段划分,为复杂任务处理提供了更结构化的解决方案。LangGraph框架使得这种模式的实现变得简单而直观。关键优势包括:

  • 更好的任务分解能力
  • 动态调整的灵活性
  • 资源使用的优化
  • 更可靠的长期规划

这种架构特别适合需要多步骤推理和外部工具调用的复杂任务场景。通过本项目的实现,开发者可以快速构建出功能强大且可靠的AI代理系统。

【免费下载链接】langchain-kr LangChain 공식 Document, Cookbook, 그 밖의 실용 예제를 바탕으로 작성한 한국어 튜토리얼입니다. 본 튜토리얼을 통해 LangChain을 더 쉽고 효과적으로 사용하는 방법을 배울 수 있습니다. 【免费下载链接】langchain-kr 项目地址: https://gitcode.com/gh_mirrors/la/langchain-kr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值