Spaces:
Sleeping
Sleeping
| from langgraph.graph import StateGraph, START, END | |
| from langgraph.checkpoint.memory import MemorySaver | |
| from .utils.state import State | |
| from .utils.nodes import FetchDataNode , FetchLastMessage , RetrievePossibleEndpoints , FetchParametersNode , RetrieveExactEndpoint, BackupRetrievalNode, BackupRoutingNode, QueryCheckNode | |
| fetch_last_message_node = FetchLastMessage() | |
| retrieve_api_endpoints_node = RetrievePossibleEndpoints() | |
| retrieve_exact_endpoint_node = RetrieveExactEndpoint() | |
| fetch_parameters_node = FetchParametersNode() | |
| fetch_data_node = FetchDataNode() | |
| backup_response_node = BackupRetrievalNode() | |
| query_check_node = QueryCheckNode() | |
| class ChatbotAgent: | |
| def __init__(self): | |
| self.memory = MemorySaver() | |
| def chatbot_graph(self): | |
| graph_builder= StateGraph(State) | |
| graph_builder.add_node("fetch_last_message", fetch_last_message_node.run) | |
| graph_builder.add_node("retrieve_api_endpoints", retrieve_api_endpoints_node.run) | |
| graph_builder.add_node("retrieve_exact_endpoint", retrieve_exact_endpoint_node.run) | |
| graph_builder.add_node("check_query_type", query_check_node.run) | |
| graph_builder.add_node("fetch_parameters", fetch_parameters_node.run) | |
| graph_builder.add_node("fetch_data", fetch_data_node.run) | |
| graph_builder.add_node("backup_response", backup_response_node.run) | |
| graph_builder.add_edge(START, "fetch_last_message") | |
| graph_builder.add_edge("fetch_last_message", 'retrieve_api_endpoints') | |
| graph_builder.add_edge("retrieve_api_endpoints", 'retrieve_exact_endpoint') | |
| graph_builder.add_edge("retrieve_exact_endpoint", 'fetch_parameters') | |
| # graph_builder.add_edge("check_query_type", 'fetch_parameters') | |
| graph_builder.add_edge("fetch_parameters", 'fetch_data') | |
| graph_builder.add_edge("fetch_data", END) | |
| graph_builder.add_edge("backup_response", END) | |
| graph_builder.add_conditional_edges("fetch_parameters", BackupRoutingNode().run,{'execute_backup':'backup_response', 'go_on':"fetch_data"}) | |
| graph_builder.add_conditional_edges("fetch_data", BackupRoutingNode().run,{'execute_backup':'backup_response', 'go_on':END}) | |
| return graph_builder.compile(checkpointer=self.memory) | |