Final_Assignment_Agent / basic_agent.py
SrcLurker's picture
not working, but hey, keep it safe.
9d098dd
raw
history blame
2.91 kB
import os
import logging
import sys
import smolagents
LOG = logging.getLogger(__name__)
SYSTEM_PROMPT = """
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.
Take the time to plan the steps to reach the solution. Show the steps and then execute the steps.
"""
# --- Basic Agent Definition ---
# ----- THIS IS WERE YOU CAN BUILD WHAT YOU WANT ------
class BasicAgent:
def __init__(self, model_id=None):
print("BasicAgent initialized.")
LOG.warning("logging BasicAgent initialized.")
if model_id:
self.model_id = model_id
else:
self.model_id = "HuggingFaceTB/SmolLM2-1.7B-Instruct"
# Run locally.
self.model = smolagents.TransformersModel(
model_id=self.model_id,
max_new_tokens=8000,
)
#self.model = smolagents.HfApiModel(
# max_tokens=8000,
# temperature=0.1,
# model_id=self.model_id,
# custom_role_conversions=None,
# )
ddg = smolagents.DuckDuckGoSearchTool()
self.tools = [smolagents.DuckDuckGoSearchTool(), smolagents.VisitWebpageTool(), smolagents.FinalAnswerTool()]
self.search_agent = smolagents.CodeAgent(
name="search_agent",
description="Search the web",
model=self.model,
tools=self.tools,
max_steps=6,
verbosity_level=2,
planning_interval=None,
additional_authorized_imports=["duckduckgo_search"],
)
self.manager_agent = smolagents.CodeAgent(
name="manager_agent",
description="Manger of other agents",
tools=[smolagents.FinalAnswerTool()],
model=self.model,
max_steps=6,
verbosity_level=2,
planning_interval=None,
additional_authorized_imports=["duckduckgo_search"],
managed_agents=[self.search_agent]
)
def __call__(self, question: str) -> str:
print(f"Agent received question (first 50 chars): {question[:50]}...")
prompt = f"{SYSTEM_PROMPT}\n\n{question}"
answer = self.manager_agent.run(prompt)
LOG.warning(f"{answer=}")
return answer