Spaces:
Sleeping
Sleeping
| # Clean, simple agent.py - let the LLM choose | |
| from langgraph.graph import StateGraph, END | |
| from typing import TypedDict | |
| from agent.nodes import ( | |
| AgentState, | |
| SmartRouter, # Our new simple LLM-driven router | |
| # Keep your existing working nodes | |
| CalculatorNode, | |
| WebSearchNode, | |
| DataExtractionNode, | |
| ImageExtractionNode, | |
| AudioExtractionNode, | |
| VideoExtractionNode, | |
| MultiStepNode, | |
| AnswerRefinementNode, | |
| ) | |
| # Simple workflow - let the LLM decide everything | |
| workflow = StateGraph(AgentState) | |
| # Available execution nodes | |
| execution_nodes = [ | |
| "CalculatorNode", | |
| "WebSearchNode", | |
| "DataExtractionNode", | |
| "ImageExtractionNode", | |
| "AudioExtractionNode", | |
| "VideoExtractionNode", | |
| "MultiStepNode", | |
| ] | |
| # Add the smart router | |
| workflow.add_node("SmartRouter", SmartRouter) | |
| # Add all execution nodes | |
| for node in execution_nodes: | |
| workflow.add_node(node, globals()[node]) | |
| # Add refinement | |
| workflow.add_node("AnswerRefinementNode", AnswerRefinementNode) | |
| # Simple flow: Router -> Execution -> Refinement -> Done | |
| workflow.set_conditional_entry_point(SmartRouter, {node: node for node in execution_nodes}) | |
| # All execution nodes go to refinement | |
| for node in execution_nodes: | |
| workflow.add_edge(node, "AnswerRefinementNode") | |
| workflow.add_edge("AnswerRefinementNode", END) | |
| app = workflow.compile() |