GAIA-Agent / src /api_client.py
Mikkel Skovdal
mini update
e86c6c0
import requests
import os
from typing import List, Dict, Any
class ApiClient:
def __init__(self, api_url="https://agents-course-unit4-scoring.hf.space"):
self.api_url = api_url
self.questions_url = f"{api_url}/questions"
self.submit_url = f"{api_url}/submit"
self.files_url = f"{api_url}/files"
def get_questions(self, limit=20) -> List[Dict[str, Any]]:
limit = min(limit, 20)
limit = max(limit, 1)
response = requests.get(self.questions_url)
response.raise_for_status()
return response.json()[:limit]
def get_random_question(self) -> Dict[str, Any]:
response = requests.get(f"{self.api_url}/random-question")
response.raise_for_status()
return response.json()
def get_file(self, task_id, file_name: str) -> bytes:
# check if file already exists
file_path = os.path.join("src/temp/files", file_name)
if os.path.exists(file_path):
return file_path
# Download the file
os.makedirs(os.path.dirname(file_path), exist_ok=True)
response = requests.get(f"{self.files_url}/{task_id}", stream=True)
response.raise_for_status()
# Save the file
with open(file_path, "wb") as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"File saved to {file_path}")
return file_path
def submit_answers(
self,
username: str,
agent_code: str,
answers_payload: List[Dict[str, Any]],
) -> Dict[str, Any]:
data = {
"username": username,
"agent_code": agent_code,
"answers": answers_payload,
}
response = requests.post(self.submit_url, json=data, timeout=60)
response.raise_for_status()
return response.json()