File size: 1,789 Bytes
f979b1d
 
b994147
 
 
 
 
 
 
 
 
 
f979b1d
 
 
 
 
b994147
 
 
f979b1d
b994147
 
 
 
 
 
 
 
 
 
f979b1d
 
 
 
 
b994147
 
 
 
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
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