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()