File size: 2,987 Bytes
a86048a
41985af
 
c19d193
41985af
9b5b26a
 
a86048a
9b5b26a
a86048a
 
 
9b5b26a
a86048a
 
9b5b26a
a86048a
 
 
 
 
 
 
 
 
 
 
 
 
41d0338
a86048a
9b5b26a
41985af
a86048a
 
9b5b26a
a86048a
9b5b26a
41985af
 
 
 
 
 
 
a86048a
6aae614
a86048a
57cb77a
 
 
 
 
 
 
 
e121372
a86048a
 
 
 
13d500a
8c01ffb
a86048a
861422e
 
a86048a
 
8c01ffb
8fe992b
a86048a
8c01ffb
 
41985af
 
 
 
861422e
8fe992b
 
a86048a
41d0338
9b5b26a
83d3303
a86048a
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
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

# Example tool that provides waste disposal recommendations
@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').
    """
    # Here you would typically call an external API or database to get the information
    # For this example, we'll return a static response
    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."
    }

    # Check if the waste type is in the dictionary
    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 to get the current local time in a specified timezone
@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)}"

# Load the final answer tool
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 with the defined AI_assistant
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()