jseb4s commited on
Commit
09ce424
·
verified ·
1 Parent(s): 990e0f9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -3
app.py CHANGED
@@ -10,14 +10,14 @@ from Gradio_UI import GradioUI
10
  ##############
11
  @tool
12
  def get_game_of_thrones_character_info(character_name: str) -> str:
13
- """A tool that fetches information about a character from Game of Thrones.
14
  Args:
15
  character_name: The name of the character (e.g., 'Jon Snow').
16
  """
17
  base_url = "https://anapioficeandfire.com/api/characters"
18
 
19
  try:
20
- # Hacer la solicitud a la API
21
  params = {"name": character_name}
22
  response = requests.get(base_url, params=params)
23
  response.raise_for_status() # Lanza una excepción si hay un error HTTP
@@ -29,7 +29,7 @@ def get_game_of_thrones_character_info(character_name: str) -> str:
29
  # Tomar el primer resultado (puede haber varios con el mismo nombre)
30
  character = characters[0]
31
 
32
- # Extraer información relevante
33
  name = character.get("name", "Desconocido")
34
  gender = character.get("gender", "Desconocido")
35
  culture = character.get("culture", "Desconocido")
@@ -38,6 +38,16 @@ def get_game_of_thrones_character_info(character_name: str) -> str:
38
  titles = ", ".join(character.get("titles", [])) if character.get("titles") else "Ninguno"
39
  aliases = ", ".join(character.get("aliases", [])) if character.get("aliases") else "Ninguno"
40
 
 
 
 
 
 
 
 
 
 
 
41
  # Formatear la respuesta
42
  result = f"Información sobre {name}:\n"
43
  result += f"- Género: {gender}\n"
@@ -46,6 +56,10 @@ def get_game_of_thrones_character_info(character_name: str) -> str:
46
  result += f"- Muerte: {died}\n"
47
  result += f"- Títulos: {titles}\n"
48
  result += f"- Alias: {aliases}\n"
 
 
 
 
49
 
50
  return result
51
 
@@ -55,6 +69,50 @@ def get_game_of_thrones_character_info(character_name: str) -> str:
55
 
56
  ###############
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  @tool
59
  def get_current_time_in_timezone(timezone: str) -> str:
60
  """A tool that fetches the current local time in a specified timezone.
 
10
  ##############
11
  @tool
12
  def get_game_of_thrones_character_info(character_name: str) -> str:
13
+ """A tool that fetches information about a character from Game of Thrones, including their house.
14
  Args:
15
  character_name: The name of the character (e.g., 'Jon Snow').
16
  """
17
  base_url = "https://anapioficeandfire.com/api/characters"
18
 
19
  try:
20
+ # Hacer la solicitud a la API para buscar el personaje
21
  params = {"name": character_name}
22
  response = requests.get(base_url, params=params)
23
  response.raise_for_status() # Lanza una excepción si hay un error HTTP
 
29
  # Tomar el primer resultado (puede haber varios con el mismo nombre)
30
  character = characters[0]
31
 
32
+ # Extraer información relevante del personaje
33
  name = character.get("name", "Desconocido")
34
  gender = character.get("gender", "Desconocido")
35
  culture = character.get("culture", "Desconocido")
 
38
  titles = ", ".join(character.get("titles", [])) if character.get("titles") else "Ninguno"
39
  aliases = ", ".join(character.get("aliases", [])) if character.get("aliases") else "Ninguno"
40
 
41
+ # Obtener información de la casa (si está disponible)
42
+ houses = []
43
+ if "allegiances" in character:
44
+ for house_url in character["allegiances"]:
45
+ house_response = requests.get(house_url)
46
+ house_response.raise_for_status()
47
+ house_data = house_response.json()
48
+ house_name = house_data.get("name", "Desconocido")
49
+ houses.append(house_name)
50
+
51
  # Formatear la respuesta
52
  result = f"Información sobre {name}:\n"
53
  result += f"- Género: {gender}\n"
 
56
  result += f"- Muerte: {died}\n"
57
  result += f"- Títulos: {titles}\n"
58
  result += f"- Alias: {aliases}\n"
59
+ if houses:
60
+ result += f"- Casa(s): {', '.join(houses)}\n"
61
+ else:
62
+ result += "- Casa(s): Ninguna o desconocida\n"
63
 
64
  return result
65
 
 
69
 
70
  ###############
71
 
72
+ @tool
73
+ def recommend_books(preferences: str) -> str:
74
+ """A tool that recommends books based on a user's preferences.
75
+ Args:
76
+ preferences: A string describing the user's preferences (e.g., 'Me gustan los libros de ciencia ficción con personajes fuertes').
77
+ """
78
+ base_url = "https://openlibrary.org/search.json"
79
+
80
+ try:
81
+ # Convertir las preferencias en una consulta de búsqueda
82
+ query = preferences.replace(" ", "+") # Formatear para la URL
83
+ params = {"q": query, "fields": "title,author_name,first_publish_year,subject", "limit": 5}
84
+
85
+ # Hacer la solicitud a la API
86
+ response = requests.get(base_url, params=params)
87
+ response.raise_for_status()
88
+ data = response.json()
89
+
90
+ # Obtener los libros recomendados
91
+ books = data.get("docs", [])
92
+
93
+ if not books:
94
+ return "No se encontraron libros que coincidan con tus preferencias."
95
+
96
+ # Formatear la respuesta
97
+ result = "Aquí tienes algunas recomendaciones de libros:\n"
98
+ for i, book in enumerate(books, start=1):
99
+ title = book.get("title", "Título desconocido")
100
+ author = ", ".join(book.get("author_name", ["Autor desconocido"]))
101
+ year = book.get("first_publish_year", "Año desconocido")
102
+ subjects = ", ".join(book.get("subject", ["Género no especificado"]))[:50] # Limitar la longitud de los géneros
103
+
104
+ result += f"\n{i}. **{title}**\n"
105
+ result += f" - Autor: {author}\n"
106
+ result += f" - Año de publicación: {year}\n"
107
+ result += f" - Géneros: {subjects}...\n"
108
+
109
+ return result
110
+
111
+ except Exception as e:
112
+ return f"Error al buscar recomendaciones de libros: {str(e)}"
113
+
114
+ #############################
115
+
116
  @tool
117
  def get_current_time_in_timezone(timezone: str) -> str:
118
  """A tool that fetches the current local time in a specified timezone.