import os from datetime import datetime, timezone from dotenv import load_dotenv from colorama import Fore, Style from langchain.agents import create_agent from langchain_core.messages import HumanMessage from agent.tools.math_solver import math_solver from agent.agents.websearch import websearch_agent load_dotenv() def supervisor_agent(): """Return a supervisor agent instance with math_solver and websearch_agent.""" return create_agent( model="google_genai:gemini-3-flash-preview", tools=[math_solver, websearch_agent], system_prompt=( f"You are a supervisor agent. " f"Current time is: {datetime.now(timezone.utc).isoformat()}. " f"Your memory are out of date. " f"For math or calculation questions, use the math_solver tool. " f"For questions that need real-time, use the websearch_agent tool. " f"Provide a concise and accurate final answer." ), ) def run(query: str) -> str: """Entry point: let the supervisor agent finish the work.""" print(f"{Fore.CYAN}[Supervisor] Processing query...{Style.RESET_ALL}") agent = supervisor_agent() result = agent.invoke({"messages": [HumanMessage(content=query)]}) content = result["messages"][-1].content if isinstance(content, list): return content[0].get("text", "") return str(content) if __name__ == "__main__": agent = supervisor_agent() chat_history: list = [] while True: query = input("\nYou: ") if query.lower() in ("exit", "quit"): break chat_history.append(HumanMessage(content=query)) result = agent.invoke({"messages": chat_history}) chat_history = result["messages"] content = chat_history[-1].content if isinstance(content, list): content = content[0].get("text", "") print(f"Agent: {content}")