Spaces:
Sleeping
Sleeping
File size: 2,632 Bytes
c216f4b 91ff904 c216f4b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
import os
import requests
from smolagents import Agent, Tool
# ------------------------
# Constants
# ------------------------
API_URL = "https://agents-course-unit4-scoring.hf.space"
# ------------------------
# Tool definitions
# ------------------------
def fetch_questions() -> list:
"""Fetch the full list of GAIA evaluation questions."""
response = requests.get(f"{API_URL}/questions", timeout=15)
response.raise_for_status()
return response.json()
def fetch_random_question() -> dict:
"""Fetch a single random GAIA question."""
response = requests.get(f"{API_URL}/random-question", timeout=15)
response.raise_for_status()
return response.json()
def fetch_file(task_id: str) -> bytes:
"""Download a file associated with a given task_id."""
response = requests.get(f"{API_URL}/files/{task_id}", timeout=15)
response.raise_for_status()
return response.content
def submit_answers(username: str, agent_code: str, answers: list) -> dict:
"""Submit the agent's answers to GAIA and return the scoring."""
payload = {
"username": username,
"agent_code": agent_code,
"answers": answers
}
response = requests.post(f"{API_URL}/submit", json=payload, timeout=60)
response.raise_for_status()
return response.json()
# ------------------------
# SmolAgent setup
# ------------------------
# Define the tools for the agent
tools = [
Tool(
name="fetch_questions",
function=fetch_questions,
description="Fetch the list of evaluation questions from GAIA."
),
Tool(
name="fetch_random_question",
function=fetch_random_question,
description="Fetch one random question from GAIA."
),
Tool(
name="fetch_file",
function=fetch_file,
description="Download a file for a given GAIA task_id."
),
Tool(
name="submit_answers",
function=submit_answers,
description="Submit the answers payload and get the score back."
),
]
def create_agent() -> Agent:
"""
Factory that returns a configured SmolAgent instance.
Assumes OPENAI_API_KEY is set in the environment for LLM access.
"""
# Initialize OpenAI key for the LLM
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
agent = Agent(
tools=tools,
llm="openai", # Use OpenAI backend
model="gpt-3.5-turbo", # LLM model
prompt_template=(
"Here is a GAIA question: {question}\n"
"Provide the exact answer, nothing else."
)
)
return agent
|