Spaces:
Sleeping
Sleeping
File size: 3,214 Bytes
6d2e5d8 9b5b26a c19d193 6aae614 9b5b26a 6d2e5d8 9b5b26a 6d2e5d8 9b5b26a 6d2e5d8 9b5b26a 6d2e5d8 9b5b26a 6d2e5d8 9b5b26a 6d2e5d8 9b5b26a 6d2e5d8 8c01ffb 3622d4c 6d2e5d8 3622d4c 6d2e5d8 3622d4c 6d2e5d8 3622d4c 6d2e5d8 3622d4c 8c01ffb ae7a494 6d2e5d8 ae7a494 6d2e5d8 e121372 3622d4c 6d2e5d8 3622d4c 13d500a 8c01ffb 6d2e5d8 9b5b26a 8c01ffb 6d2e5d8 861422e 6d2e5d8 8c01ffb 8fe992b 6d2e5d8 8c01ffb 6d2e5d8 8fe992b 6d2e5d8 3622d4c |
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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# A simple example tool that currently does nothing but shows how to define a tool.
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
"""
A placeholder tool that returns a fun message.
Args:
arg1: The first argument as a string.
arg2: The second argument as an integer.
Returns:
A string message.
"""
return "What magic will you build with this tool?"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""
Returns the current local time in the specified timezone.
Args:
timezone: A valid timezone string (e.g., 'America/New_York').
Returns:
A formatted string with the current local time or an error message.
"""
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: could not fetch time for timezone '{timezone}'. Details: {e}"
@tool
def emoji_summarizer(text: str) -> str:
"""
Summarizes the input text using emojis representing key ideas.
Args:
text: Input text string.
Returns:
A string of emojis or a default emoji if no matches are found.
"""
mapping = {
"happy": "😊",
"sad": "😢",
"fire": "🔥",
"love": "❤️",
"party": "🎉",
"work": "💼",
"sleep": "😴",
"money": "💰",
"music": "🎵",
"food": "🍔",
"travel": "✈️",
"error": "❌",
"question": "❓",
}
# Basic tokenization: lowercase and split on whitespace
words = text.lower().split()
emojis = [mapping[word] for word in words if word in mapping]
if not emojis:
return "🤔 (no matching emojis found)"
return "".join(emojis)
# Initialize the final answer tool
final_answer = FinalAnswerTool()
# Initialize the language model (make sure model_id is correct and accessible)
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# Load the text-to-image generation tool from the Hugging Face hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# Load prompt templates from YAML file (make sure 'prompts.yaml' is present and valid)
with open("prompts.yaml", "r") as stream:
prompt_templates = yaml.safe_load(stream)
# Initialize the code agent with all desired tools
agent = CodeAgent(
model=model,
tools=[
final_answer,
emoji_summarizer,
image_generation_tool,
my_custom_tool,
get_current_time_in_timezone,
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates,
)
# Launch the Gradio UI to interact with the agent
GradioUI(agent).launch()
|