Spaces:
Sleeping
Sleeping
| 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 | |