Levin-Aleksey commited on
Commit
ed46021
·
1 Parent(s): 7202f20

Initial commit

Browse files
Files changed (1) hide show
  1. graph.py +6 -2
graph.py CHANGED
@@ -18,6 +18,7 @@ from prompts import SUPERVISOR_PROMPT, ADS_ANALYST_PROMPT
18
  class AgentState(TypedDict):
19
  messages: Annotated[list[BaseMessage], add_messages]
20
  next_node: str
 
21
 
22
  # ==========================================
23
  # 2. ИНИЦИАЛИЗАЦИЯ LLM (OpenRouter)
@@ -45,7 +46,7 @@ async def ads_node(state: AgentState):
45
  # Отдаем агенту готовый массив
46
  result = await ads_agent_runnable.ainvoke({"messages": messages_with_prompt})
47
 
48
- return {"messages": [result["messages"][-1]]}
49
 
50
  # ==========================================
51
  # 4. УЗЕЛ: СУПЕРВАЙЗЕР (Оркестратор)
@@ -54,9 +55,12 @@ class RouterOutput(BaseModel):
54
  next_node: Literal["Ads_Analyst", "FINISH"]
55
 
56
  async def supervisor_node(state: AgentState):
 
 
 
57
  messages = [SystemMessage(content=SUPERVISOR_PROMPT)] + state["messages"]
58
  response = await llm.with_structured_output(RouterOutput).ainvoke(messages)
59
- return {"next_node": response.next_node}
60
 
61
  # ==========================================
62
  # 5. СБОРКА ГРАФА СОСТОЯНИЙ
 
18
  class AgentState(TypedDict):
19
  messages: Annotated[list[BaseMessage], add_messages]
20
  next_node: str
21
+ agent_responded: bool
22
 
23
  # ==========================================
24
  # 2. ИНИЦИАЛИЗАЦИЯ LLM (OpenRouter)
 
46
  # Отдаем агенту готовый массив
47
  result = await ads_agent_runnable.ainvoke({"messages": messages_with_prompt})
48
 
49
+ return {"messages": [result["messages"][-1]], "agent_responded": True}
50
 
51
  # ==========================================
52
  # 4. УЗЕЛ: СУПЕРВАЙЗЕР (Оркестратор)
 
55
  next_node: Literal["Ads_Analyst", "FINISH"]
56
 
57
  async def supervisor_node(state: AgentState):
58
+ # Если агент уже ответил — детерминированно завершаем, без вызова LLM
59
+ if state.get("agent_responded"):
60
+ return {"next_node": "FINISH", "agent_responded": False}
61
  messages = [SystemMessage(content=SUPERVISOR_PROMPT)] + state["messages"]
62
  response = await llm.with_structured_output(RouterOutput).ainvoke(messages)
63
+ return {"next_node": response.next_node, "agent_responded": False}
64
 
65
  # ==========================================
66
  # 5. СБОРКА ГРАФА СОСТОЯНИЙ