45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
from langgraph.graph import StateGraph, END
|
|
from .nodes import (
|
|
ChatBotState,
|
|
classifier_agent,
|
|
general_info_agent,
|
|
catalog_agent,
|
|
order_agent,
|
|
)
|
|
|
|
|
|
def create_chat_graph():
|
|
# Crear el grafo con el estado tipado
|
|
graph = StateGraph(ChatBotState)
|
|
|
|
# Añadir nodos
|
|
graph.add_node("classifier", classifier_agent)
|
|
graph.add_node("general_info", general_info_agent)
|
|
graph.add_node("catalog", catalog_agent)
|
|
graph.add_node("order", order_agent)
|
|
|
|
# Configurar el punto de entrada
|
|
graph.set_entry_point("classifier")
|
|
|
|
# Función de enrutamiento basada en la categoría
|
|
def route_to_agent(state):
|
|
return state["category"]
|
|
|
|
# Añadir bordes condicionales
|
|
graph.add_conditional_edges(
|
|
"classifier",
|
|
route_to_agent,
|
|
{
|
|
"general_info": "general_info",
|
|
"catalog": "catalog",
|
|
"order": "order",
|
|
},
|
|
)
|
|
|
|
# Conectar al nodo final
|
|
graph.add_edge("general_info", END)
|
|
graph.add_edge("catalog", END)
|
|
graph.add_edge("order", END)
|
|
|
|
return graph.compile()
|