AI Architecture

Operadores de búsqueda web avanzados para agentes de IA y RAG

Respuesta rápida: Los operadores de búsqueda avanzados (site:, filetype:, inurl:, intitle:, lógica booleana) transforman los agentes de IA autónomos y canalizaciones RAG en motores deterministas. Al delimitar dominios, aislar formatos de archivo y filtrar rutas URL, los agentes eliminan alucinaciones, evitan spam de marketing y reducen costes de tokens hasta un 82%.

1. Introducción: Por qué la búsqueda web ingenua hace fallar a los agentes de IA

En 2026, los agentes de investigación autónomos impulsados por IA (desde herramientas para desarrolladores como Claude Code, Devin y Roo Code hasta enjambres multiagente en LangGraph y CrewAI) están limitados principalmente por la calidad del anclaje de recuperación (retrieval grounding) y no por la capacidad de razonamiento del LLM.

Cuando un agente intenta fundamentar su síntesis mediante consultas de lenguaje natural ingenuas (como buscar "how to configure mutual TLS in Envoy proxy" directamente en una API comercial), se encuentra con un problema catastrófico de relación señal/ruido:

[Consulta de lenguaje natural del agente]
         │
         ▼
[API SERP tradicional (Google / Bing / Brave)]
         │
         ├─► Resultado 1: Página de aterrizaje de marketing de 45 KB sin código
         ├─► Resultado 2: Artículo de Medium de 2021 con sintaxis obsoleta
         ├─► Resultado 3: Granja de spam SEO con respuestas alucinadas
         └─► Resultado 4: Plantilla README de GitHub sin esquemas de configuración
         │
         ▼
[Extracción mediante navegador Headless + Conversión DOM]
         │
         ▼
[35.000 tokens de HTML, banners de cookies y scripts volcados en el LLM]
         │
         ▼
[Resultado del LLM: Alucinaciones graves, pérdida de hechos, $0,18 desperdiciados]

Las búsquedas ingenuas tienen una alta exhaustividad (recall) pero una precisión desastrosa. Los motores de búsqueda priorizan métricas como el CTR y la autoridad del dominio para humanos, no los hechos técnicos estructurados que requieren las máquinas.

La búsqueda no estructurada provoca tres fallos críticos:

  1. Contaminación de la ventana de contexto: Miles de tokens de marcado irrelevante desplazan la documentación técnica esencial.
  2. Alucinaciones temporales y semánticas: El modelo asume que los primeros enlaces son infalibles, sintetizando código obsoleto.
  3. Desperdicio económico: Workflows de 10 a 30 llamadas de búsqueda consumen más de $3.00 en tokens por tarea, con latencias inaceptables de 3 a 9 segundos.

Para construir sistemas Agentic RAG empresariales confiables, las organizaciones deben tratar los motores de búsqueda como bases de datos deterministas estructuradas. Con operadores de búsqueda avanzados (site:, filetype:, inurl:, intitle:, lógica booleana y patrones como ext:asp inurl:search), los agentes filtran el 95% del ruido antes de descargar el primer byte de HTML.


2. Taxonomía de operadores de búsqueda para agentes de IA

+---------------------------------------------------------------------------------------------------------+
|                                  MATRIZ DE OPERADORES DE BÚSQUEDA                                       |
+-------------------+-----------------------------+-----------------------------+-------------------------+
| Categoría         | Patrón sintáctico           | Objetivo en el índice       | Utilidad en Agentic RAG |
+-------------------+-----------------------------+-----------------------------+-------------------------+
| Alcance de dominio| site:domain.com             | Hostname / FQDN B-Tree      | Solo doc. oficial       |
| Segmentación TLD  | site:.gov, site:.edu        | Partición de dominio TLD    | Normativas y academia   |
| Formato y MIME    | filetype:pdf, ext:json      | Índice MIME / Content-Type  | Esquemas y PDFs puros   |
| Tokens de ruta URI| inurl:api, inurl:v1         | Índice léxico de rutas      | Descubrimiento de APIs  |
| Título de página  | intitle:"Index of /"        | Metadatos de la etiqueta    | Repositorios y specs    |
| Frase exacta      | "exact error string"        | Índice posicional N-Gram    | Depuración de errores   |
| Filtro de exclusión| -inurl:blog -site:pinterest| Resta en posting lists      | Eliminar spam y blogs   |
| Lógica booleana   | (A OR B) AND (C NOT D)      | Operaciones conjuntivas     | Búsqueda multivariante  |
+-------------------+-----------------------------+-----------------------------+-------------------------+

