File size: 2,699 Bytes
9b5b26a c19d193 6aae614 ef19f48 8fe992b ef19f48 9b5b26a ef19f48 9b5b26a ef19f48 9b5b26a ef19f48 9b5b26a ef19f48 8c01ffb ef19f48 8c01ffb 6aae614 ae7a494 e121372 ef19f48 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e 8fe992b ef19f48 9b5b26a ef19f48 |
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 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
# Importante: Asumiendo que GradioUI permite un argumento de título.
from Gradio_UI import GradioUI
# Inicialización de la herramienta de búsqueda
duckduckgo_tool = DuckDuckGoSearchTool()
# --- Herramientas personalizadas (Solo queda la de compositores) ---
@tool
def get_composer_lifespan_from_web(composer_lastname: str) -> str:
"""Busca el nombre completo, el año de nacimiento y el año de fallecimiento de un compositor de música clásica.
Args:
composer_lastname: El apellido del compositor (p. ej., 'Beethoven', 'Mozart').
INSTRUCCIÓN ESTRICTA: El Agente debe utilizar los resultados de la búsqueda en bruto para extraer el nombre, el año de nacimiento (AAAA) y el año de fallecimiento (AAAA) y generar la respuesta FINAL y ÚNICA utilizando FinalAnswerTool con el siguiente formato, incluyendo el nombre completo y los saltos de línea (\\n) entre campos:
Nombre: [Nombre Completo del Compositor]
Fecha de nacimiento: [AAAA]
Fecha de fallecimiento: [AAAA]
"""
global duckduckgo_tool
query = f"classical composer {composer_lastname} full name birth and death year"
search_result = duckduckgo_tool(query=query)
# La clave está en la interpretación del Agente de la instrucción estricta en el docstring.
return f"Consulta de búsqueda: '{query}'. \n\nResultado de búsqueda en bruto:\n\n{search_result}"
# --- Inicialización del Agente y Gradio ---
final_answer = FinalAnswerTool()
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
custom_role_conversions=None,
)
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
# La lista de herramientas ahora solo incluye las esenciales y la de compositores
tools=[final_answer, duckduckgo_tool, get_composer_lifespan_from_web],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# 2. Ajuste del GradioUI para el título:
custom_title = "Nacimiento y Muerte de Compositores. Introduce el apellido del compositor:"
# Si GradioUI no soporta directamente el argumento 'title', tendrás que modificar el archivo Gradio_UI.py.
GradioUI(agent, title=custom_title).launch() |