Spaces:
Sleeping
Sleeping
File size: 2,940 Bytes
34d197c 9d098dd 34d197c 9d098dd cc9ee3d 34d197c 9d098dd cc9ee3d 9d098dd cc9ee3d 6a0f0db cc9ee3d 9d098dd cc9ee3d 9d098dd cc9ee3d 34d197c cc9ee3d |
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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
|