Spaces:
Runtime error
Runtime error
File size: 2,594 Bytes
9b5b26a c19d193 8d66c6f 6aae614 9b5b26a 8d66c6f 9b5b26a 8c01ffb 8d66c6f df6192e 8d66c6f df6192e 8c01ffb 8d66c6f 6aae614 8d66c6f ae7a494 8d66c6f 13d500a 8c01ffb 8d66c6f 8c01ffb 8d66c6f 861422e 8d66c6f 8c01ffb 8fe992b 8d66c6f 8c01ffb 861422e 8fe992b 8d66c6f 8c01ffb | 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 | import datetime
import requests
import pytz
import yaml
from smolagents import CodeAgent, DuckDuckGoSearchTool, InferenceClientModel, load_tool, ManagedAgent
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# 1. Define your custom tools
def get_current_time_in_timezone(timezone: str) -> str:
"""A tool that fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
try:
tz = pytz.timezone(timezone)
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {timezone} is: {local_time}"
except Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
# 2. Setup the Model
'''
model = InferenceClientModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
'''
# HfApiModel is the updated standard for Hugging Face Hub inference
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, ManagedAgent
model = HfApiModel(
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
max_tokens=2096,
temperature=0.5,
token=None # It will automatically use your HF_TOKEN environment variable
)
# 3. Initialize Base Tools
final_answer = FinalAnswerTool()
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
search_tool = DuckDuckGoSearchTool()
# 4. CREATE A MANAGED AGENT (The "Worker")
# A managed agent needs a 'name' and 'description' so the manager knows how to call it.
web_search_agent = CodeAgent(
model=model,
tools=[search_tool],
name="web_search_agent",
description="Useful for searching the internet for current events, news, or specific facts."
)
managed_web_agent = ManagedAgent(
agent=web_search_agent,
name="web_search",
description="Runs web searches for you. Give it a detailed query as a task."
)
# 5. Load system prompt
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# 6. CREATE THE MANAGER AGENT
# We pass the managed_web_agent into 'managed_agents'
agent = CodeAgent(
model=model,
tools=[final_answer, get_current_time_in_timezone, image_generation_tool],
managed_agents=[managed_web_agent], # Manager can now delegate to the search agent
max_steps=10, # Increased steps to allow for delegation overhead
verbosity_level=1,
prompt_templates=prompt_templates
)
# 7. Launch UI
GradioUI(agent).launch() |