jvillar4650 commited on
Commit
3ac10a0
·
verified ·
1 Parent(s): 408d741

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -40
app.py CHANGED
@@ -1,41 +1,39 @@
1
- from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
2
- import datetime
3
- import requests
4
- import pytz
5
  import yaml
6
  from tools.final_answer import FinalAnswerTool
7
- # Importante: Asumiendo que GradioUI permite un argumento de título.
8
  from Gradio_UI import GradioUI
9
 
10
- # Inicialización de la herramienta de búsqueda
11
  duckduckgo_tool = DuckDuckGoSearchTool()
12
 
13
- # --- Herramientas personalizadas (Solo queda la de compositores) ---
14
-
15
  @tool
16
  def get_composer_lifespan_from_web(composer_lastname: str) -> str:
17
- """Busca el nombre completo, el año de nacimiento y el año de fallecimiento de un compositor de música clásica.
 
18
 
19
  Args:
20
  composer_lastname: El apellido del compositor (p. ej., 'Beethoven', 'Mozart').
21
-
22
- 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:
23
-
24
- Nombre: [Nombre Completo del Compositor]
25
- Fecha de nacimiento: [AAAA]
26
- Fecha de fallecimiento: [AAAA]
27
  """
28
- global duckduckgo_tool
29
-
30
  query = f"classical composer {composer_lastname} full name birth and death year"
31
 
32
- search_result = duckduckgo_tool(query=query)
 
33
 
34
- # La clave está en la interpretación del Agente de la instrucción estricta en el docstring.
35
- return f"Consulta de búsqueda: '{query}'. \n\nResultado de búsqueda en bruto:\n\n{search_result}"
36
-
37
- # --- Inicialización del Agente y Gradio ---
 
 
 
 
 
 
 
38
 
 
39
  final_answer = FinalAnswerTool()
40
 
41
  model = HfApiModel(
@@ -45,26 +43,24 @@ model = HfApiModel(
45
  custom_role_conversions=None,
46
  )
47
 
48
- image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
49
-
50
  with open("prompts.yaml", 'r') as stream:
51
  prompt_templates = yaml.safe_load(stream)
52
 
53
- agent = CodeAgent(
54
- model=model,
55
- # La lista de herramientas ahora solo incluye las esenciales y la de compositores
56
- tools=[final_answer, duckduckgo_tool, get_composer_lifespan_from_web],
57
- max_steps=6,
58
- verbosity_level=1,
59
- grammar=None,
60
- planning_interval=None,
61
- name=None,
62
- description=None,
63
- prompt_templates=prompt_templates
64
- )
65
-
66
- # 2. Ajuste del GradioUI para el título:
67
- custom_title = "Nacimiento y Muerte de Compositores. Introduce el apellido del compositor:"
68
 
69
- # Si GradioUI no soporta directamente el argumento 'title', tendrás que modificar el archivo Gradio_UI.py.
 
70
  GradioUI(agent).launch()
 
1
+ from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
 
 
 
2
  import yaml
3
  from tools.final_answer import FinalAnswerTool
 
4
  from Gradio_UI import GradioUI
5
 
6
+ # 1. Initialize the search tool (for internal use by our custom tool only)
7
  duckduckgo_tool = DuckDuckGoSearchTool()
8
 
9
+ # 2. Define Custom Tool
 
10
  @tool
11
  def get_composer_lifespan_from_web(composer_lastname: str) -> str:
12
+ """
13
+ Busca información sobre un compositor y devuelve los datos crudos para que el agente los procese.
14
 
15
  Args:
16
  composer_lastname: El apellido del compositor (p. ej., 'Beethoven', 'Mozart').
 
 
 
 
 
 
17
  """
18
+ # Usamos la herramienta de búsqueda inicializada arriba
 
19
  query = f"classical composer {composer_lastname} full name birth and death year"
20
 
21
+ # Ejecutamos la búsqueda
22
+ search_result = duckduckgo_tool.forward(query)
23
 
24
+ return f"""
25
+ RESULTADOS DE BÚSQUEDA:
26
+ {search_result}
27
+
28
+ INSTRUCCIÓN OBLIGATORIA PARA EL AGENTE:
29
+ Usa la información de arriba para responder ÚNICAMENTE con este formato exacto:
30
+
31
+ Nombre: [Nombre Completo]
32
+ Fecha de nacimiento: [Año]
33
+ Fecha de fallecimiento: [Año]
34
+ """
35
 
36
+ # 3. Setup Agent
37
  final_answer = FinalAnswerTool()
38
 
39
  model = HfApiModel(
 
43
  custom_role_conversions=None,
44
  )
45
 
46
+ # Load prompts
 
47
  with open("prompts.yaml", 'r') as stream:
48
  prompt_templates = yaml.safe_load(stream)
49
 
50
+ agent = CodeAgent(
51
+ model=model,
52
+ # CRITICAL FIX: Removed 'duckduckgo_tool' from this list.
53
+ # Now the agent MUST use 'get_composer_lifespan_from_web'.
54
+ tools=[final_answer, get_composer_lifespan_from_web],
55
+ max_steps=6,
56
+ verbosity_level=1,
57
+ grammar=None,
58
+ planning_interval=None,
59
+ name=None,
60
+ description=None,
61
+ prompt_templates=prompt_templates
62
+ )
 
 
63
 
64
+ # 4. Launch UI
65
+ # Removed 'title' argument to prevent the previous crash
66
  GradioUI(agent).launch()