File size: 1,867 Bytes
98abdf5
ebee0e4
fef0947
 
 
2a5aa9b
 
 
 
 
fef0947
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3f6db88
 
 
 
 
 
 
fef0947
 
e6a07be
 
fef0947
 
 
 
 
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
from smolagents import LiteLLMModel, ToolCallingAgent, CodeAgent
from tools import DuckDuckGoSearchTool
import os

# --- Basic Agent Definition ---
# This is a simple agent that uses a Gemini model and DuckDuckGo search tool to answer questions.
# It passed the Final Assignment Template with a score of 55%, which is a decent baseline but it can be improved.
#
# TODO: Modify this agent to include more tools, better prompting, or other enhancements to improve performance.
#
class BasicAgent:
    def __init__(self):
        print("BasicAgent initialized.")

    def __call__(self, question: str) -> str:
        print(f"Agent received question (first 50 chars): {question[:50]}...")

        ## new agent code
        gemini_model = os.getenv(key="GEMINI_MODEL")

        model = LiteLLMModel(model_id=f"gemini/{gemini_model}", api_key=os.getenv(key="GEMINI_API_KEY"))
        agent = CodeAgent(
            model=model,
            tools=[DuckDuckGoSearchTool()]
        )
        prompt = f"""You are a general AI assistant. I will ask you a question. Report your thoughts, and 
finish your answer with the following template: FINAL ANSWER: [YOUR FINAL ANSWER]. YOUR FINAL ANSWER should 
be a number OR as few words as possible OR a comma separated list of numbers and/or strings. If you are asked 
for a number, don't use comma to write your number neither use units such as $ or percent sign unless specified 
otherwise. If you are asked for a string, don't use articles, neither abbreviations (e.g. for cities), and 
write the digits in plain text unless specified otherwise. If you are asked for a comma separated list, apply 
the above rules depending of whether the element to be put in the list is a number or a string.

{question}
"""
        answer = agent.run(prompt)
        
        print(f"Agent returning answer: {answer}")
        return answer