File size: 2,561 Bytes
bfa6896
9b5b26a
 
c19d193
6aae614
9b5b26a
bfa6896
 
9b5b26a
358dd78
 
 
9b5b26a
358dd78
9b5b26a
358dd78
 
 
 
 
 
 
 
 
 
 
 
bfa6896
 
358dd78
bfa6896
 
 
 
 
 
 
358dd78
bfa6896
9b5b26a
 
 
bfa6896
9b5b26a
 
 
 
 
 
 
 
 
8c01ffb
bfa6896
6aae614
ae7a494
bfa6896
e121372
bfa6896
 
 
 
13d500a
8c01ffb
bfa6896
9b5b26a
8c01ffb
bfa6896
861422e
 
bfa6896
 
8c01ffb
8fe992b
bfa6896
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
bfa6896
 
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
87
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI

# Tool 1: Solve Python coding problems and explain the solution
@tool
def solve_code_problem_with_explanation(problem_statement: str) -> str:
    """A tool that solves basic Python coding problems and explains the solution using the Qwen model.
    
    Args:
        problem_statement: A description of a Python problem to solve (e.g., 'Write a function to check if a number is prime.')
    """
    try:
        prompt = f"""You are a helpful AI assistant that solves Python coding problems and explains the solution.

Problem:
{problem_statement}

Return:
1. A working Python function.
2. A short explanation of how the function works.

Format your response like this:

# Code
<your function here>

# Explanation
<your explanation here>
"""
        response = model.run(prompt)
        return response
    except Exception as e:
        return f"Error generating solution: {str(e)}"

# Tool 2: Get current time in a timezone
@tool
def get_current_time_in_timezone(timezone: str) -> str:
    """A tool that fetches the current local time in a specified timezone.
    
    Args:
        timezone: A string representing a valid timezone (e.g., 'America/New_York').
    """
    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 Tool
final_answer = FinalAnswerTool()

# Load model (Qwen2.5 Coder)
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',  # This must be available in the Space environment
    custom_role_conversions=None,
)

# Optional: Import tool from remote tool hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)

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

# Define the agent
agent = CodeAgent(
    model=model,
    tools=[final_answer, solve_code_problem_with_explanation, get_current_time_in_timezone],
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)

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