Spaces:
Paused
Paused
import gradio as gr | |
import random | |
import os | |
from smolagents import DuckDuckGoSearchTool, CodeAgent, WikipediaSearchTool, LiteLLMModel | |
from tools import DownloadTaskAttachmentTool, VisitWebpageTool | |
class MyAgent: | |
def __init__(self): | |
self.agent = CodeAgent( | |
model=LiteLLMModel(model_id="openrouter/meta-llama/llama-4-maverick:free", api_key=os.getenv("OPENROUTER_KEY")), | |
tools=[DuckDuckGoSearchTool(), WikipediaSearchTool(), VisitWebpageTool(), DownloadTaskAttachmentTool()], | |
add_base_tools=True, | |
additional_authorized_imports=['pandas', 'numpy', 'csv', 'subprocess', 'exec'] | |
) | |
print("MyAgent initialized.") | |
def __call__(self, question: str) -> str: | |
print(f"Agent received question (first 50 chars): {question[:50]}...") | |
agent_answer = self.agent.run(question) | |
print(f"Agent answer: {agent_answer}") | |
return agent_answer | |
def download_file(self, task_id: str) -> str: | |
""" | |
Downloads a file associated with the given task ID. | |
Returns the file path where the file is saved locally. | |
""" | |
file_url = f"{DEFAULT_API_URL}/files/{task_id}" | |
local_file_path = f"downloads/{task_id}.file" | |
print(f"Downloading file for task ID {task_id} from {file_url}...") | |
try: | |
response = requests.get(file_url, stream=True, timeout=15) | |
response.raise_for_status() | |
os.makedirs("downloads", exist_ok=True) | |
with open(local_file_path, "wb") as file: | |
for chunk in response.iter_content(chunk_size=8192): | |
file.write(chunk) | |
print(f"File downloaded successfully: {local_file_path}") | |
return local_file_path | |
except requests.exceptions.RequestException as e: | |
print(f"Error downloading file for task {task_id}: {e}") | |
raise | |
def launch_ui(self): | |
GradioUI(self.agent).launch() | |
# if __name__ == "__main__": | |
# my_agent = MyAgent() | |
# my_agent.launch_ui() | |