geronimo-pericoli commited on
Commit
46a6817
·
verified ·
1 Parent(s): 11dc663

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -16
app.py CHANGED
@@ -130,26 +130,82 @@ async def search_arxiv(
130
  'error': str(e)
131
  }
132
 
133
-
134
-
135
- def letter_counter(word, letter):
136
- """Count the occurrences of a specific letter in a word.
137
 
138
  Args:
139
- word: The word or phrase to analyze
140
- letter: The letter to count occurrences of
141
-
142
  Returns:
143
- The number of times the letter appears in the word
 
 
 
 
 
 
144
  """
145
- return word.lower().count(letter.lower())
146
-
147
- demo = gr.Interface(
148
- fn=letter_counter,
149
- inputs=["text", "text"],
150
- outputs="number",
151
- title="Letter Counter",
152
- description="Count how many times a letter appears in a word"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  )
154
 
155
  demo.launch(mcp_server=True)
 
130
  'error': str(e)
131
  }
132
 
133
+ async def list_retrievers(source: str = None) -> dict:
134
+ """
135
+ Devuelve la lista de retrievers disponibles.
136
+ Si se especifica una source y existe, filtra por ella; si no existe, devuelve todas.
137
 
138
  Args:
139
+ source (str, optional): Fuente para filtrar. Si no existe, se ignorará. Defaults to None.
140
+
 
141
  Returns:
142
+ dict: {
143
+ "retrievers": Lista de retrievers (filtrados o completos),
144
+ "count": Número total,
145
+ "status": "success"|"error",
146
+ "source_requested": source, # Muestra lo que se solicitó
147
+ "source_used": "all"|source # Muestra lo que realmente se usó
148
+ }
149
  """
150
+ try:
151
+ available = []
152
+ source_exists = source in retrievers_metadata if source else False
153
+
154
+ for current_source, indexes in retrievers_metadata.items():
155
+ # Solo filtrar si el source existe, sino mostrar todo
156
+ if source_exists and current_source != source:
157
+ continue
158
+
159
+ for index_name, metadata in indexes.items():
160
+ available.append({
161
+ "name": index_name,
162
+ "source": current_source,
163
+ "title": metadata.get("title", ""),
164
+ "description": metadata.get("description", "")
165
+ })
166
+
167
+ return {
168
+ "retrievers": available,
169
+ "count": len(available),
170
+ "status": "success",
171
+ "source_requested": source,
172
+ "source_used": source if source_exists else "all"
173
+ }
174
+ except Exception as e:
175
+ return {
176
+ "retrievers": [],
177
+ "count": 0,
178
+ "status": "error",
179
+ "error": str(e),
180
+ "source_requested": source,
181
+ "source_used": "none"
182
+ }
183
+
184
+ # Configuración de la interfaz Gradio
185
+ demo = gr.TabbedInterface(
186
+ [
187
+ gr.Interface(
188
+ fn=search_arxiv,
189
+ inputs=[
190
+ gr.Textbox(label="Términos de búsqueda", placeholder="Ej: deep learning"),
191
+ gr.Slider(1, 10, value=5, step=1, label="Número máximo de resultados")
192
+ ],
193
+ outputs=gr.JSON(label="Resultados de búsqueda"),
194
+ title="Búsqueda en ArXiv",
195
+ description="Busca artículos académicos en ArXiv por palabras clave."
196
+ ),
197
+ gr.Interface(
198
+ fn=list_retrievers,
199
+ inputs=gr.Textbox(label="Fuente (opcional)", placeholder="Dejar vacío para listar todos"),
200
+ outputs=gr.JSON(label="Lista de retrievers"),
201
+ title="Lista de Retrievers",
202
+ description="Muestra los retrievers disponibles, opcionalmente filtrados por fuente."
203
+ )
204
+ ],
205
+ [
206
+ "Búsqueda ArXiv",
207
+ "Lista de Retrievers"
208
+ ]
209
  )
210
 
211
  demo.launch(mcp_server=True)