#!/usr/bin/env python3 """ Lyrics Analyzer Agent - Main Entry Point This module serves as the entry point for the Lyrics Analyzer application, which uses a system of specialized agents to search for and analyze song lyrics. """ from loguru import logger from Gradio_UI import GradioUI from smolagents import LiteLLMModel from config import setup_logger, load_api_keys, get_model_id, get_gradio_config from agents.manager_agent import create_manager_agent def main(): """ Main function to initialize and run the Lyrics Analyzer Agent. This function sets up logging, loads API keys, initializes the LLM model, and starts the Gradio UI server with the manager agent. """ # Setup logger and API keys setup_logger() load_api_keys() # Initialize the LLM model based on configuration model_id = get_model_id() logger.info(f"Initializing with model: {model_id}") model = LiteLLMModel(model_id=model_id) # Create the manager agent which will create and manage the other agents manager_agent = create_manager_agent(model) # Start the Gradio UI server logger.info("Initializing Gradio UI and launching server") # Determine if we're in test mode (local) or production (HuggingFace) # HuggingFace environment has SPACE_ID environment variable import os is_test = os.environ.get('SPACE_ID') is None gradio_config = get_gradio_config(is_test) # Launch with appropriate configuration launch_kwargs = { "debug": gradio_config["debug"], "share": gradio_config["share"] } # Add server parameters only for local testing if is_test: launch_kwargs.update({ "server_name": gradio_config["server_name"], "server_port": gradio_config["server_port"] }) GradioUI(manager_agent).launch(**launch_kwargs) logger.success("Server started successfully") # Run the application when executed directly if __name__ == "__main__": main()