File size: 2,599 Bytes
8c6b073
 
 
cec3ac9
8c6b073
 
 
9b5b26a
 
 
c19d193
6aae614
9b5b26a
 
 
8c6b073
8179304
8c6b073
 
9b5b26a
8c6b073
9b5b26a
8c6b073
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
8c6b073
 
 
8c01ffb
8c6b073
ae7a494
 
8c6b073
cec3ac9
8c6b073
 
 
 
13d500a
8c01ffb
8c6b073
9b5b26a
8c01ffb
8c6b073
861422e
 
8c6b073
 
 
 
 
 
8c01ffb
8fe992b
8c6b073
8c01ffb
 
 
 
8c6b073
 
861422e
8fe992b
 
8c6b073
 
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
from smolagents import (
    CodeAgent,
    DuckDuckGoSearchTool,
    HfApiModel,  # ✅ Use this instead
    load_tool,
    tool
)
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI


# 🎵 Mood-based Playlist Generator Tool
@tool
def mood_playlist_generator(mood: str) -> str:
    """Generates a music playlist based on the user's mood.
    Args:
        mood: The emotional state or context (e.g., 'focus', 'joy', 'relaxation').
    """
    playlists = {
        "focus": [
            "Deep Focus – Spotify: https://open.spotify.com/playlist/37i9dQZF1DX4sWSpwq3LiO",
            "Lo-Fi Beats – Spotify: https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn"
        ],
        "joy": [
            "Have a Great Day! – Spotify: https://open.spotify.com/playlist/37i9dQZF1DX3rxVfibe1L0",
            "Feelin' Good – Spotify: https://open.spotify.com/playlist/37i9dQZF1DXdPec7aLTmlC"
        ],
        "relax": [
            "Peaceful Piano – Spotify: https://open.spotify.com/playlist/37i9dQZF1DX4sWSpwq3LiO",
            "Calm Vibes – Spotify: https://open.spotify.com/playlist/37i9dQZF1DWZqd5JICZI0u"
        ],
        "energy": [
            "Beast Mode – Spotify: https://open.spotify.com/playlist/37i9dQZF1DX76Wlfdnj7AP",
            "Power Workout – Spotify: https://open.spotify.com/playlist/37i9dQZF1DWUVpAXiEPK8P"
        ]
    }

    mood = mood.lower()
    if mood not in playlists:
        return "Sorry, I don’t have a playlist for that mood. Try: focus, joy, relax, or energy."

    return f"Here’s a playlist for when you’re feeling **{mood}**:\n" + "\n".join(playlists[mood])


# 🧠 LLM Setup
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
    custom_role_conversions=None,
)

# 🎨 Tool: Image Generation
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

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

# 🔧 Register tools
final_answer = FinalAnswerTool()
tools = [final_answer, image_generation_tool, mood_playlist_generator]

# 🤖 Create the Agent
agent = CodeAgent(
    model=model,
    tools=tools,
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name="MoodTune",
    description="An agent that generates music playlists and images based on your mood.",
    prompt_templates=prompt_templates
)

# 🚀 Launch Gradio UI
GradioUI(agent).launch()