Primitivas clave

  • site:: Restringe a dominios verificados (ej. site:docs.aws.amazon.com).
  • filetype: / ext:: Recupera directamente especificaciones en PDF, JSON o YAML sin renderizar HTML.
  • inurl:: Apunta a rutas semánticas como inurl:swagger-ui.html o inurl:changelog.
  • intitle:: Extrae términos de alta densidad dentro de la etiqueta </code>.</li> <li>Booleanos y exclusiones (<code>AND</code>, <code>OR</code>, <code>-</code>, <code>""</code>): Aíslan mensajes de error exactos y purgan blogs promocionales.</li> </ul> <hr /> <h2>3. Matriz de compatibilidad: Google vs Bing vs Brave vs Tavily</h2> <pre><code>+-----------------------------------------------------------------------------------------------------------------+ | MATRIZ DE CAPACIDADES Y LATENCIAS DE PROVEEDORES | +--------------------+----------------------+----------------------+---------------------+------------------------+ | Operador / Función | Google Search API | Bing Web Search API | Brave Search API | Tavily / Exa (AI Nat) | +--------------------+----------------------+----------------------+---------------------+------------------------+ | site: / -site: | Completo (subdominios| Completo (subdominios| Completo (subdominios| Parámetro nativo REST | | filetype: / ext: | Más de 20 formatos | Más de 12 formatos | Básico (PDF/Doc) | include_domains | | inurl: / allinurl: | Completo | Parcial | Completo | Filtro semántico | | intitle: / allin: | Completo | Completo | Completo | Filtro semántico | | Operador resta (-) | Completo | Completo | Completo | exclude_domains | | OR Booleano / | | Completo | Requiere mayúsculas | Completo | Semántico implícito | | Longitud máxima | 32 palabras / 2048 c.| 1000 caracteres | 500 c. / 25 tokens | 400 tokens (NL prompt) | | Latencia P50 (REST)| 650 ms - 1200 ms | 450 ms - 800 ms | 180 ms - 350 ms | 450 ms - 750 ms | | Coste / 1k petic. | $5.00 (vía SerpAPI) | $3.00 - $7.00 | $3.00 - $5.00 | $8.00 (Tavily Avanzado)| +--------------------+----------------------+----------------------+---------------------+------------------------+</code></pre> <hr /> <h2>4. Arquitectura del compilador de consultas para agentes</h2> <p>El agente no debe pasar texto sin procesar a la API de búsqueda, sino emplear un <strong>compilador de consultas en múltiples etapas</strong>: </p> <pre><code>[Prompt del usuario / Subtarea del agente] │ ▼ [Etapa 1: Clasificación de intención y extracción de entidades] │ ▼ [Etapa 2: Síntesis determinista de operadores (site:, inurl:)] │ ▼ [Etapa 3: Adaptación a la sintaxis del proveedor] │ ▼ [Etapa 4: Ejecución y máquina de relajación progresiva]</code></pre> <p>Si la búsqueda devuelve 0 resultados, el agente elimina primero los filtros <code>filetype:</code> e <code>inurl:</code>, y luego retira las comillas de coincidencia exacta manteniendo la restricción de dominio <code>site:</code>. </p> <hr /> <h2>5. Implementación en Python para entornos de producción</h2> <pre><code class="language-python">import httpx from pydantic import BaseModel, Field from typing import List, Dict, Any from enum import Enum class SearchConstraint(BaseModel): query: str = Field(..., description="Palabras clave principales") target_domains: List[str] = Field(default_factory=list, description="Dominios para site:") excluded_domains: List[str] = Field(default_factory=list, description="Dominios para -site:") file_extensions: List[str] = Field(default_factory=list, description="Extensiones para filetype:") url_keywords: List[str] = Field(default_factory=list, description="Tokens para inurl:") excluded_url_keywords: List[str] = Field(default_factory=list, description="Tokens para -inurl:") exact_phrases: List[str] = Field(default_factory=list, description="Frases exactas entre comillas") title_keywords: List[str] = Field(default_factory=list, description="Palabras clave para intitle:") class AgentQueryCompiler: """Compila restricciones estructuradas en sintaxis optimizada para motores de búsqueda.""" @staticmethod def compile_lexical_query(constraint: SearchConstraint) -> str: tokens: List[str] = [] for phrase in constraint.exact_phrases: cleaned = phrase.replace('"', '').strip() if cleaned: tokens.append(f'"{cleaned}"') if constraint.query.strip(): tokens.append(constraint.query.strip()) if constraint.target_domains: if len(constraint.target_domains) == 1: tokens.append(f"site:{constraint.target_domains[0]}") else: sites = " OR ".join([f"site:{d}" for d in constraint.target_domains]) tokens.append(f"({sites})") for ex in constraint.excluded_domains: tokens.append(f"-site:{ex}") if constraint.file_extensions: if len(constraint.file_extensions) == 1: tokens.append(f"filetype:{constraint.file_extensions[0]}") else: exts = " OR ".join([f"filetype:{e}" for e in constraint.file_extensions]) tokens.append(f"({exts})") for kw in constraint.url_keywords: tokens.append(f"inurl:{kw}") for ex_kw in constraint.excluded_url_keywords: tokens.append(f"-inurl:{ex_kw}") for t in constraint.title_keywords: tokens.append(f"intitle:{t}") return " ".join(tokens)</code></pre> <hr /> <h2>6. Benchmarks y casos prácticos en producción</h2> <p>Evaluación comparativa sobre 500 tareas de agentes autónomos: </p> <pre><code>+-------------------------------------------------------------------------------------------------------------+ | BENCHMARK: BÚSQUEDA INGENUA vs. BÚSQUEDA CON OPERADORES | +------------------------------+--------------------+------------------------+------------------+-------------+ | Dominio de la tarea | Metodología | Desperdicio de tokens | Precision@5 Hits | Latencia P95| +------------------------------+--------------------+------------------------+------------------+-------------+ | Depuración de sist. distrib. | Lenguaje natural | 48.200 tokens ($0.24) | 18,4% | 8.420 ms | | Depuración de sist. distrib. | Con operadores | 8.600 tokens ($0.04) | 94,2% | 1.480 ms | | Auditoría regulatoria SEC | Lenguaje natural | 64.100 tokens ($0.32) | 24,1% | 9.800 ms | | Auditoría regulatoria SEC | Con operadores | 11.200 tokens ($0.05) | 98,6% | 2.100 ms | | Descubrimiento de APIs | Lenguaje natural | 39.500 tokens ($0.19) | 12,0% | 7.200 ms | | Descubrimiento de APIs | Con operadores | 5.400 tokens ($0.02) | 91,5% | 1.120 ms | +------------------------------+--------------------+------------------------+------------------+-------------+</code></pre> <hr /> <h2>7. Defensas contra el raspado y límites de velocidad</h2> <p>Al ejecutar búsquedas a gran escala, los agentes pueden encontrar bloqueos de Cloudflare Turnstile o DataDome. Usar APIs gestionadas (Brave Search API o Tavily) en lugar de navegadores headless resuelve la rotación de proxies residenciales y la huella digital TLS. </p> <hr /> <h2>8. Desglose de costes y análisis de ROI</h2> <p>Modelo de costes anuales para 100.000 tareas de investigación con agentes autónomos: </p> <pre><code>+------------------------------------------------------------------------------------------------------------+ | MODELO DE COSTES ANUAL: 100.000 TAREAS DE AGENTES | +------------------------------------+-----------------------------------+-----------------------------------+ | Componente de coste | Arquitectura de búsqueda ingenua | Arquitectura basada en operadores | +------------------------------------+-----------------------------------+-----------------------------------+ | Búsquedas promedio por tarea | 8,4 consultas (ensayo y error) | 2,1 consultas (deterministas) | | Coste de APIs de búsqueda (@$4/1k) | $3.360 | $840 | | Tokens de contexto LLM de entrada | 29.400 millones de tokens | 882 millones de tokens | | Coste de tokens LLM (@$3.00/1M) | $88.200 | $2.646 | | Costes de proxies y ancho de banda | $4.500 | $650 | +------------------------------------+-----------------------------------+-----------------------------------+ | Coste operativo anual total | $96.060 | $4.136 | | Ahorro neto anual | Línea base | $91.924 (Reducción del 95,7%) | +------------------------------------+-----------------------------------+-----------------------------------+</code></pre> <hr /> <h2>9. Conclusión</h2> <p>El éxito de los agentes autónomos depende de la fiabilidad de sus fuentes de información. El uso de operadores avanzados (<code>site:</code>, <code>filetype:</code>, <code>inurl:</code>, <code>intitle:</code> y <code>ext:asp inurl:search</code>) garantiza respuestas sin alucinaciones, reduce los costes de inferencia y asegura un rendimiento robusto en producción. </p></div><div class="blog-article-nav" style="margin-top:50px"><a href="/es/blog" class="btn btn-ghost">← Todos los Artículos</a></div></div></article></main><footer class="site-footer" data-astro-cid-jo6i4kqk><div class="container" data-astro-cid-jo6i4kqk><div class="foot-cta" data-astro-cid-jo6i4kqk><div data-astro-cid-jo6i4kqk><h3 data-astro-cid-jo6i4kqk>Entérate de los nuevos rankings</h3><p data-astro-cid-jo6i4kqk>Actualizaciones del índice, lanzamientos y análisis independiente — por RSS o el feed de noticias.</p></div><div class="sub" data-astro-cid-jo6i4kqk><a href="/es/news" class="btn btn-primary" data-astro-cid-jo6i4kqk>Abrir noticias</a><a href="/rss.xml" class="btn btn-ghost-light" data-astro-cid-jo6i4kqk>RSS</a></div></div><div class="footer-grid" data-astro-cid-jo6i4kqk><div class="footer-brand-col" data-astro-cid-jo6i4kqk><a href="/es" class="footer-brand" data-astro-cid-jo6i4kqk><span class="logo-mark-grid" aria-hidden="true" data-astro-cid-jo6i4kqk><i data-astro-cid-jo6i4kqk></i><i data-astro-cid-jo6i4kqk></i><i data-astro-cid-jo6i4kqk></i><i data-astro-cid-jo6i4kqk></i></span>LLMPodium</a><p class="footer-blurb" data-astro-cid-jo6i4kqk>Rankings de LLM independientes. Evaluaciones continuas de más de 700 modelos y 25 benchmarks.</p><div class="footer-live" data-astro-cid-jo6i4kqk><span class="live-dot" aria-hidden="true" data-astro-cid-jo6i4kqk></span><span data-astro-cid-jo6i4kqk>Rankings sincronizados a diario</span></div></div><div class="footer-col" data-astro-cid-jo6i4kqk><div class="footer-col-title" data-astro-cid-jo6i4kqk>Clasificaciones</div><ul class="footer-links" data-astro-cid-jo6i4kqk><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard" data-astro-cid-jo6i4kqk>Clasificación</a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/coding" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg> <span data-astro-cid-jo6i4kqk>Código</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/reasoning" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><path d="M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 4.44-2.04zM14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-4.44-2.04z"/></svg> <span data-astro-cid-jo6i4kqk>Razonamiento</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/math" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="19" y1="5" x2="5" y2="19"/><circle cx="6.5" cy="6.5" r="1.5"/><circle cx="17.5" cy="17.5" r="1.5"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="12" y1="5" x2="12" y2="19"/></svg> <span data-astro-cid-jo6i4kqk>Matemáticas</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/agentic" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4M8 15h.01M16 15h.01M9 18h6"/></svg> <span data-astro-cid-jo6i4kqk>Agéntico</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/open" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 9.9-1"/></svg> <span data-astro-cid-jo6i4kqk>Pesos abiertos</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/speed" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg> <span data-astro-cid-jo6i4kqk>Velocidad</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/leaderboard/value" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg> <span data-astro-cid-jo6i4kqk>Valor</span></a></li></ul></div><div class="footer-col" data-astro-cid-jo6i4kqk><div class="footer-col-title" data-astro-cid-jo6i4kqk>Herramientas</div><ul class="footer-links" data-astro-cid-jo6i4kqk><li data-astro-cid-jo6i4kqk><a href="/es/agents" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4M8 15h.01M16 15h.01M9 18h6"/></svg> <span data-astro-cid-jo6i4kqk>Agentes IA</span></a></li><li data-astro-cid-jo6i4kqk><a href="/es/arena" data-astro-cid-jo6i4kqk>Arena</a></li><li data-astro-cid-jo6i4kqk><a href="/es/compare" data-astro-cid-jo6i4kqk>Comparar</a></li><li data-astro-cid-jo6i4kqk><a href="/es/benchmarks" data-astro-cid-jo6i4kqk>Benchmarks</a></li><li data-astro-cid-jo6i4kqk><a href="/es/recommender" data-astro-cid-jo6i4kqk>Selector</a></li><li data-astro-cid-jo6i4kqk><a href="/es/models" data-astro-cid-jo6i4kqk>Modelos</a></li><li data-astro-cid-jo6i4kqk><a href="/es/providers" data-astro-cid-jo6i4kqk>Proveedores de IA</a></li><li data-astro-cid-jo6i4kqk><a href="/es/cost-per-task" data-astro-cid-jo6i4kqk>Costo por tarea</a></li><li data-astro-cid-jo6i4kqk><a href="/es/models/claude-mythos-preview" data-astro-cid-jo6i4kqk>Modelo n.º 1</a></li><li data-astro-cid-jo6i4kqk><a href="/es/favorites" data-astro-cid-jo6i4kqk>Tus modelos guardados</a></li></ul></div><div class="footer-col" data-astro-cid-jo6i4kqk><div class="footer-col-title" data-astro-cid-jo6i4kqk>Recursos</div><ul class="footer-links" data-astro-cid-jo6i4kqk><li data-astro-cid-jo6i4kqk><a href="/es/news" data-astro-cid-jo6i4kqk>Noticias</a></li><li data-astro-cid-jo6i4kqk><a href="/es/blog" data-astro-cid-jo6i4kqk>Blog</a></li><li data-astro-cid-jo6i4kqk><a href="/es/best" data-astro-cid-jo6i4kqk>Mejores modelos de IA 2026</a></li><li data-astro-cid-jo6i4kqk><a href="/es/use-cases" data-astro-cid-jo6i4kqk>Casos empresariales</a></li><li data-astro-cid-jo6i4kqk><a href="/es/methodology" data-astro-cid-jo6i4kqk>Metodología</a></li><li data-astro-cid-jo6i4kqk><a href="/es/glossary" data-astro-cid-jo6i4kqk>Glosario</a></li><li data-astro-cid-jo6i4kqk><a href="/es/faq" data-astro-cid-jo6i4kqk>FAQ</a></li><li data-astro-cid-jo6i4kqk><a href="/es/about" data-astro-cid-jo6i4kqk>Acerca de</a></li><li data-astro-cid-jo6i4kqk><a href="/es/contact" data-astro-cid-jo6i4kqk>Contacto y Términos</a></li><li data-astro-cid-jo6i4kqk><a href="/es/privacy" data-astro-cid-jo6i4kqk>Privacidad</a></li><li data-astro-cid-jo6i4kqk><a href="/es/terms" data-astro-cid-jo6i4kqk>Términos del servicio</a></li></ul></div></div><div class="footer-bottom" data-astro-cid-jo6i4kqk><div class="footer-bottom-left" data-astro-cid-jo6i4kqk><span data-astro-cid-jo6i4kqk>© 2026 LLMPodium. Todos los derechos reservados.</span><span class="sep" data-astro-cid-jo6i4kqk>·</span><a href="/es/privacy" data-astro-cid-jo6i4kqk>Privacidad</a><span class="sep" data-astro-cid-jo6i4kqk>·</span><a href="/es/terms" data-astro-cid-jo6i4kqk>Términos del servicio</a><span class="sep" data-astro-cid-jo6i4kqk>·</span><button type="button" class="footer-link-btn" id="cookie-settings-btn" data-label="Configuración de cookies" data-astro-cid-jo6i4kqk>Configuración de cookies</button><span class="sep" data-astro-cid-jo6i4kqk>·</span><a href="mailto:hello@llmpodium.com" data-astro-cid-jo6i4kqk>hello@llmpodium.com</a></div><div class="footer-bottom-right" data-astro-cid-jo6i4kqk><a href="/es/contact" data-astro-cid-jo6i4kqk>Contacto y Términos</a><a href="/llms.txt" data-astro-cid-jo6i4kqk>llms.txt</a><a href="/rss.xml" data-astro-cid-jo6i4kqk>RSS</a><a href="/api/data/compare.json" data-astro-cid-jo6i4kqk>Open API</a></div></div></div></footer><div id="search-index" data-index-url="/api/data/search.json" data-models-base="/es/models" data-agents-base="/es/agents" data-providers-base="/es/providers" data-benchmarks-base="/es/benchmarks" data-no-results="Sin resultados para" data-label-model="Modelo" data-label-agent="Agente" data-label-provider="Proveedor" data-label-benchmark="Benchmark" style="display:none" data-astro-cid-fdy5zvyj></div><div class="search-overlay" id="search-overlay" role="dialog" aria-modal="true" aria-label="Buscar modelos..." data-astro-cid-fdy5zvyj><div class="search-box aa-cmd-palette" data-astro-cid-fdy5zvyj><div class="aa-cmd-header" data-astro-cid-fdy5zvyj><svg class="search-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-fdy5zvyj><circle cx="11" cy="11" r="8" data-astro-cid-fdy5zvyj></circle><line x1="21" y1="21" x2="16.65" y2="16.65" data-astro-cid-fdy5zvyj></line></svg><input type="text" class="search-input" id="search-input" placeholder="Escribe un modelo, proveedor, agente o benchmark…" aria-label="Escribe un modelo, proveedor, agente o benchmark…" autocomplete="off" spellcheck="false" data-astro-cid-fdy5zvyj><button type="button" class="cmd-badge cmd-close-btn" id="search-close-btn" aria-label="Cerrar búsqueda" data-astro-cid-fdy5zvyj><span class="cmd-badge-esc" data-astro-cid-fdy5zvyj>ESC</span><span class="cmd-badge-close" data-astro-cid-fdy5zvyj>✕</span></button></div><div class="aa-cmd-quick-links" data-astro-cid-fdy5zvyj><span class="quick-title" data-astro-cid-fdy5zvyj>Acceso rápido:</span><a href="/es/agents" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4M8 15h.01M16 15h.01M9 18h6"/></svg> Agentes IA</a><a href="/es/leaderboard" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><path d="M6 9H4.5a2.5 2.5 0 0 1 0-5H6M18 9h1.5a2.5 2.5 0 0 0 0-5H18M4 22h16M10 14.66V17c0 .55-.45 1-1 1H7M14 14.66V17c0 .55.45 1 1 1h2M18 2H6v7a6 6 0 0 0 12 0V2z"/></svg> Clasificación</a><a href="/es/leaderboard/coding" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg> Coding y SWE-Bench</a><a href="/es/leaderboard/reasoning" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><path d="M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 4.44-2.04zM14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-4.44-2.04z"/></svg> Razonamiento profundo y matemáticas</a><a href="/es/models" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg> Modelos</a><a href="/es/recommender" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg> Selector</a><a href="/es/cost-per-task" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg> Costo por tarea</a></div><div class="search-results" id="search-results" data-astro-cid-fdy5zvyj></div></div></div><div id="aa-compare-dock" class="aa-compare-dock" aria-live="polite" inert data-compare-base="/es/compare" data-tpl-add="{name} añadido a la comparación." data-tpl-remove="{name} quitado de la comparación." data-tpl-limit="Puedes comparar hasta 4 modelos a la vez." data-tpl-clear="Comparación vaciada." data-count-label="modelos" data-astro-cid-zoo3qkdf><div class="dock-inner" data-astro-cid-zoo3qkdf><div class="dock-info" data-astro-cid-zoo3qkdf><div class="dock-badge" data-astro-cid-zoo3qkdf><span class="pulse-dot" data-astro-cid-zoo3qkdf></span><span id="dock-count" data-astro-cid-zoo3qkdf>0</span> / 4 <span class="dock-count-word" data-astro-cid-zoo3qkdf></span></div><div id="dock-chips" class="dock-chips" data-astro-cid-zoo3qkdf></div></div><div class="dock-actions" data-astro-cid-zoo3qkdf><button id="dock-clear-btn" class="dock-btn-clear" data-astro-cid-zoo3qkdf>Vaciar</button><a id="dock-launch-btn" href="/es/compare" class="dock-btn-launch" data-astro-cid-zoo3qkdf>Comparar ahora →</a></div></div><div id="dock-toast" class="dock-toast" role="status" data-astro-cid-zoo3qkdf></div></div><script> (function () { var STORAGE_KEY = 'llmpodium_compare_models'; function loadSavedModels() { try { var raw = localStorage.getItem(STORAGE_KEY); return raw ? JSON.parse(raw) : []; } catch (e) { return []; } } function persistModels(models) { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(models)); } catch (e) {} } var selectedModels = loadSavedModels(); var toastTimer = null; var lastCount = null; function tpl(name, key) { var dock = document.getElementById('aa-compare-dock'); var raw = dock ? dock.getAttribute(key) : ''; return raw ? raw.replace('{name}', name) : ''; } function showToast(msg) { var toast = document.getElementById('dock-toast'); if (!toast || !msg) return; toast.textContent = msg; toast.classList.add('visible'); clearTimeout(toastTimer); toastTimer = setTimeout(function () { toast.classList.remove('visible'); }, 2600); } function updateDock() { var dock = document.getElementById('aa-compare-dock'); var countEl = document.getElementById('dock-count'); var chipsEl = document.getElementById('dock-chips'); var launchBtn = document.getElementById('dock-launch-btn'); if (!dock || !countEl || !chipsEl || !launchBtn) return; countEl.textContent = String(selectedModels.length); var headerCountEl = document.getElementById('nav-compare-count'); if (headerCountEl) { headerCountEl.textContent = String(selectedModels.length); headerCountEl.setAttribute('data-count', String(selectedModels.length)); /* subtle bump animation whenever the selection grows */ if (lastCount !== null && selectedModels.length > lastCount) { headerCountEl.classList.remove('bump'); void headerCountEl.offsetWidth; /* restart the animation */ headerCountEl.classList.add('bump'); } } lastCount = selectedModels.length; var countWord = dock.querySelector('.dock-count-word'); if (countWord) countWord.textContent = dock.getAttribute('data-count-label') || 'Models Selected'; if (selectedModels.length > 0) { dock.classList.add('visible'); dock.removeAttribute('inert'); } else { dock.classList.remove('visible'); dock.setAttribute('inert', ''); } chipsEl.innerHTML = selectedModels .map(function (m) { return '<div class="dock-chip" data-slug="' + m.slug + '">' + '<span>' + m.name + '</span>' + '<button type="button" class="dock-chip-remove" data-remove="' + m.slug + '" aria-label="Remove ' + m.name.replace(/"/g, '"') + ' from comparison">×</button>' + '</div>'; }) .join(''); var baseHref = dock.dataset.compareBase || '/compare'; launchBtn.setAttribute('href', baseHref + '?models=' + selectedModels.map(function (m) { return m.slug; }).join(',')); /* Update checkboxes state in table/cards */ document.querySelectorAll('[data-compare-slug]').forEach(function (btn) { var slug = btn.getAttribute('data-compare-slug'); var isSel = selectedModels.some(function (m) { return m.slug === slug; }); btn.classList.toggle('selected', isSel); }); /* Bind remove handlers */ chipsEl.querySelectorAll('.dock-chip-remove').forEach(function (btn) { btn.addEventListener('click', function (e) { e.stopPropagation(); var slug = btn.getAttribute('data-remove'); selectedModels = selectedModels.filter(function (m) { return m.slug !== slug; }); persistModels(selectedModels); updateDock(); }); }); } /* the inline script re-executes after every client-side navigation — bind the delegated click handler exactly once to avoid duplicated toasts */ if (!window.__compareDockBound) { window.__compareDockBound = true; document.addEventListener('click', function (e) { var btn = e.target.closest('[data-compare-slug]'); if (!btn) return; e.preventDefault(); var slug = btn.getAttribute('data-compare-slug'); var name = btn.getAttribute('data-compare-name') || slug; var exists = selectedModels.some(function (m) { return m.slug === slug; }); if (exists) { selectedModels = selectedModels.filter(function (m) { return m.slug !== slug; }); showToast(tpl(name, 'data-tpl-remove')); } else { if (selectedModels.length >= 4) { showToast(tpl('', 'data-tpl-limit')); return; } selectedModels.push({ slug: slug, name: name }); showToast(tpl(name, 'data-tpl-add')); } persistModels(selectedModels); updateDock(); }); } document.addEventListener('astro:page-load', function () { selectedModels = loadSavedModels(); lastCount = null; var clearBtn = document.getElementById('dock-clear-btn'); if (clearBtn && !clearBtn.dataset.bound) { clearBtn.dataset.bound = '1'; clearBtn.addEventListener('click', function () { selectedModels = []; persistModels(selectedModels); updateDock(); showToast(tpl('', 'data-tpl-clear')); }); } updateDock(); }); })(); </script><div id="consent-banner" class="consent-banner" role="region" aria-label="Respetamos tu privacidad" hidden data-astro-cid-u6s5b3h2><div class="consent-inner" data-astro-cid-u6s5b3h2><div class="consent-copy" data-astro-cid-u6s5b3h2><strong data-astro-cid-u6s5b3h2>Respetamos tu privacidad</strong><p data-astro-cid-u6s5b3h2>Usamos cookies analíticas para entender cómo se usan los rankings. Puedes aceptar o rechazar — el sitio funciona igual en ambos casos.</p></div><div class="consent-actions" data-astro-cid-u6s5b3h2><button type="button" class="consent-btn primary" id="consent-accept" data-astro-cid-u6s5b3h2>Aceptar todo</button><button type="button" class="consent-btn ghost" id="consent-decline" data-astro-cid-u6s5b3h2>Rechazar</button><a class="consent-more" href="/privacy" data-astro-cid-u6s5b3h2>Privacidad</a></div></div></div><script> (function () { var CONSENT_KEY = 'llmpodium-consent'; function readConsent() { try { return localStorage.getItem(CONSENT_KEY); } catch (e) { return null; } } function showBanner() { var banner = document.getElementById('consent-banner'); if (banner) banner.hidden = false; } function hideBanner() { var banner = document.getElementById('consent-banner'); if (banner) banner.hidden = true; } function choose(value) { try { localStorage.setItem(CONSENT_KEY, value); } catch (e) {} window.llmpodiumConsent = value; hideBanner(); if (value === 'granted' && typeof window.llmpodiumLoadAnalytics === 'function') { window.llmpodiumLoadAnalytics(); } } /* inline scripts re-run after every client-side navigation — guard against stacking duplicate document-level listeners */ if (!window.__llmpodiumConsentBound) { window.__llmpodiumConsentBound = true; document.addEventListener('click', function (e) { var t = e.target.closest('#consent-accept, #consent-decline, #cookie-settings-btn'); if (!t) return; if (t.id === 'consent-accept') choose('granted'); else if (t.id === 'consent-decline') choose('denied'); else showBanner(); }); document.addEventListener('astro:page-load', function () { if (!readConsent()) showBanner(); }); if (!readConsent()) showBanner(); } /* expose for footer "Cookie settings" re-open */ window.llmpodiumOpenConsent = showBanner; })(); </script><div id="route-announcer" class="sr-only" role="status" aria-live="polite" aria-atomic="true"></div><script type="module" src="/_astro/Base.astro_astro_type_script_index_0_lang.CCY_hx3h.js"></script></body></html>