极简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}

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

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

相关推荐
后端小张4 小时前
【TextIn大模型加速器 + 火山引擎】TextIn大模型加速器与火山引擎协同构建智能文档处理新范式
人工智能·学习·数据挖掘·langchain·tensorflow·gpt-3·火山引擎
香蕉君16 小时前
第四品——向量数据库检索优化
langchain
╭⌒若隐_RowYet——大数据19 小时前
AI Agent开发实战QuickStart
ai·langchain·agent·langgraph·langsmith·langfuse
知识进脑的肖老千啊1 天前
LangGraph简单讲解示例——State、Node、Edge
人工智能·python·ai·langchain
AI大模型1 天前
免费自学 AI?这 10 个 GitHub 宝藏项目就够了!建议收藏
langchain·llm·agent
闻道且行之1 天前
NLP 部署实操:Langchain-Chatchat API使用方法记录
服务器·自然语言处理·langchain
爱学习的uu1 天前
大模型学习1——各类模型接入langchain,模型调用,记忆管理,工具调用
人工智能·python·深度学习·学习·算法·机器学习·langchain
槿花Hibiscus2 天前
agent基础:langchain 中 pubMed api(NCBI) 的使用
langchain
拖拉斯旋风2 天前
深入理解 LangChain 中的 `.pipe()`:构建可组合 AI 应用的核心管道机制
javascript·langchain