| import os | |
| from smolagents import CodeAgent, LiteLLMModel, DuckDuckGoSearchTool, WikipediaSearchTool | |
| from tools import VisitWebpageTool, DownloadTaskAttachmentTool | |
| class TheAgent: | |
| """Agent that processes questions using LLM and various tools.""" | |
| def __init__(self): | |
| # Initialize the agent with model and tools | |
| self.agent = CodeAgent( | |
| model=LiteLLMModel( | |
| model_id="openrouter/meta-llama/llama-4-maverick-17b-128e-instruct", | |
| api_key=os.getenv("OPENROUTER_KEY") | |
| ), | |
| tools=[ | |
| DuckDuckGoSearchTool(), | |
| WikipediaSearchTool(), | |
| VisitWebpageTool(), | |
| DownloadTaskAttachmentTool() | |
| ], | |
| add_base_tools=True, | |
| additional_authorized_imports=['pandas', 'numpy', 'csv', 'subprocess', 'exec'] | |
| ) | |
| print("Agent initialized successfully.") | |
| def __call__(self, question: str) -> str: | |
| """Process a question and return the answer.""" | |
| print(f"Processing question: {question[:50]}..." if len(question) > 50 else f"Processing question: {question}") | |
| return self.agent.run(question) | |