Spaces:
Sleeping
Sleeping
File size: 4,003 Bytes
9b5b26a c19d193 6aae614 8fe992b 9b5b26a cf6e682 9b5b26a 8c01ffb 6aae614 ae7a494 e121372 bf6d34c 29ec968 fe328e0 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b d2f6a24 8c01ffb 861422e 8fe992b 9b5b26a 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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
@tool
def construction_site_info(city: str, site_id: str = None) -> str:
"""Fetches information about current construction sites.
Args:
city: The city to check for construction sites (e.g., 'Karlsruhe').
site_id: Optional specific construction site ID to get detailed information.
"""
import requests
API_KEY = "your_construction_api_key_here"
BASE_URL = "https://api.construction-info.com/v1"
try:
if site_id:
# Fetch details for a specific construction site
URL = f"{BASE_URL}/sites/{city}/{site_id}?key={API_KEY}"
response = requests.get(URL)
data = response.json()
if "error" in data:
return f"Error: {data['error_message']}"
site = data["site"]
return f"""
Construction Site: {site['name']}
Location: {site['address']}
Type: {site['type']}
Start Date: {site['start_date']}
Expected End Date: {site['end_date']}
Current Status: {site['status']}
Traffic Impact: {site['traffic_impact']}
Contact: {site['contact_info']}
"""
else:
# Fetch list of all construction sites in the city
URL = f"{BASE_URL}/sites/{city}?key={API_KEY}"
response = requests.get(URL)
data = response.json()
if "error" in data:
return f"Error: {data['error_message']}"
sites = data["sites"]
if not sites:
return f"No construction sites found in {city}."
result = f"Found {len(sites)} construction sites in {city}:\n\n"
for site in sites:
result += f"ID: {site['id']} - {site['name']} ({site['status']})\n"
result += f"Location: {site['address']}\n"
result += f"Impact: {site['traffic_impact']}\n\n"
return result
except Exception as e:
return f"Error fetching construction site information: {str(e)}"
@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='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], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch() |