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