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