ahmedmalek185's picture
Update agent.py
f979b1d verified
from smolagents import HfApiModel, ToolCallingAgent, CodeAgent
from tools import DuckDuckGoSearchTool, get_current_time_in_timezone
import os
class BasicAgent:
def __init__(self):
print("BasicAgent initialized.")
def __call__(self, question: str) -> str:
print(f"Agent received question (first 50 chars): {question[:50]} ...")
# Using Qwen
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id = os.getenv("QWEN_MODEL"),# it is possible that this model may be overloaded
custom_role_conversions=None,
)
agent = CodeAgent(
model=model,
tools=[DuckDuckGoSearchTool(),get_current_time_in_timezone]
)
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}
"""
try:
answer = agent.run(prompt)
except Exception as e:
print(f"Agent failed: {e}")
answer = "Error: Agent could not complete the request."
print(f"Agent returning answer: {answer}")
return answer