| from smolagents import CodeAgent, LiteLLMModel |
| import os |
| from cloudpathlib import AnyPath |
| from google.genai import types |
|
|
| from tools import initialize_all_available_tools |
|
|
|
|
| class MyAgent: |
| def __init__(self, verbosity_level=0): |
| model = LiteLLMModel( |
| model_id="gemini/gemini-2.0-flash-lite", |
| api_key=os.environ.get('GOOGLE_API_KEY') |
| ) |
| tools = initialize_all_available_tools() |
|
|
| self.agent = CodeAgent( |
| tools=tools, |
| model=model, |
| max_steps=10, |
| verbosity_level=verbosity_level |
| ) |
| |
| with AnyPath("gaia_prompt.txt").open("r", encoding='utf-8') as f: |
| self.gaia_prompt = f.read() |
|
|
| def get_answer(self, question, additional_data: dict | None = None): |
|
|
| prompt = self.make_prompt(question) |
| additional_args = self.make_additional_args(additional_data) |
|
|
| answer = self.agent.run(prompt, additional_args=additional_args) |
|
|
| answer = str(answer) |
|
|
| fa_tmlp = "FINAL ANSWER:" |
| if answer.startswith(fa_tmlp): |
| answer = answer[len(fa_tmlp):] |
| return answer.strip() |
| |
| def make_prompt(self, question): |
| return self.gaia_prompt + '\n' + question |
| |
| def make_additional_args(self, additional_data: dict | None = None): |
| if additional_data is None: |
| return None |
| |
| return {"additional_file": types.Part.from_bytes( |
| data=additional_data['content'], |
| mime_type=additional_data['Content-Type'], |
| )} |
|
|
|
|
|
|