Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from langgraph.graph import StateGraph, END | |
| from langchain_core.runnables import RunnableLambda | |
| # Import tools | |
| from tools import DuckDuckGoSearchTool, WeatherInfoTool, HubStatsTool | |
| from retriever import load_guest_dataset,GuestInfoTool | |
| # Initialize all tools | |
| search_tool = DuckDuckGoSearchTool | |
| weather_tool = WeatherInfoTool | |
| hub_stats_tool = HubStatsTool | |
| guest_info_tool = GuestInfoTool | |
| # Define simple state container | |
| class AppState(dict): pass | |
| # Define tool handlers | |
| def handle_guest_info(state: AppState): | |
| query = state.get("input", "") | |
| result = guest_info_tool.invoke(query) | |
| return AppState({"input": query, "output": result}) | |
| def handle_weather(state: AppState): | |
| query = state.get("input", "") | |
| result = weather_tool.invoke(query) | |
| return AppState({"input": query, "output": result}) | |
| def handle_search(state: AppState): | |
| query = state.get("input", "") | |
| result = search_tool.invoke(query) | |
| return AppState({"input": query, "output": result}) | |
| def handle_hub_stats(state: AppState): | |
| query = state.get("input", "") | |
| result = hub_stats_tool.invoke(query) | |
| return AppState({"input": query, "output": result}) | |
| # Build the graph | |
| builder = StateGraph(AppState) | |
| builder.add_node("guest_info", RunnableLambda(handle_guest_info)) | |
| builder.add_node("weather", RunnableLambda(handle_weather)) | |
| builder.add_node("search", RunnableLambda(handle_search)) | |
| builder.add_node("hub_stats", RunnableLambda(handle_hub_stats)) | |
| # Define entry and routing logic | |
| def router(state: AppState): | |
| query = state.get("input", "").lower() | |
| if "weather" in query: | |
| return "weather" | |
| elif "guest" in query: | |
| return "guest_info" | |
| elif "hub" in query: | |
| return "hub_stats" | |
| else: | |
| return "search" | |
| builder.set_entry_point(router) | |
| builder.add_conditional_edges("guest_info", lambda _: END) | |
| builder.add_conditional_edges("weather", lambda _: END) | |
| builder.add_conditional_edges("search", lambda _: END) | |
| builder.add_conditional_edges("hub_stats", lambda _: END) | |
| # Compile the graph | |
| graph = builder.compile() | |
| # Define Gradio UI | |
| def chatbot_fn(user_input): | |
| initial_state = AppState({"input": user_input}) | |
| result = graph.invoke(initial_state) | |
| return result["output"] | |
| if __name__ == "__main__": | |
| gr.ChatInterface(fn=chatbot_fn, title="LangGraph Alfred Assistant").launch() | |