feat(workflow_agent): add message-node function to handle message events in workflow
This commit is contained in:
parent
2b370a2a4d
commit
fd915824d8
@ -304,10 +304,47 @@ class WorkflowAgent(BaseAgent):
|
|||||||
"session_id": session_id,
|
"session_id": session_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Função para message-node
|
||||||
|
async def message_node_function(
|
||||||
|
state: State, node_id: str, node_data: Dict[str, Any]
|
||||||
|
) -> AsyncGenerator[State, None]:
|
||||||
|
message_data = node_data.get("message", {})
|
||||||
|
message_type = message_data.get("type", "text")
|
||||||
|
message_content = message_data.get("content", "")
|
||||||
|
|
||||||
|
print(f"\n💬 MESSAGE-NODE: {message_content}")
|
||||||
|
|
||||||
|
content = state.get("content", [])
|
||||||
|
session_id = state.get("session_id", "")
|
||||||
|
conversation_history = state.get("conversation_history", [])
|
||||||
|
|
||||||
|
# Adiciona a mensagem como um novo Event do tipo agent
|
||||||
|
new_event = Event(
|
||||||
|
author="agent",
|
||||||
|
content=Content(parts=[Part(text=message_content)]),
|
||||||
|
)
|
||||||
|
content = content + [new_event]
|
||||||
|
|
||||||
|
node_outputs = state.get("node_outputs", {})
|
||||||
|
node_outputs[node_id] = {
|
||||||
|
"message_type": message_type,
|
||||||
|
"message_content": message_content,
|
||||||
|
}
|
||||||
|
|
||||||
|
yield {
|
||||||
|
"content": content,
|
||||||
|
"status": "message_added",
|
||||||
|
"node_outputs": node_outputs,
|
||||||
|
"cycle_count": state.get("cycle_count", 0),
|
||||||
|
"conversation_history": conversation_history,
|
||||||
|
"session_id": session_id,
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"start-node": start_node_function,
|
"start-node": start_node_function,
|
||||||
"agent-node": agent_node_function,
|
"agent-node": agent_node_function,
|
||||||
"condition-node": condition_node_function,
|
"condition-node": condition_node_function,
|
||||||
|
"message-node": message_node_function,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _evaluate_condition(self, condition: Dict[str, Any], state: State) -> bool:
|
def _evaluate_condition(self, condition: Dict[str, Any], state: State) -> bool:
|
||||||
@ -708,18 +745,23 @@ class WorkflowAgent(BaseAgent):
|
|||||||
graph = await self._create_graph(ctx, self.flow_json)
|
graph = await self._create_graph(ctx, self.flow_json)
|
||||||
|
|
||||||
# 4. Prepare the initial state
|
# 4. Prepare the initial state
|
||||||
|
user_event = Event(
|
||||||
|
author="user",
|
||||||
|
content=Content(parts=[Part(text=user_message)]),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Se o histórico estiver vazio, adiciona a mensagem do usuário
|
||||||
|
conversation_history = ctx.session.events or []
|
||||||
|
if not conversation_history or (len(conversation_history) == 0):
|
||||||
|
conversation_history = [user_event]
|
||||||
|
|
||||||
initial_state = State(
|
initial_state = State(
|
||||||
content=[
|
content=[user_event],
|
||||||
Event(
|
|
||||||
author="user",
|
|
||||||
content=Content(parts=[Part(text=user_message)]),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
status="started",
|
status="started",
|
||||||
session_id=session_id,
|
session_id=session_id,
|
||||||
cycle_count=0,
|
cycle_count=0,
|
||||||
node_outputs={},
|
node_outputs={},
|
||||||
conversation_history=ctx.session.events,
|
conversation_history=conversation_history,
|
||||||
)
|
)
|
||||||
|
|
||||||
# 5. Execute the graph
|
# 5. Execute the graph
|
||||||
|
Loading…
Reference in New Issue
Block a user