极简LangGraph智能体Demo

🎯 智能体 vs 工作流的本质区别

维度 工作流 (Workflow) 智能体 (Agent)
决策权 开发者预设路径 LLM实时决策
灵活性 固定分支 动态规划
核心 流程自动化 自主思考+行动
LangGraph实现 if/else条件路由 LLM作为决策函数

🤖 LangGraph智能体Demo

python 复制代码
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from typing import TypedDict, List
import re

# 1. 定义智能体状态
class AgentState(TypedDict):
    messages: List[str]
    thought: str
    action: str
    result: str

# 2. 创建LLM
llm = ChatOpenAI(model="gpt-4", temperature=0.3)

# 3. 定义工具
tools = {
    "search": lambda query: f"搜索[{query}]的结果: 北京当前气温25度",
    "calculate": lambda expr: f"计算[{expr}] = {eval(expr)}",
    "finish": lambda ans: f"最终答案: {ans}"
}

# 4. 思考节点
def think_node(state: AgentState):
    prompt = f"""
    当前对话历史:{state['messages'][-3:] if len(state['messages']) > 3 else state['messages']}
    
    你需要决定下一步:
    1. 如果可以直接回答用户问题 → 使用 finish 工具
    2. 如果需要更多信息 → 使用 search 工具
    3. 如果需要计算 → 使用 calculate 工具
    
    你的思考过程:"""
    
    thought = llm.invoke(prompt).content
    print(f"🤔 智能体思考: {thought[:100]}...")
    
    action = llm.invoke(f"基于思考'{thought}',应该用哪个工具?只返回工具名。").content
    
    return {"thought": thought, "action": action}

# 5. 执行节点
def act_node(state: AgentState):
    action = state["action"].strip().lower()
    thought = state["thought"]
    
    last_msg = state["messages"][-1] if state["messages"] else ""
    
    if action in tools:
        if action == "search":
            param = thought.split("搜索")[-1].split("。")[0] if "搜索" in thought else last_msg
            result = tools["search"](param)
        elif action == "calculate":
            expr = re.findall(r'\d+[\+\-\*/]\d+', thought)
            param = expr[0] if expr else "25-5"
            result = tools["calculate"](param)
        else:  # finish
            result = tools["finish"](thought.split("答案:")[-1] if "答案:" in thought else thought)
    else:
        result = f"未知动作: {action}"
    
    print(f"🔧 执行动作: {action} → {result[:50]}...")
    
    new_messages = state["messages"] + [f"动作: {action}", f"结果: {result}"]
    return {"result": result, "messages": new_messages}

# 6. 决策函数
def should_continue(state: AgentState):
    if "最终答案" in state["result"] or "finish" in state["action"]:
        print("✅ 智能体认为任务完成")
        return END  # 直接返回END
    else:
        print("🔄 智能体需要进一步思考")
        return "think"

# 7. 构建工作流
workflow = StateGraph(AgentState)
workflow.add_node("think", think_node)
workflow.add_node("act", act_node)

workflow.set_entry_point("think")
workflow.add_edge("think", "act")

# 关键修正:正确设置条件边
workflow.add_conditional_edges(
    "act", 
    should_continue,
    {"think": "think"}  # 只有think需要映射,END会自动处理
)

agent = workflow.compile()

# 测试
print("=== 智能体演示开始 ===")
result = agent.invoke({
    "messages": ["用户: 先搜索北京天气,然后计算如果温度下降5度会是多少"],
    "thought": "",
    "action": "",
    "result": ""
})

print(f"\n🎯 任务完成!最终结果: {result['result']}")

🔄 智能体的核心循环

"需要更多信息"
"任务完成"
用户提问
"思考节点

LLM分析问题,规划行动"
"执行节点

调用工具完成任务"
"决策函数

LLM评估是否完成"
输出最终答案

🚀 真正的智能体特点

  1. 自主规划:LLM分析问题并制定计划
  2. 工具使用:动态选择并调用工具
  3. 自我评估:判断任务是否完成
  4. 循环迭代:持续思考-行动直到解决

💡 升级到完整智能体

要更接近AutoGPT那种智能体,只需:

python 复制代码
# 增加记忆管理
def reflect_node(state):
    """反思节点:评估之前行动,调整策略"""
    reflection = llm.invoke(f"反思之前的行动: {state['messages'][-5:]}。有什么改进?")
    return {"thought": state["thought"] + f"\n反思: {reflection}"}

# 增加目标分解
def plan_node(state):
    """规划节点:将大目标分解为小步骤"""
    plan = llm.invoke(f"将目标分解步骤: {state['messages'][0]}")
    return {"plan": plan, "current_step": 0}

# 这样就形成了完整循环:规划 → 思考 → 行动 → 反思 → 调整

真正的智能体:能够自主理解问题、规划解决方案、执行动作、评估结果并持续改进。工作流只是固定路径的自动化,而智能体具备真正的决策能力。

相关推荐
weixin_4624462316 小时前
Milvus + LangChain + Ollama 搭建生产级 RAG(含 Tag / Metadata 解析)
langchain·milvus·tag·ollama
老蒋每日coding16 小时前
AI Agent 设计模式系列(十一)—— 目标设定和监控模式
人工智能·设计模式·langchain
linmoo198617 小时前
Langchain4j 系列之二十七 - Ollama集成Deepseek
人工智能·langchain·ollama·deepseek·langchain4j
TracyCoder12318 小时前
LLM应用开发框架技术选型指南:LangChain vs LlamaIndex
langchain
nvd111 天前
LangChain LCEL 工具调用实战:从确定性链到动态 Agent
langchain
YHLG2 天前
LangChain v1.0+ 入门详解:概念、架构、组件、模板与实战
python·langchain
西柚小萌新2 天前
【人工智能:Agent】--7.Langchain短期记忆
langchain
眠りたいです2 天前
使用LangChain进行AI应用构建-快速上手,定义模型和调用工具部分
人工智能·langchain·llm·ollama·python3.13
果粒蹬i2 天前
使用 LangChain 与 CrewAI 实现 AI Agent 的多步任务规划(零基础入门)
人工智能·langchain
doll ~CJ2 天前
Large Language Model(LLM)应用开发学习实践(一)
langchain·llm·ai agent·应用开发·通义千问系列大模型