File size: 2,965 Bytes
9b5b26a
 
 
 
c19d193
66abdba
6aae614
0d6393f
8fe992b
9b5b26a
a6c8b7a
66abdba
9221171
9b5b26a
bdd1f0b
0d6393f
f3ff996
9b5b26a
4ba6001
9b5b26a
66abdba
0d6393f
 
 
 
 
a1cc28a
0d6393f
 
 
 
 
 
 
efb56fd
0d6393f
 
 
9b5b26a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c01ffb
0719dc3
220ab2b
6aae614
ae7a494
0719dc3
ae7a494
 
66abdba
ae7a494
e121372
bf6d34c
 
bdf15fc
fe328e0
66abdba
13d500a
8c01ffb
 
9b5b26a
 
8c01ffb
861422e
 
9b5b26a
8c01ffb
8fe992b
220ab2b
666f54f
8c01ffb
 
 
 
 
861422e
8fe992b
 
9b5b26a
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
85
86
87
88
89
90
91
92
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
import os 
from tools.final_answer import FinalAnswerTool
import json

from Gradio_UI import GradioUI
from tools.visit_webpage import VisitWebpageTool


@tool
def get_movie_info(movie_title:str)-> dict: 

    """A tool that retrieves comprehensive information about a movie. This function return a dictionary contains these keys: Title, Genre, Director, Actors, Plot, Country,...
    Args:
        movie_title: A string representing a movie title (e.g., 'Parasite')
    """
    movieOmdbKey = os.getenv('movieOmdbKey')
    if not movieOmdbKey:
        print("Error: movieOmdbKey environment variable not set.")
        return None

    # Build API URL
    api_url = f"http://www.omdbapi.com/?apikey={movieOmdbKey}&t={movie_title}&plot=full"

    # Make API request
    response = requests.get(api_url)

    # Handle response
    if response.status_code == 200:
        data = response.json()
        return data
    else:
        print(f"Error: Unable to fetch movie data for '{movie_title}'. Status code: {response.status_code}")
        return None

@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:
        # 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)}"

search_on_internet = DuckDuckGoSearchTool()
visit_web_page = VisitWebpageTool()
final_answer = FinalAnswerTool()


# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud' 
llm_token = os.getenv('simpleAgentCourseToken')

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,
token = llm_token
)


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

with open("prompts.yaml", 'r') as stream:
    prompt_templates = yaml.safe_load(stream)
    
agent = CodeAgent(
    model=model,
    tools=[get_movie_info , search_on_internet, visit_web_page, final_answer], ## add your tools here (don't remove final answer)
    max_steps=15,
    verbosity_level=1,
    grammar=None,
    planning_interval=None,
    name=None,
    description=None,
    prompt_templates=prompt_templates
)


GradioUI(agent).launch()