File size: 2,111 Bytes
d5ac098
9b5b26a
 
c19d193
d5ac098
8fe992b
d5ac098
9b5b26a
 
d5ac098
 
9b5b26a
 
 
d5ac098
9b5b26a
d5ac098
9b5b26a
 
 
 
 
 
d5ac098
8c01ffb
 
d5ac098
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ae7a494
d5ac098
ae7a494
e121372
d5ac098
 
 
 
13d500a
8c01ffb
 
d5ac098
8c01ffb
861422e
 
d5ac098
 
 
 
8c01ffb
8fe992b
d5ac098
 
 
 
 
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
9b5b26a
d5ac098
 
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
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from huggingface_hub import InferenceClient

from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI


# -------------------- TOOLS --------------------

@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """Fetch current time in a timezone.
    Args:
        timezone: e.g. 'Asia/Kolkata'
    """
    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: {str(e)}"


# ✅ Image Generation Tool
client = InferenceClient(model="stabilityai/stable-diffusion-xl-base-1.0")

@tool
def image_gen_tool(prompt: str) -> str:
    """Generate an image from a text prompt.
    Args:
        prompt: Description of the image
    """
    try:
        image = client.text_to_image(prompt)
        file_path = "generated_image.png"
        image.save(file_path)
        return f"Image generated and saved at {file_path}"
    except Exception as e:
        return f"Error generating image: {str(e)}"


# -------------------- MODEL --------------------

final_answer = FinalAnswerTool()

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


# -------------------- PROMPTS --------------------

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


# -------------------- AGENT --------------------

agent = CodeAgent(
    model=model,
    tools=[
        final_answer,                    # required
        get_current_time_in_timezone,
        image_gen_tool                  # ✅ added
    ],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)


# -------------------- UI --------------------

GradioUI(agent).launch()