nmvega's picture
updates
af81fb8
Raw
History Blame Contribute Delete
3.93 kB
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
import os, sys, datetime, requests, pytz, yaml
from dotenv import load_dotenv
final_answer = FinalAnswerTool()
# ============================================================================================
# Uncomment when runnng locally. Leave commented when running atop HuggingFace Hub.
# ============================================================================================
# load_dotenv(f"{os.path.expanduser("~")}/WORKSPACES.d/AGENTIC.GEN.AI.d/.env")
# ============================================================================================
# ============================================================================================
# Here's an example of a tool that does nothing, but it shows the structure you should follow.
# - Reuse this format for the DESCRIPTION, the ARGS, and the ARGS DESCRIPTIONS.
# - However, copy template and feel free to modify the tool.
# - Important: It's important to always specify the function's return type.
# ============================================================================================
@tool
def my_custom_tool(arg1:str, arg2:int) -> str:
"""An example custom tool that does nothing.
Args:
arg1: The first argument.
arg2: The second argument.
"""
return "Hello, World!"
# ============================================================================================
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""A tool that retrieves 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) # Create timezone object.
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S") # Get current time in that TZ.
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)}"
# ================================================================================
# If the agent does not answer, the model is likely overloaded. Please use a different model,
# or use the following HuggingFace Inference Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
# ================================================================================
model = HfApiModel(max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct', # Change if overloaded.
#token = os.environ['HF_TOKEN'], # Uncomment when run locally; Comment when run on HF Hub.
custom_role_conversions=None,)
# ================================================================================
# ================================================================================
# Use load_tool() from the 'smolagents' library to get ready-made tools available
# in HuggingFace Hub.
# ================================================================================
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# ================================================================================
with open("prompts.yaml", 'r') as stream: # yaml.safe_load() permits only built-in
prompt_templates = yaml.safe_load(stream) # Python datastructures to be instantiated.
agent = CodeAgent(
model=model,
tools=[final_answer, image_generation_tool], # Append your tools here. DON'T remove 'final answer'.
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates,)
GradioUI(agent).launch()