Vos LLM méritent une meilleure contribution.
Reader fait deux choses :
Lire : Il convertit n'importe quelle URL en une entrée compatible LLM avec https://r.jina.ai/https://your.url
. Obtenez des résultats améliorés pour vos systèmes d'agent et RAG, sans frais.
Recherche : il recherche sur le Web une requête donnée avec https://s.jina.ai/your+query
. Cela permet à vos LLM d'accéder aux dernières connaissances mondiales sur le Web.
Découvrez la démo en direct
Ou visitez simplement ces URL ( Lire ) https://r.jina.ai/https://github.com/jina-ai/reader, ( Rechercher ) https://s.jina.ai/Who%20will%20win %202024%20US%20presidential%20election%3F et voyez par vous-même.
N'hésitez pas à utiliser l'API Reader en production. Il est gratuit, stable et évolutif. Nous le maintenons activement comme l’un des produits principaux de Jina AI. Vérifier la limite de taux
08/10/2024 : Introduction d'un adaptive crawler
. Il peut explorer le site Web de manière récursive et extraire les pages les plus pertinentes pour une page Web donnée.
2024-07-15 : Pour limiter les résultats de s.jina.ai
à certains domaines/sites Web, vous pouvez définir par exemple site=jina.ai
dans les paramètres de requête, ce qui permet la recherche sur le site. Pour plus d'options, essayez notre démo en direct mise à jour.
01/07/2024 : Nous avons résolu une attaque DDoS et autres abus de trafic depuis le 27 juin. Nous avons également trouvé un bug introduit le 28 juin qui peut entraîner une latence plus élevée pour certains sites Web. L'attaque et le bug ont été résolus ; si vous avez rencontré une latence élevée de r.jina.ai entre le 27 et le 30 juin, cela devrait maintenant revenir à la normale.
30/05/2024 : Le lecteur peut désormais lire des PDF arbitraires à partir de n'importe quelle URL ! Découvrez ce résultat PDF de NASA.gov par rapport à l'original.
15/05/2024 : Nous avons introduit un nouveau point de terminaison s.jina.ai
qui effectue des recherches sur le Web et renvoie les 5 meilleurs résultats, chacun dans un format compatible LLM. En savoir plus sur cette nouvelle fonctionnalité ici.
08/05/2024 : La légende de l'image est désactivée par défaut pour une meilleure latence. Pour l'activer, définissez x-with-generated-alt: true
dans l'en-tête de la requête.
03/05/2024 : Nous avons finalement résolu une attaque DDoS depuis le 29 avril. Notre API est désormais beaucoup plus fiable et évolutive que jamais !
2024-04-24 : Vous disposez désormais d'un contrôle plus précis sur l'API Reader à l'aide d'en-têtes, par exemple en transférant des cookies, à l'aide du proxy HTTP.
2024-04-15 : Reader prend désormais en charge la lecture d'images ! Il sous-titre toutes les images à l'URL spécifiée et ajoute Image [idx]: [caption]
comme balise alt (si elles en manquent initialement). Cela permet aux LLM en aval d'interagir avec les images dans le raisonnement, la synthèse, etc. Voir l'exemple ici.
r.jina.ai
pour la récupération d'une seule URL Ajoutez simplement https://r.jina.ai/
à n’importe quelle URL. Par exemple, pour convertir l'URL https://en.wikipedia.org/wiki/Artificial_intelligence
en une entrée compatible LLM, utilisez l'URL suivante :
https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence
r.jina.ai
pour la récupération d'un site Web complet (Google Colab)s.jina.ai
pour la recherche sur le Web Ajoutez simplement https://s.jina.ai/
à votre requête de recherche. Notez que si vous utilisez ceci dans le code, assurez-vous d'abord d'encoder votre requête de recherche, par exemple si votre requête est Who will win 2024 US presidential election?
alors votre URL devrait ressembler à :
https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F
En coulisses, Reader effectue une recherche sur le Web, récupère les 5 meilleurs résultats, visite chaque URL et y applique r.jina.ai
Ceci est différent de nombreux web search function-calling
dans les frameworks d'agent/RAG, qui renvoient souvent uniquement le titre, l'URL et la description fournis par l'API du moteur de recherche. Si vous souhaitez lire un résultat plus en profondeur, vous devez récupérer le contenu vous-même à partir de cette URL. Avec Reader, http://s.jina.ai
récupère automatiquement pour vous le contenu des 5 principales URL de résultats de recherche (en réutilisant la pile technologique derrière http://r.jina.ai
). Cela signifie que vous n'avez pas à gérer vous-même le rendu, le blocage ou tout autre problème lié à JavaScript et CSS.
s.jina.ai
pour la recherche sur le site Spécifiez simplement site
dans les paramètres de requête tels que :
boucle 'https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai&site=github.com'
Nous vous recommandons fortement d'utiliser le générateur de code pour explorer différentes combinaisons de paramètres de l'API Reader.
Comme vous l'avez déjà vu ci-dessus, on peut contrôler le comportement de l'API Reader à l'aide des en-têtes de requête. Voici une liste complète des en-têtes pris en charge.
Vous pouvez activer la fonction de légende d'image via l'en-tête x-with-generated-alt: true
.
Vous pouvez demander à l'API Reader de transférer les paramètres des cookies via l'en-tête x-set-cookie
.
Notez que les demandes contenant des cookies ne seront pas mises en cache.
Vous pouvez contourner le filtrage readability
via l'en-tête x-respond-with
, en particulier :
x-respond-with: markdown
renvoie la démarque sans passer par reability
x-respond-with: html
renvoie documentElement.outerHTML
x-respond-with: text
renvoie document.body.innerText
x-respond-with: screenshot
renvoie l'URL de la capture d'écran de la page Web
Vous pouvez spécifier un serveur proxy via l'en-tête x-proxy-url
.
Vous pouvez personnaliser la tolérance du cache via l'en-tête x-cache-tolerance
(entier en secondes).
Vous pouvez contourner la page mise en cache (durée de vie 3600) via l'en-tête x-no-cache: true
(équivalent de x-cache-tolerance: 0
).
Si vous connaissez déjà la structure HTML de votre page cible, vous pouvez spécifier x-target-selector
ou x-wait-for-selector
pour demander à l'API Reader de se concentrer sur une partie spécifique de la page.
En définissant l'en-tête x-target-selector
sur un sélecteur CSS, l'API Reader renvoie le contenu de l'élément correspondant, au lieu du code HTML complet. La définition de cet en-tête est utile lorsque l'extraction automatique du contenu ne parvient pas à capturer le contenu souhaité et que vous pouvez sélectionner manuellement la cible correcte.
En définissant l'en-tête x-wait-for-selector
sur un sélecteur CSS, l'API Reader attendra que l'élément correspondant soit rendu avant de renvoyer le contenu. Si vous avez déjà spécifié x-wait-for-selector
, cet en-tête peut être omis si vous prévoyez d'attendre le même élément.
r.jina.ai
pour la récupération d'applications à page unique (SPA)De nombreux sites Web s'appuient aujourd'hui sur des frameworks JavaScript et un rendu côté client. Généralement connu sous le nom d’application à page unique (SPA). Grâce à Puppeteer et au navigateur Chrome sans tête, Reader prend en charge nativement la récupération de ces sites Web. Cependant, en raison de l'approche spécifique développée dans certaines SPA, des précautions supplémentaires peuvent être nécessaires.
Par définition des standards du web, le contenu placé après #
dans une URL n'est pas envoyé au serveur. Pour atténuer ce problème, utilisez la méthode POST
avec le paramètre url
dans le corps.
curl -X POST 'https://r.jina.ai/' -d 'url=https://example.com/#/route'
Certains SPA, ou même certains sites Web qui ne sont pas strictement des SPA, peuvent afficher du contenu préchargé avant de charger ultérieurement le contenu principal de manière dynamique. Dans ce cas, Reader peut capturer le contenu de préchargement au lieu du contenu principal. Pour atténuer ce problème, voici quelques solutions possibles :
x-timeout
Lorsque le délai d'attente est explicitement spécifié, Reader ne tentera pas de revenir plus tôt et attendra que le réseau soit inactif jusqu'à ce que le délai d'attente soit atteint. Ceci est utile lorsque le site Web cible finit par se retrouver sur un réseau inactif.
curl 'https://example.com/' -H 'x-timeout : 30'
x-wait-for-selector
Lorsque wait-for-selector est explicitement spécifié, Reader attendra l'apparition du sélecteur CSS spécifié jusqu'à ce que le délai d'attente soit atteint. Ceci est utile lorsque vous savez exactement quel élément attendre.
curl 'https://example.com/' -H 'x-wait-for-selector: #content'
Le mode streaming est utile lorsque vous constatez que le mode standard fournit un résultat incomplet. En effet, le Reader attendra un peu plus longtemps jusqu'à ce que la page soit rendue de manière stable . Utilisez l'en-tête accept pour basculer le mode de streaming :
curl -H "Accepter : text/event-stream" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Les données arrivent sous forme de flux ; chaque morceau suivant contient des informations plus complètes. Le dernier morceau devrait fournir le résultat le plus complet et final. Si vous venez d'un LLM, veuillez noter qu'il s'agit d'un comportement différent du streaming de génération de texte des LLM.
Par exemple, comparez ces deux commandes curl ci-dessous. Vous pouvez voir que le streaming vous donne enfin des informations complètes, contrairement au mode standard. En effet, le chargement du contenu sur ce site particulier est déclenché par certains js une fois la page complètement chargée et le mode standard renvoie la page "trop tôt".
curl -H 'x-no-cache : vrai' https://access.redhat.com/security/cve/CVE-2023-45853 curl -H "Accepter : text/event-stream" -H 'x-no-cache : true' https://r.jina.ai/https://access.redhat.com/security/cve/CVE-2023 -45853
Remarque :
-H 'x-no-cache: true'
est utilisé uniquement à des fins de démonstration pour contourner le cache.
Le mode streaming est également utile si votre système LLM/agent en aval nécessite une livraison immédiate de contenu ou doit traiter les données par morceaux pour entrelacer les temps de traitement des E/S et du LLM. Cela permet un accès plus rapide et une gestion des données plus efficace :
Reader API: streamContent1 ----> streamContent2 ----> streamContent3 ---> ...
| | |
v | |
Your LLM: LLM(streamContent1) | |
v |
LLM(streamContent2) |
v
LLM(streamContent3)
Notez qu'en termes d'exhaustivité : ... > streamContent3 > streamContent2 > streamContent1
, chaque morceau suivant contient des informations plus complètes.
C'est encore très tôt et le résultat n'est pas vraiment un JSON "utile". Il contient trois champs url
, title
et content
uniquement. Néanmoins, vous pouvez utiliser accept-header pour contrôler le format de sortie :
curl -H "Accepter : application/json" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Le mode JSON est probablement plus utile dans s.jina.ai
que r.jina.ai
. Pour s.jina.ai
avec le mode JSON, il renvoie 5 résultats dans une liste, chacun dans la structure {'title', 'content', 'url'}
.
Toutes les images de cette page dépourvues de balise alt
peuvent être automatiquement sous-titrées par un VLM (modèle de langage de vision) et formatées comme !(Image [idx]: [VLM_caption])[img_URL]
. Cela devrait donner à votre LLM en texte uniquement en aval juste assez d'indices pour inclure ces images dans le raisonnement, la sélection et le résumé. Utilisez l'en-tête x-with-generated-alt pour basculer le mode de streaming :
curl -H "X-With-Generated-Alt : vrai" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Vous aurez besoin des outils suivants pour exécuter le projet :
Node v18 (la construction échoue pour la version Node >18)
Firebase CLI ( npm install -g firebase-tools
)
Pour le backend, accédez au répertoire backend/functions
et installez les dépendances npm.
git clone [email protected]:jina-ai/reader.gitcd backend/functions installation npm
thinapps-shared
? Vous remarquerez peut-être une référence au sous-module thinapps-shared
, un package interne que nous utilisons pour partager du code entre nos produits. Bien qu'il ne soit pas open source et ne fasse pas partie intégrante des fonctions du Reader, il aide principalement aux décorateurs, à la journalisation, à la gestion des secrets, etc. N'hésitez pas à l'ignorer pour l'instant.
Cela dit, il s'agit de la base de code unique derrière https://r.jina.ai
, donc chaque fois que nous nous engagerons ici, nous déploierons la nouvelle version sur https://r.jina.ai
.
Veuillez signaler un problème concernant l'URL avec laquelle vous rencontrez des problèmes. Nous allons l'examiner et essayer de le réparer.
Reader est soutenu par Jina AI et sous licence Apache-2.0.