gparitosh007's picture
Update app.py
2ac9707 verified
Raw History Blame Contribute Delete
3.02 kB
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from duckduckgo_search import DDGS
import re
from Gradio_UI import GradioUI
@tool
def get_top_places(city: str, category: str = "places", n: int = 5, budget: bool = False) -> list:
"""
Get top places based on city and category using DuckDuckGo search.
Args:
city: The name of the city to search in.
category: The search category ("places", "food", church or "museum").
n: The number of results to return.
budget: If True, modifies the query to focus on budget friendly options.
Returns:
A list of strings, each formatted as "title - URL".
"""
valid_categories = ["places", "food", "museum", "church"]
if category not in valid_categories:
raise ValueError("Invalid category. Choose from: places, food, museum.")
# Modify the query if budget-friendly options are desired.
if budget:
query = f"top {n} budget friendly {category} in {city}"
else:
query = f"top {n} {category} in {city}"
with DDGS() as ddgs:
results = ddgs.text(query, max_results=n)
return [f"{result['title']} - {result['href']}" for result in results]
@tool
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:
# Create timezone object
tz = pytz.timezone(timezone)
# Get current time in that 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)}"
final_answer = FinalAnswerTool()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id= 'https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud',
#'Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
custom_role_conversions=None,
)
# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer,get_top_places], ## add your tools here (don't remove final answer)
max_steps=5,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch()