from langchain_openai import ChatOpenAI from langchain_core.tools import tool from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate
# 5. 运行 result = agent_executor.invoke({"input": "LangChain 是什么?"}) print(result["output"])
特点:
需要手动定义提示词模板和占位符
需要 AgentExecutor 包装
没有内置状态管理
没有内置规划、文件系统、上下文压缩
适合简单的链式任务
执行流程:
sequenceDiagram
participant User as 用户
participant Executor as AgentExecutor
participant LLM as LLM
participant Tool as 工具
User->>Executor: 输入问题
loop 循环直到完成
Executor->>LLM: 发送消息 + 工具定义
LLM-->>Executor: 返回响应
alt 需要调用工具
Executor->>Tool: 执行工具调用
Tool-->>Executor: 返回工具结果
else 无需调用工具
Executor-->>User: 返回最终回答
end
end
from langchain_openai import ChatOpenAI from langchain_core.tools import tool from langgraph.graph import StateGraph, START, END, MessagesState from langgraph.prebuilt import ToolNode
sequenceDiagram
participant User as 用户
participant Agent as Deep Agent
participant Plan as 规划模块
participant Tool as 工具
participant Ctx as 上下文管理器
User->>Agent: 输入问题
Agent->>Plan: write_todos 自动规划
Plan-->>Agent: 生成待办列表
loop 按计划逐步执行
Agent->>Tool: 选择并调用工具
Tool-->>Agent: 返回结果
alt 工具结果过大
Agent->>Ctx: 自动卸载到文件系统
Ctx-->>Agent: 返回文件引用
end
alt 上下文接近85%阈值
Agent->>Ctx: 自动摘要旧消息
Ctx-->>Agent: 返回压缩后上下文
end
end
Agent-->>User: 返回最终回答