Spaces:
Sleeping
Sleeping
File size: 3,577 Bytes
5dcc0bf 9f79217 9b5b26a 8d98764 9b5b26a c19d193 6aae614 88b369f 3e25cf9 8d98764 9b5b26a 8d98764 1d69ff0 8d98764 1d69ff0 9b5b26a 8d98764 88b369f 8d98764 9f79217 8d98764 1d69ff0 8d98764 1d69ff0 9f79217 8d98764 9f79217 8d98764 88b369f 8d98764 9f79217 8d98764 1d69ff0 8d98764 1d69ff0 9f79217 8d98764 9f79217 8d98764 9f79217 8d98764 9f79217 8d98764 88b369f 544b5bc c991dfb 9f79217 8d98764 13d500a 8c01ffb 861422e a5c8aa4 8d98764 045306d 9f79217 8d98764 9f79217 88b369f 8d98764 045306d 8fe992b 8d98764 8c01ffb |
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 |
#Àlex Bescós (1709480) | Aleix Vers (1702621)
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# Herramienta para obtener la hora en una zona horaria específica
@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)}"
# Primer nuevo tool: Traductor de texto
@tool
def text_translator(text: str, target_language: str) -> str:
"""A tool that translates text to a specified target language.
Args:
text: The text to be translated.
target_language: The target language code (e.g., 'es' for Spanish, 'fr' for French).
"""
try:
try:
from translate import Translator
except ImportError:
import subprocess, sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "translate"])
from translate import Translator
translator = Translator(to_lang=target_language)
translation = translator.translate(text)
return f"Translation to {target_language}: {translation}"
except Exception as e:
return f"Translation failed: {str(e)}"
# Segundo nuevo tool: Búsqueda y resumen de información
@tool
def search_and_summarize(query: str, max_results: int = 3) -> str:
"""A tool that performs a web search and provides summaries of the top results.
Args:
query: The search query.
max_results: Maximum number of results to return (default 3).
"""
try:
search_results = DuckDuckGoSearchTool()(query)
if not search_results:
return "No results found for the query."
summaries = []
for i, result in enumerate(search_results[:max_results]):
summaries.append(f"Result {i+1}:\nTitle: {result.get('title', 'No title')}\n"
f"URL: {result.get('link', 'No URL')}\n"
f"Snippet: {result.get('snippet', 'No snippet available')}")
return "\n\n".join(summaries)
except Exception as e:
return f"Search and summarize failed: {str(e)}"
# Configuración del modelo y herramientas
final_answer = FinalAnswerTool()
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id="mistralai/Mistral-Small-3.1-24B-Instruct-2503",
custom_role_conversions=None,
)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
# Creación del agente con todas las herramientas
agent = CodeAgent(
model=model,
tools=[
final_answer,
image_generation_tool,
get_current_time_in_timezone,
text_translator,
search_and_summarize
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# Lanzamiento de la interfaz
GradioUI(agent).launch() |