From 66ca542ceea65ae5f7dc2f98da67f0fac9753f36 Mon Sep 17 00:00:00 2001 From: Annyfee <2287551746@qq.com> Date: Thu, 8 Jan 2026 11:09:35 +0800 Subject: [PATCH] fix(m09): update TypedDict to MessagesState and refine prompts --- m09_langgraph_advanced/s02_graph_as_a_tool.py | 3 +-- .../s03_multi_agent_orchestration.py | 8 ++---- .../s04_supervisor_agent_ops_system.py | 26 ++++++++++++++----- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/m09_langgraph_advanced/s02_graph_as_a_tool.py b/m09_langgraph_advanced/s02_graph_as_a_tool.py index 7313b6e..a9c5d46 100644 --- a/m09_langgraph_advanced/s02_graph_as_a_tool.py +++ b/m09_langgraph_advanced/s02_graph_as_a_tool.py @@ -5,7 +5,6 @@ from langchain.tools import tool from langchain_core.messages import HumanMessage, SystemMessage from langgraph.graph import StateGraph, MessagesState, START, END from langgraph.prebuilt import ToolNode -from typing import TypedDict # LangSmith调试 os.environ["LANGCHAIN_TRACING_V2"] = "true" # 总开关,决定启用追踪功能 @@ -21,7 +20,7 @@ llm = ChatOpenAI( # 构建子工作流 # 1.子任务状态 -class RetryState(TypedDict): +class RetryState(MessagesState): query: str attempt: int result: str diff --git a/m09_langgraph_advanced/s03_multi_agent_orchestration.py b/m09_langgraph_advanced/s03_multi_agent_orchestration.py index 3c73261..c6be999 100644 --- a/m09_langgraph_advanced/s03_multi_agent_orchestration.py +++ b/m09_langgraph_advanced/s03_multi_agent_orchestration.py @@ -3,11 +3,8 @@ from config import OPENAI_API_KEY,LANGCHAIN_API_KEY from langchain_openai import ChatOpenAI from langchain.tools import tool from langchain_core.messages import HumanMessage, SystemMessage -from langgraph.graph import StateGraph, START, END +from langgraph.graph import StateGraph, START, END, MessagesState from langgraph.prebuilt import ToolNode -from typing import TypedDict # 定义数据类型 -from typing import Annotated # 注释说明细节 -from langgraph.graph.message import add_messages # LangSmith调试 os.environ["LANGCHAIN_TRACING_V2"] = "true" # 总开关,决定启用追踪功能 @@ -39,8 +36,7 @@ def generate_code(requirement:str): # 共享状态定义 -class AgentState(TypedDict): - messages: Annotated[list,add_messages] # 自动累积对话历史 +class AgentState(MessagesState): next_speaker: str # 专家节点 diff --git a/m09_langgraph_advanced/s04_supervisor_agent_ops_system.py b/m09_langgraph_advanced/s04_supervisor_agent_ops_system.py index 21867d6..9d8ff48 100644 --- a/m09_langgraph_advanced/s04_supervisor_agent_ops_system.py +++ b/m09_langgraph_advanced/s04_supervisor_agent_ops_system.py @@ -6,8 +6,7 @@ from langchain_core.messages import HumanMessage,SystemMessage from langgraph.graph import StateGraph,START,END from langgraph.prebuilt import ToolNode from langgraph.checkpoint.memory import MemorySaver -from typing import TypedDict,Annotated -from langgraph.graph.message import add_messages +from langgraph.graph.message import add_messages, MessagesState # LangSmith调试 os.environ["LANGCHAIN_TRACING_V2"] = "true" # 总开关,决定启用追踪功能 @@ -23,7 +22,7 @@ llm = ChatOpenAI( # === 一、Graph-as-a-Tool === # === 模拟一个不稳定的SSH日志查询过程 === -class SSHState(TypedDict): +class SSHState(MessagesState): target_ip: str attempt: int logs: str @@ -82,13 +81,19 @@ def restart_service(service_name:str): # === 总控调度 + 专家分工 === # 1. 共享状态 -class AgentState(TypedDict): - messages:Annotated[list,add_messages] +class AgentState(MessagesState): next_speaker:str # 2. 专家节点 def log_expert(state:AgentState): - prompt = "你是日志分析专家,使用工具分析服务器日志,找出报错原因。回答需简洁。" + prompt = """你是日志分析专家,使用工具分析服务器日志,找出报错原因。 + + 工作规则: + 1. 如果消息中还没有日志数据,调用 analyze_server_logs 工具获取 + 2. 如果消息中已经有工具返回的日志结果,直接分析并给出结论,不要再调用工具 + 3. 回答需简洁明确 + + 请先检查对话历史中是否已有日志数据。""" messages = [SystemMessage(content=prompt)] + state['messages'] # 绑定子图工具 tools = [analyze_server_logs] @@ -96,7 +101,14 @@ def log_expert(state:AgentState): return {"messages":[response]} def ops_expert(state:AgentState): - prompt = "你是运维专家。当收到修复指令时,请立即调用 'restart_service' 工具进行修复,不要输出任何额外的解释文本。" + prompt = """你是运维专家。 + + 工作规则: + 1. 当收到修复指令且消息中有明确的故障原因时,调用 restart_service 工具进行修复 + 2. 只调用一次 restart_service 工具 + 3. 工具调用后,不要输出额外的解释文本 + + 请先检查对话历史,如果已经调用过工具,就等待结果。""" messages = [SystemMessage(content=prompt)] + state['messages'] tools = [restart_service] # 绑定敏感工具