Spaces:
Running
Running
#!/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. | |
""" | |
import os | |
from loguru import logger | |
from smolagents import LiteLLMModel | |
from agents.single_agent import create_single_agent | |
from config import ( | |
get_gradio_config, | |
get_model_id, | |
get_ollama_api_base, | |
load_api_keys, | |
setup_logger, | |
) | |
from Gradio_UI import GradioUI | |
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() | |
is_test = os.environ.get('SPACE_ID') is None | |
# If using Ollama, we need to specify the API base URL | |
# Initialize the LLM model based on configuration | |
model_id = get_model_id(use_local=is_test, provider="gemini") | |
logger.info(f"Initializing with model: {model_id}") | |
if is_test: | |
api_base = get_ollama_api_base() | |
logger.info(f"Using Ollama API base: {api_base}") | |
model = LiteLLMModel(model_id=model_id, api_base=api_base) | |
else: | |
model = LiteLLMModel(model_id=model_id) | |
# Create the manager agent which will create and manage the other agents | |
single_agent = create_single_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 | |
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(single_agent).launch(**launch_kwargs) | |
logger.success("Server started successfully") | |
# Run the application when executed directly | |
if __name__ == "__main__": | |
main() | |