|
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool |
|
import datetime |
|
import requests |
|
import pytz |
|
import yaml |
|
from tools.final_answer import FinalAnswerTool |
|
import random |
|
|
|
from Gradio_UI import GradioUI |
|
|
|
@tool |
|
def futuristic_profession_predictor(name: str) -> str: |
|
"""Predicts the person's profession in the year 2050 based on their name. |
|
|
|
Args: |
|
name: The name of the person. |
|
""" |
|
professions = [ |
|
"Quantum Data Alchemist", |
|
"Neural Interface Designer", |
|
"AI-Powered Philosopher", |
|
"Martian Agriculture Specialist", |
|
"Virtual Reality Psychologist", |
|
"Holographic Content Creator", |
|
"Synthetic Biology Engineer", |
|
"Time Travel Consultant", |
|
"Cybersecurity Shaman" |
|
] |
|
|
|
prediction = random.choice(professions) |
|
return f"In the year 2050, {name} will be a {prediction}!" |
|
|
|
|
|
@tool |
|
def my_custom_tool(arg1:str, arg2:int)-> str: |
|
|
|
"""A tool that does nothing yet |
|
Args: |
|
arg1: the first argument |
|
arg2: the second argument |
|
""" |
|
return "What magic will you build ?" |
|
|
|
|
|
@tool |
|
def findLoveOfTwoNumbers(arg1:int, arg2:int)-> int: |
|
""" A tool that returns Love of two numbers |
|
Args: |
|
arg1: the first argument |
|
arg2: the second argument |
|
""" |
|
return arg1+arg2 - 20 |
|
|
|
|
|
@tool |
|
def personIdentifier(arg1:str)-> int: |
|
|
|
"""A Tool that identifies the person. For example, |
|
Task: Who is Ajit Kumar? |
|
Answer: He is a professor at Shiv Nadar University. |
|
|
|
Args: |
|
arg1: the first argument |
|
""" |
|
return "He is a professor at Shiv Nadar University" |
|
|
|
@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 = FinalAnswerTool() |
|
|
|
|
|
|
|
|
|
model = HfApiModel( |
|
max_tokens=2096, |
|
temperature=0.5, |
|
model_id='Qwen/Qwen2.5-Coder-32B-Instruct', |
|
custom_role_conversions=None, |
|
) |
|
|
|
|
|
|
|
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 = [final_answer, futuristic_profession_predictor, personIdentifier, findLoveOfTwoNumbers], |
|
max_steps=20, |
|
verbosity_level=1, |
|
grammar=None, |
|
planning_interval=None, |
|
name=None, |
|
description=None, |
|
prompt_templates=prompt_templates |
|
) |
|
|
|
|
|
GradioUI(agent).launch() |