Alaaeldin's picture
Update app.py
6b14cc6 verified
raw
history blame
2.77 kB
from smolagents import CodeAgent, tool
import datetime
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# Define a simple tool that doesn't rely on any external libraries
@tool
def text_analyzer(text: str) -> str:
"""Analyzes text and returns statistics about it.
Args:
text: The text to analyze.
"""
try:
# Simple word count
words = text.split()
word_count = len(words)
# Character count
char_count = len(text)
# Unique words
unique_words = len(set(word.lower() for word in words))
# Average word length
avg_word_length = sum(len(word) for word in words) / max(1, word_count)
# Most common words (top 5)
word_freq = {}
for word in words:
word_lower = word.lower()
word_freq[word_lower] = word_freq.get(word_lower, 0) + 1
common_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:5]
common_words_str = ", ".join(f"{word} ({count})" for word, count in common_words)
return f"""Text Analysis Results:
- Word count: {word_count}
- Character count: {char_count}
- Unique words: {unique_words}
- Average word length: {avg_word_length:.2f}
- Most common words: {common_words_str}
"""
except Exception as e:
return f"Error analyzing text: {str(e)}"
@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:
# 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 Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
# Set up the agent with minimal tools
final_answer = FinalAnswerTool()
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
from smolagents import HfApiModel
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
# Create agent with minimal tools
agent = CodeAgent(
model=model,
tools=[text_analyzer, get_current_time_in_timezone, final_answer],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# Launch the Gradio UI
GradioUI(agent).launch()