File size: 3,342 Bytes
7271451
9b5b26a
 
 
c19d193
6aae614
9b5b26a
 
7271451
 
 
 
 
 
 
814e0b7
9b5b26a
7271451
4df4ea0
9b5b26a
4df4ea0
 
 
9b5b26a
7271451
 
 
 
4df4ea0
 
 
 
 
 
7271451
 
 
9b5b26a
 
 
 
 
7271451
 
9b5b26a
 
 
 
 
 
 
 
 
8c01ffb
7271451
6aae614
ae7a494
7271451
 
 
 
 
 
 
 
 
 
8c01ffb
7271451
 
 
 
 
 
 
 
 
 
8c01ffb
7271451
8c01ffb
8fe992b
7271451
8c01ffb
 
 
 
 
 
861422e
8fe992b
 
7271451
 
 
 
 
 
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
88
89
90
91
92
93
94
95
96
97
98
99
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

# IMPORTANT: Initialize model BEFORE using it in tools
model = HfApiModel(
    max_tokens=2096,
    temperature=0.5,
    model_id='Qwen/Qwen2.5-Coder-32B-Instruct',  # it is possible that this model may be overloaded
    custom_role_conversions=None,
)

@tool
def translate_to_spanish(english: str) -> str: 
    """A tool that translates text from english to spanish using DuckDuckGoSearchTool
    Args:
        english (str): the text in english to be translated to spanish
    Returns: 
        str: the text translated into spanish
    """
    # FIXED: Proper f-string formatting and return statement
    query = f"Please translate the following text into Spanish: {english}"
    
    # Use a temporary agent for the search (reuse model for efficiency)
    temp_agent = CodeAgent(
        tools=[DuckDuckGoSearchTool()],
        model=model
    )
    results = temp_agent.run(query)
    
    # FIXED: Actually return the results
    return str(results)

@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').
    Returns:
        str: The current time in the specified timezone
    """
    try:
        # Create timezone object
        tz = pytz.timezone(timezone)
        # Get current time in that 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)}"

# Initialize tools
final_answer = FinalAnswerTool()

# FIXED: Added error handling for optional dependencies
try:
    # Import tool from Hub
    image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
    tools_list = [final_answer, translate_to_spanish, get_current_time_in_timezone, 
                  DuckDuckGoSearchTool(), image_generation_tool]
except Exception as e:
    print(f"Warning: Could not load image generation tool: {e}")
    tools_list = [final_answer, translate_to_spanish, get_current_time_in_timezone, 
                  DuckDuckGoSearchTool()]

# FIXED: Added error handling for prompts.yaml
try:
    with open("prompts.yaml", 'r') as stream:
        prompt_templates = yaml.safe_load(stream)
except FileNotFoundError:
    print("Warning: prompts.yaml not found, using default templates")
    prompt_templates = None
except Exception as e:
    print(f"Warning: Error loading prompts.yaml: {e}")
    prompt_templates = None

# Create agent
agent = CodeAgent(
    model=model,
    tools=tools_list,  # Use the dynamically created tools list
    max_steps=6,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)

# FIXED: Added error handling for Gradio launch
try:
    GradioUI(agent).launch()
except Exception as e:
    print(f"Error launching Gradio UI: {e}")
    print("You may need to install gradio or check your Gradio_UI module")