Spaces:
Runtime error
Runtime error
File size: 3,060 Bytes
ce696bb 9b5b26a c19d193 ce696bb 6aae614 9b5b26a ce696bb 9b5b26a 8c01ffb ce696bb 8c01ffb ce696bb ae7a494 ce696bb 0bac99f ce696bb ae7a494 e121372 ce696bb 13d500a 8c01ffb ce696bb 9b5b26a 8c01ffb ce696bb 861422e 0a91061 ce696bb 8c01ffb 8fe992b ce696bb 8e2db10 ce696bb 8c01ffb 861422e 8fe992b ce696bb 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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
import os
from bs4 import BeautifulSoup
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""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)}"
@tool
def summarize_webpage(url: str) -> str:
"""Fetches a web page at `url`, extracts visible text, and returns a summary.
Args:
url: A webpage URL to summarize.
"""
try:
resp = requests.get(url, timeout=10)
resp.raise_for_status()
except Exception as e:
return f"❌ Could not fetch {url}: {e}"
soup = BeautifulSoup(resp.text, "html.parser")
text_blocks = [p.get_text(" ", strip=True) for p in soup.find_all("p")]
text = "\n\n".join(text_blocks)
if not text:
return "❌ No readable content found on the page."
trimmed_text = text[:12000]
hf_token = os.getenv("HF_TOKEN")
if not hf_token:
return "❌ Missing HF_TOKEN in environment."
headers = {"Authorization": f"Bearer {hf_token}"}
payload = {"inputs": trimmed_text}
api_url = "https://api-inference.huggingface.co/models/facebook/bart-large-cnn"
try:
res = requests.post(api_url, headers=headers, json=payload, timeout=60)
res.raise_for_status()
return res.json()[0]["summary_text"].strip()
except Exception as e:
return f"❌ Failed to summarize page: {e}"
# Get current date.
TODAY = datetime.datetime.now().strftime("%B %d, %Y") # e.g., "April 30, 2025"
# Instantiate tools and model
final_answer = FinalAnswerTool()
search_tool = DuckDuckGoSearchTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# Load prebuilt image generation tool
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# Load prompt templates
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
prompt_templates["system_prompt"] = prompt_templates["system_prompt"].replace("{{TODAY}}", TODAY)
# Build the agent
agent = CodeAgent(
model=model,
tools=[
final_answer,
search_tool,
summarize_webpage,
image_generation_tool,
get_current_time_in_timezone
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# Launch the UI
GradioUI(agent).launch() |