SergoVashakmadze commited on
Commit
1ddeafc
·
verified ·
1 Parent(s): 9a8c112

Update app.py

Browse files

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



@tool

def my_custom_tool(arg1: str, arg2: int) -> str:
"""A custom tool that returns a string message.

Args:
arg1: A string input representing a message or concept (e.g., "AI-Powered Web3 Capital Markets").
arg2: An integer input representing a multiplier or repetition count (e.g., 3).

Returns:
A string message that creatively uses the provided arguments.
"""
return f"What magic will you build? {arg1} repeated {arg2} times: {arg1 * arg2}"



@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:
A string with the current local time in the specified timezone or an error message.
"""
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 pytz.UnknownTimeZoneError:
return f"Error: '{timezone}' is not a valid timezone."
except Exception as e:
# Log the error or re-raise it if necessary
return f"Error fetching time for timezone '{timezone}': {str(e)}"

# Initialize the FinalAnswerTool
final_answer = FinalAnswerTool()

# Initialize the model
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
custom_role_conversions=None,
)

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

# Load prompt templates from the YAML file
try:
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
if not isinstance(prompt_templates, dict):
raise ValueError("The YAML file does not contain a dictionary.")
except FileNotFoundError:
raise FileNotFoundError("The file 'prompts.yaml' was not found.")
except yaml.YAMLError as e:
raise yaml.YAMLError(f"Error parsing 'prompts.yaml': {str(e)}")

# Create the agent with the specified tools
agent = CodeAgent(
model=model,
tools=[image_generation_tool, get_current_time_in_timezone, final_answer, DuckDuckGoSearchTool()], # Add or remove tools here
max_steps=6,
verbosity_level=1,
grammar=None, # Ensure this is intentional
planning_interval=None, # Ensure this is intentional
name=None, # Ensure this is intentional
description=None, # Ensure this is intentional
prompt_templates=prompt_templates
)

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

Files changed (1) hide show
  1. app.py +0 -65
app.py CHANGED
@@ -1,65 +0,0 @@
1
- from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
2
- import datetime
3
- import requests
4
- import pytz
5
- import yaml
6
- from tools.final_answer import FinalAnswerTool
7
-
8
- from Gradio_UI import GradioUI
9
-
10
- # Below is an example of a tool that does nothing. Amaze us with your creativity !
11
- @tool
12
- def my_cutom_tool(arg1:str, arg2:int)-> str: #it's import to specify the return type
13
- #Keep this format for the description / args / args description but feel free to modify the tool
14
- """A tool that does nothing yet
15
- Args:
16
- arg1: the first argument
17
- arg2: the second argument
18
- """
19
- return "What magic will you build ?"
20
-
21
- @tool
22
- def get_current_time_in_timezone(timezone: str) -> str:
23
- """A tool that fetches the current local time in a specified timezone.
24
- Args:
25
- timezone: A string representing a valid timezone (e.g., 'America/New_York').
26
- """
27
- try:
28
- # Create timezone object
29
- tz = pytz.timezone(timezone)
30
- # Get current time in that timezone
31
- local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
32
- return f"The current local time in {timezone} is: {local_time}"
33
- except Exception as e:
34
- return f"Error fetching time for timezone '{timezone}': {str(e)}"
35
-
36
-
37
- final_answer = FinalAnswerTool()
38
- model = HfApiModel(
39
- max_tokens=2096,
40
- temperature=0.5,
41
- model_id='https://wxknx1kg971u7k1n.us-east-1.aws.endpoints.huggingface.cloud',# it is possible that this model may be overloaded
42
- custom_role_conversions=None,
43
- )
44
-
45
-
46
- # Import tool from Hub
47
- image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
48
-
49
- with open("prompts.yaml", 'r') as stream:
50
- prompt_templates = yaml.safe_load(stream)
51
-
52
- agent = CodeAgent(
53
- model=model,
54
- tools=[final_answer], ## add your tools here (don't remove final answer)
55
- max_steps=6,
56
- verbosity_level=1,
57
- grammar=None,
58
- planning_interval=None,
59
- name=None,
60
- description=None,
61
- prompt_templates=prompt_templates
62
- )
63
-
64
-
65
- GradioUI(agent).launch()