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 initializing.") # Logs appear to be swallowed. LOG.warning("logging BasicAgent initialized.") if model_id: self.model_id = model_id else: #self.model_id = "HuggingFaceTB/SmolLM2-1.7B-Instruct" #self.model_id = "Qwen/Qwen3-4B-FP8" self.model_id = "Qwen/Qwen3-32B" # Run locally. #self.model = smolagents.TransformersModel( # model_id=self.model_id, # max_new_tokens=32000, # ) print("BasicAgent making model.") self.model = smolagents.HfApiModel( max_tokens=32000, temperature=0.3, model_id=self.model_id, custom_role_conversions=None, ) self.tools = [ smolagents.DuckDuckGoSearchTool(), smolagents.VisitWebpageTool(), smolagents.FinalAnswerTool() ] print("BasicAgent making search tool.") 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"], ) print("BasicAgent making manager.") 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"NEW Agent received question (first 50 chars): {question[:50]}...") prompt = f"{SYSTEM_PROMPT}\n\n{question}" answer = self.manager_agent.run(prompt) print(f"NEW {answer=}") return answer