Spaces:
Sleeping
Sleeping
File size: 3,167 Bytes
3d60a28 9b5b26a c19d193 f78d551 2bcc110 6aae614 9b5b26a 32548b2 f78d551 9b5b26a f78d551 9b5b26a f78d551 9b5b26a f78d551 9b5b26a f78d551 32548b2 f78d551 9b5b26a f78d551 9b5b26a f78d551 9b5b26a f78d551 8c01ffb 6aae614 ae7a494 e121372 f78d551 13d500a 8c01ffb f78d551 861422e f78d551 8c01ffb 8fe992b f78d551 8c01ffb 861422e 8fe992b f78d551 |
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 |
import asyncio
import datetime
import requests
import pytz
import yaml
from bs4 import BeautifulSoup # For web scraping
from PIL import Image # For image processing
from io import BytesIO
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# Load image generation tool
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# Weather Tool (using wttr.in API, no API key needed)
@tool
def get_weather(city: str) -> str:
"""Fetches the current weather for a given city.
Args:
city: The name of the city (e.g., 'London').
"""
try:
url = f"https://wttr.in/{city}?format=%C+%t+%w"
response = requests.get(url)
return f"Weather in {city}: {response.text}"
except Exception as e:
return f"Error fetching weather: {str(e)}"
# Web Scraping Tool (Extracts headlines and articles from a given news website)
@tool
def scrape_news(url: str) -> str:
"""Scrapes headlines and article text from a news website.
Args:
url: The URL of the news site.
"""
try:
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# Extracting headlines
headlines = [h.get_text() for h in soup.find_all('h1')][:5]
articles = [p.get_text() for p in soup.find_all('p')][:5]
return f"Headlines:\n" + "\n".join(headlines) + "\n\nArticles:\n" + "\n".join(articles)
except Exception as e:
return f"Error scraping news: {str(e)}"
# Image Generation Tool (uses existing text-to-image tool)
@tool
def generate_image(prompt: str) -> str:
"""Generates an image based on the given text prompt.
Args:
prompt: A description of the image to generate.
"""
try:
return image_generation_tool.run(prompt)
except Exception as e:
return f"Error generating image: {str(e)}"
# Timezone Tool (already in your code)
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""Fetches the current local time in a specified timezone.
Args:
timezone: 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: {str(e)}"
final_answer = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# Load prompt templates
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer, get_weather, scrape_news, generate_image],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch()
|