File size: 2,424 Bytes
7a0f83f
9b5b26a
 
 
c19d193
6aae614
9b5b26a
 
7a0f83f
9b5b26a
7a0f83f
 
9b5b26a
7a0f83f
 
9b5b26a
7a0f83f
 
 
 
 
 
 
 
 
 
 
 
9b5b26a
 
 
7a0f83f
9b5b26a
7a0f83f
9b5b26a
 
 
 
7a0f83f
9b5b26a
7a0f83f
8c01ffb
7a0f83f
6aae614
e121372
7a0f83f
 
 
 
13d500a
8c01ffb
7a0f83f
9b5b26a
7a0f83f
8c01ffb
7a0f83f
861422e
 
7a0f83f
 
8c01ffb
8fe992b
7a0f83f
 
 
 
 
 
 
8c01ffb
 
861422e
8fe992b
 
7a0f83f
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
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

# Custom Inspiration Quote Generator Tool
@tool
def inspirational_quote_generator(theme: str, intensity: int) -> str:
    """Generates inspirational quotes based on theme and intensity level
    Args:
        theme: Main theme of the quote (e.g., 'success', 'perseverance')
        intensity: Energy level of the quote (1-5 scale, 5 being most intense)
    """
    intensity_levels = {
        1: ["Progress gently", "Step by step", "Slow and steady"],
        2: ["Keep trying", "Stay focused", "Gradual progress"],
        3: ["Push forward", "Maintain your energy", "Stay determined"],
        4: ["Be unstoppable", "Give it your all", "Leave nothing behind"],
        5: ["Energy explosion!", "Reach the peak!", "Break all limits!"]
    }
    
    import random
    selected_phrase = random.choice(intensity_levels.get(intensity, [theme]))
    
    return f"Theme: {theme} ✨\nInspirational Quote: {selected_phrase}"

@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """Retrieves current time for a specific timezone
    Args:
        timezone: Valid timezone identifier (e.g., 'Asia/Tehran')
    """
    try:
        tz = pytz.timezone(timezone)
        local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
        return f"Current time in {timezone}: {local_time}"
    except Exception as e:
        return f"Error: {str(e)}"

# Initialize core components
final_answer = FinalAnswerTool()
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
    custom_role_conversions=None,
)

# Load additional tools
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
search_tool = DuckDuckGoSearchTool()

# Load prompt templates
with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)

# Configure the AI agent
agent = CodeAgent(
    model=model,
    tools=[
        final_answer,
        inspirational_quote_generator,
        get_current_time_in_timezone,
        image_generation_tool,
        search_tool
    ],
    max_steps=6,
    verbosity_level=1,
    prompt_templates=prompt_templates
)

# Launch the Gradio interface
GradioUI(agent).launch()