Spaces:
Sleeping
Sleeping
File size: 3,929 Bytes
c0b5446 6aae614 9b5b26a c0b5446 553d231 af81fb8 553d231 9b5b26a c0b5446 9b5b26a c0b5446 9b5b26a c0b5446 9b5b26a c0b5446 9b5b26a c0b5446 9b5b26a c0b5446 9b5b26a 8c01ffb ae7a494 c0b5446 ae7a494 c0b5446 af81fb8 c0b5446 8c01ffb c0b5446 9b5b26a c0b5446 8c01ffb c0b5446 9b5b26a 8c01ffb 8fe992b c0b5446 8c01ffb c0b5446 9b5b26a c0b5446 | 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 | 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()
|