Sus LLM merecen mejores aportes.
El lector hace dos cosas:
Leer : convierte cualquier URL en una entrada compatible con LLM con https://r.jina.ai/https://your.url
. Obtenga resultados mejorados para su agente y sus sistemas RAG sin costo alguno.
Buscar : busca en la web una consulta determinada con https://s.jina.ai/your+query
. Esto permite a sus LLM acceder a los conocimientos mundiales más recientes desde la web.
Mira la demostración en vivo
O simplemente visite estas URL ( Leer ) https://r.jina.ai/https://github.com/jina-ai/reader, ( Buscar ) https://s.jina.ai/Who%20will%20win %202024%20US%20presidential%20election%3F y compruébalo tú mismo.
No dude en utilizar Reader API en producción. Es gratuito, estable y escalable. Lo mantenemos activamente como uno de los productos principales de Jina AI. Consultar límite de tarifa
08/10/2024 : Se introdujo un adaptive crawler
. Puede rastrear el sitio web de forma recursiva y extraer las páginas más relevantes para una página web determinada.
2024-07-15 : Para restringir los resultados de s.jina.ai
a cierto dominio/sitio web, puede configurar, por ejemplo, site=jina.ai
en los parámetros de consulta, lo que permite la búsqueda en el sitio. Para obtener más opciones, pruebe nuestra demostración en vivo actualizada.
01/07/2024 : Hemos resuelto un ataque DDoS y otros abusos de tráfico desde el 27 de junio. También encontramos un error introducido el 28 de junio que puede causar una mayor latencia en algunos sitios web. El ataque y el bug han sido solucionados; Si experimentó una latencia alta en r.jina.ai entre el 27 y el 30 de junio, debería volver a la normalidad ahora.
30/05/2024 : ¡El lector ahora puede leer un PDF arbitrario desde cualquier URL! Consulte este resultado en PDF de NASA.gov frente al original.
2024-05-15 : Presentamos un nuevo punto final, s.jina.ai
, que busca en la web y arroja los 5 mejores resultados, cada uno en un formato compatible con LLM. Lea más sobre esta nueva característica aquí.
2024-05-08 : El título de la imagen está desactivado de forma predeterminada para mejorar la latencia. Para activarlo, configure x-with-generated-alt: true
en el encabezado de la solicitud.
03/05/2024 : Finalmente resolvimos un ataque DDoS desde el 29 de abril. ¡Ahora nuestra API es mucho más confiable y escalable que nunca!
2024-04-24 : Ahora tiene un control más detallado sobre Reader API usando encabezados, por ejemplo, reenviando cookies, usando proxy HTTP.
2024-04-15 : ¡El lector ahora admite la lectura de imágenes! Subtitula todas las imágenes en la URL especificada y agrega Image [idx]: [caption]
como etiqueta alt (si inicialmente carecen de una). Esto permite a los LLM posteriores interactuar con las imágenes para razonar, resumir, etc. Vea el ejemplo aquí.
r.jina.ai
para buscar una única URL Simplemente anteponga https://r.jina.ai/
a cualquier URL. Por ejemplo, para convertir la URL https://en.wikipedia.org/wiki/Artificial_intelligence
en una entrada compatible con LLM, utilice la siguiente URL:
https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence
r.jina.ai
para buscar un sitio web completo (Google Colab)s.jina.ai
para búsqueda web Simplemente anteponga https://s.jina.ai/
a su consulta de búsqueda. Tenga en cuenta que si utiliza esto en el código, asegúrese de codificar primero su consulta de búsqueda, por ejemplo, si su consulta es Who will win 2024 US presidential election?
entonces tu URL debería verse así:
https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F
Detrás de escena, Reader busca en la web, obtiene los 5 resultados principales, visita cada URL y le aplica r.jina.ai
Esto es diferente de muchas web search function-calling
en marcos de agentes/RAG, que a menudo devuelven solo el título, la URL y la descripción proporcionada por la API del motor de búsqueda. Si desea leer un resultado con mayor profundidad, debe buscar el contenido usted mismo desde esa URL. Con Reader, http://s.jina.ai
recupera automáticamente el contenido de las 5 URL de resultados de búsqueda principales (reutilizando la pila tecnológica detrás de http://r.jina.ai
). Esto significa que no tiene que manejar usted mismo la representación, el bloqueo o cualquier problema relacionado con JavaScript y CSS del navegador.
s.jina.ai
para búsquedas en el sitio Simplemente especifique site
en los parámetros de consulta, como por ejemplo:
curl 'https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai&site=github.com'
Recomendamos encarecidamente utilizar el generador de código para explorar diferentes combinaciones de parámetros de Reader API.
Como ya ha visto anteriormente, se puede controlar el comportamiento de la API Reader mediante encabezados de solicitud. Aquí hay una lista completa de encabezados compatibles.
Puede habilitar la función de título de imagen a través del encabezado x-with-generated-alt: true
.
Puede pedirle a Reader API que reenvíe la configuración de cookies a través del encabezado x-set-cookie
.
Tenga en cuenta que las solicitudes con cookies no se almacenarán en caché.
Puede omitir el filtrado readability
a través del encabezado x-respond-with
, específicamente:
x-respond-with: markdown
devuelve la reducción sin pasar por reability
x-respond-with: html
devuelve documentElement.outerHTML
x-respond-with: text
devuelve document.body.innerText
x-respond-with: screenshot
devuelve la URL de la captura de pantalla de la página web
Puede especificar un servidor proxy a través del encabezado x-proxy-url
.
Puede personalizar la tolerancia de la caché a través del encabezado x-cache-tolerance
(número entero en segundos).
Puede omitir la página almacenada en caché (de por vida 3600) a través del encabezado x-no-cache: true
(equivalente a x-cache-tolerance: 0
).
Si ya conoce la estructura HTML de su página de destino, puede especificar x-target-selector
o x-wait-for-selector
para dirigir la API de Reader para que se centre en una parte específica de la página.
Al configurar el encabezado x-target-selector
en un selector de CSS, la API de Reader devuelve el contenido dentro del elemento coincidente, en lugar del HTML completo. Configurar este encabezado es útil cuando la extracción automática de contenido no logra capturar el contenido deseado y puede seleccionar manualmente el destino correcto.
Al configurar el encabezado x-wait-for-selector
en un selector CSS, la API de Reader esperará hasta que se represente el elemento coincidente antes de devolver el contenido. Si ya especificó x-wait-for-selector
, este encabezado se puede omitir si planea esperar el mismo elemento.
r.jina.ai
para buscar aplicaciones de una sola página (SPA)Hoy en día, muchos sitios web dependen de marcos de JavaScript y renderizado del lado del cliente. Generalmente conocida como Aplicación de Página Única (SPA). Gracias a Puppeteer y al navegador Chrome sin cabeza, Reader admite de forma nativa la búsqueda de estos sitios web. Sin embargo, debido al enfoque específico que desarrollan algunos SPA, es posible que sea necesario tomar algunas precauciones adicionales.
Según la definición de los estándares web, el contenido que viene después de #
en una URL no se envía al servidor. Para mitigar este problema, utilice el método POST
con el parámetro url
en el cuerpo.
curl -X POST 'https://r.jina.ai/' -d 'url=https://example.com/#/route'
Algunos SPA, o incluso algunos sitios web que no son estrictamente SPA, pueden mostrar contenidos precargados antes de cargar dinámicamente el contenido principal. En este caso, es posible que Reader esté capturando el contenido precargado en lugar del contenido principal. Para mitigar este problema, aquí hay algunas posibles soluciones:
x-timeout
Cuando se especifica explícitamente el tiempo de espera, Reader no intentará regresar antes y esperará a que la red esté inactiva hasta que se alcance el tiempo de espera. Esto es útil cuando el sitio web de destino eventualmente deja la red inactiva.
curl 'https://example.com/' -H 'x-timeout: 30'
x-wait-for-selector
Cuando se especifica explícitamente esperar al selector, Reader esperará la aparición del selector CSS especificado hasta que se alcance el tiempo de espera. Esto es útil cuando sabes exactamente qué elemento esperar.
curl 'https://example.com/' -H 'x-wait-for-selector: #content'
El modo Streaming es útil cuando descubre que el modo estándar proporciona un resultado incompleto. Esto se debe a que el Lector esperará un poco más hasta que la página se represente de manera estable . Utilice el encabezado de aceptación para alternar el modo de transmisión:
curl -H "Aceptar: texto/secuencia de eventos" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Los datos llegan en un flujo; cada fragmento posterior contiene información más completa. El último fragmento debería proporcionar el resultado más completo y final. Si proviene de LLM, tenga en cuenta que es un comportamiento diferente al streaming de generación de texto de los LLM.
Por ejemplo, compare estos dos comandos curl a continuación. Puede ver que la transmisión por secuencias finalmente le brinda información completa, mientras que el modo estándar no. Esto se debe a que algunos js activan la carga de contenido en este sitio en particular después de que la página está completamente cargada, y el modo estándar devuelve la página "demasiado pronto".
curl -H 'x-no-cache: verdadero' https://access.redhat.com/security/cve/CVE-2023-45853 curl -H "Aceptar: texto/flujo de eventos" -H 'x-no-cache: verdadero' https://r.jina.ai/https://access.redhat.com/security/cve/CVE-2023 -45853
Nota:
-H 'x-no-cache: true'
se utiliza sólo con fines de demostración para omitir el caché.
El modo de transmisión también es útil si su sistema LLM/agente descendente requiere entrega inmediata de contenido o necesita procesar datos en fragmentos para intercalar tiempos de procesamiento de E/S y LLM. Esto permite un acceso más rápido y un manejo de datos más eficiente:
Reader API: streamContent1 ----> streamContent2 ----> streamContent3 ---> ...
| | |
v | |
Your LLM: LLM(streamContent1) | |
v |
LLM(streamContent2) |
v
LLM(streamContent3)
Tenga en cuenta que en términos de integridad: ... > streamContent3 > streamContent2 > streamContent1
, cada fragmento posterior contiene información más completa.
Esto es todavía muy temprano y el resultado no es realmente un JSON "útil". Contiene tres campos url
, title
y content
únicamente. No obstante, puede utilizar el encabezado de aceptación para controlar el formato de salida:
curl -H "Aceptar: aplicación/json" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
El modo JSON probablemente sea más útil en s.jina.ai
que r.jina.ai
Para s.jina.ai
con modo JSON, devuelve 5 resultados en una lista, cada uno en la estructura de {'title', 'content', 'url'}
.
Todas las imágenes de esa página que carecen de la etiqueta alt
pueden tener subtítulos automáticos mediante un VLM (modelo de lenguaje de visión) y formatearse como !(Image [idx]: [VLM_caption])[img_URL]
. Esto debería brindarle a su LLM posterior de solo texto suficientes sugerencias para incluir esas imágenes en el razonamiento, la selección y el resumen. Utilice el encabezado x-with-generated-alt para alternar el modo de transmisión:
curl -H "X-With-Generated-Alt: true" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Necesitará las siguientes herramientas para ejecutar el proyecto:
Nodo v18 (la compilación falla para la versión de Nodo >18)
Firebase CLI ( npm install -g firebase-tools
)
Para el backend, vaya al directorio backend/functions
e instale las dependencias de npm.
git clone [email protected]:jina-ai/reader.gitcd backend/funciones instalación npm
thinapps-shared
? Es posible que observe una referencia al submódulo thinapps-shared
, un paquete interno que utilizamos para compartir código entre nuestros productos. Si bien no es de código abierto y no es parte integral de las funciones del Lector, ayuda principalmente con los decoradores, el registro, la gestión de secretos, etc. Siéntete libre de ignorarlo por ahora.
Dicho esto, esta es la base de código única detrás de https://r.jina.ai
, por lo que cada vez que nos comprometemos aquí, implementaremos la nueva versión en https://r.jina.ai
.
Plantee un problema con la URL con la que tiene problemas. Lo investigaremos e intentaremos solucionarlo.
Reader está respaldado por Jina AI y tiene licencia Apache-2.0.