""" Web agent for finding and extracting song lyrics from online sources. """ from smolagents import CodeAgent, VisitWebpageTool from loguru import logger from config import load_prompt_templates from tools.search_tools import ThrottledDuckDuckGoSearchTool def create_web_agent(model): """ Create an agent specialized in web browsing and lyrics extraction. Args: model: The LLM model to use with this agent Returns: A configured CodeAgent for web searches """ # Load prompt templates prompt_templates = load_prompt_templates() # Create the throttled search tool throttled_search_tool = ThrottledDuckDuckGoSearchTool( min_delay=5.0, max_delay=10.0 ) # Create and return the agent with specialized lyrics search instructions # Customize the prompts to use our specialized lyrics_search_agent prompt custom_prompt_templates = prompt_templates.copy() # Set our special prompt as the system prompt for better instruction if 'lyrics_search_agent' in custom_prompt_templates: custom_prompt_templates['system_prompt'] = custom_prompt_templates['lyrics_search_agent'] agent = CodeAgent( model=model, tools=[throttled_search_tool, VisitWebpageTool()], name="lyrics_search_agent", description="Specialized agent for finding and extracting complete song lyrics", additional_authorized_imports=["numpy", "bs4", "json", "re"], max_steps=10, # Hardcoded from config verbosity_level=2, # Hardcoded from config prompt_templates=prompt_templates ) logger.info("Web agent (lyrics search) created successfully") return agent