File size: 2,621 Bytes
a86048a 41985af c19d193 41985af 9b5b26a a86048a 9b5b26a a86048a 9b5b26a a86048a 74730de 9b5b26a 41985af a86048a 9b5b26a a86048a 9b5b26a 41985af 74730de 6aae614 74730de 57cb77a 74730de 57cb77a 74730de e121372 a86048a 13d500a 74730de 861422e a86048a 74730de 8c01ffb 8fe992b 74730de 8c01ffb 41985af 861422e 8fe992b a86048a 74730de e29090d |
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 |
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
@tool
def find_recycling_center(waste_type: str, location: str) -> str:
"""
Finds a recycling center for a specific type of waste in a given location.
Args:
waste_type: The type of waste to recycle (e.g., 'plastic bottles').
location: The location where the user is based (e.g., 'Moscow, Russia').
"""
recycling_info = {
"plastic bottles": "You can recycle plastic bottles at your local supermarket or recycling center.",
"paper": "Paper can be recycled at most municipal recycling centers.",
"electronics": "Electronics should be taken to specialized e-waste recycling facilities."
}
if waste_type.lower() in recycling_info:
return f"In {location}, {recycling_info[waste_type.lower()]} Please check their website for opening hours."
else:
return f"Sorry, I don't have information about recycling {waste_type} in {location}. Please contact your local waste management service for assistance."
@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., 'Europe/Moscow').
"""
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)}"
final_answer = FinalAnswerTool()
# Define AI_assistant or import it if it's from another module
AI_assistant = {
'role1': 'conversion1',
'role2': 'conversion2'
# Add other role conversions as needed
}
# Initialize the model
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=AI_assistant,
)
# Load prompt templates from a YAML file
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# Create the agent with the specified model and tools
agent = CodeAgent(
model=model,
tools=[final_answer, find_recycling_center], # Add the recycling tool here
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# Launch the Gradio UI with the agent
GradioUI(agent).launch(share=False)
|