Seus LLMs merecem uma contribuição melhor.
O leitor faz duas coisas:
Leia : ele converte qualquer URL em uma entrada compatível com LLM com https://r.jina.ai/https://your.url
. Obtenha resultados aprimorados para seus sistemas de agente e RAG sem nenhum custo.
Pesquisa : pesquisa na web uma determinada consulta com https://s.jina.ai/your+query
. Isso permite que seus LLMs acessem o conhecimento mundial mais recente na web.
Confira a demonstração ao vivo
Ou apenas visite estes URLs ( Leia ) https://r.jina.ai/https://github.com/jina-ai/reader, ( Pesquisa ) https://s.jina.ai/Who%20will%20win %202024%20US%20presidential%20election%3F e veja você mesmo.
Sinta-se à vontade para usar a API do Reader em produção. É gratuito, estável e escalável. Estamos mantendo-o ativamente como um dos principais produtos da Jina AI. Confira limite de taxa
08/10/2024 : Introduzido um adaptive crawler
. Ele pode rastrear recursivamente o site e extrair as páginas mais relevantes para uma determinada página da web.
15/07/2024 : Para restringir os resultados de s.jina.ai
a determinado domínio/site, você pode definir, por exemplo, site=jina.ai
nos parâmetros de consulta, o que permite a pesquisa no site. Para mais opções, experimente nossa demonstração ao vivo atualizada.
01/07/2024 : Resolvemos um ataque DDoS e outros abusos de tráfego desde 27 de junho. Também encontramos um bug introduzido em 28 de junho que pode causar maior latência em alguns sites. O ataque e o bug foram resolvidos; se você experimentou alta latência de r.jina.ai entre 27 e 30 de junho, ela deve voltar ao normal agora.
30/05/2024 : O leitor agora pode ler um PDF binário de qualquer URL! Confira este resultado em PDF de NASA.gov versus o original.
15/05/2024 : Introduzimos um novo endpoint s.jina.ai
que pesquisa na web e retorna os 5 principais resultados, cada um em um formato compatível com LLM. Leia mais sobre esse novo recurso aqui.
08/05/2024 : A legenda da imagem está desativada por padrão para melhor latência. Para ativá-lo, defina x-with-generated-alt: true
no cabeçalho da solicitação.
03/05/2024 : Finalmente resolvemos um ataque DDoS desde 29 de abril. Agora nossa API está muito mais confiável e escalável do que nunca!
24/04/2024 : Agora você tem um controle mais refinado sobre a API do Reader usando cabeçalhos, por exemplo, encaminhamento de cookies, usando proxy HTTP.
15/04/2024 : O Reader agora suporta leitura de imagens! Ele legenda todas as imagens no URL especificado e adiciona Image [idx]: [caption]
como uma tag alt (se inicialmente não tiver uma). Isso permite que os LLMs downstream interajam com as imagens no raciocínio, no resumo, etc. Veja o exemplo aqui.
r.jina.ai
para busca de URL único Basta acrescentar https://r.jina.ai/
a qualquer URL. Por exemplo, para converter o URL https://en.wikipedia.org/wiki/Artificial_intelligence
em uma entrada compatível com LLM, use o seguinte URL:
https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence
r.jina.ai
para busca completa do site (Google Colab)s.jina.ai
para pesquisa na web Basta acrescentar https://s.jina.ai/
à sua consulta de pesquisa. Observe que se você estiver usando isso no código, certifique-se de codificar sua consulta de pesquisa primeiro, por exemplo, se sua consulta for Who will win 2024 US presidential election?
então seu URL deve ser parecido com:
https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F
Nos bastidores, o Reader pesquisa na web, busca os 5 principais resultados, visita cada URL e aplica r.jina.ai
a ele. Isso é diferente de muitas web search function-calling
em estruturas de agente/RAG, que geralmente retornam apenas o título, URL e descrição fornecidos pela API do mecanismo de pesquisa. Se quiser ler um resultado mais profundamente, você mesmo terá que buscar o conteúdo desse URL. Com o Reader, http://s.jina.ai
busca automaticamente o conteúdo dos 5 principais URLs de resultados de pesquisa para você (reutilizando a pilha de tecnologia por trás de http://r.jina.ai
). Isso significa que você não precisa lidar com a renderização, o bloqueio do navegador ou qualquer problema relacionado a JavaScript e CSS.
s.jina.ai
para pesquisa no site Basta especificar site
nos parâmetros de consulta, como:
curl 'https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai&site=github.com'
É altamente recomendável usar o construtor de código para explorar diferentes combinações de parâmetros da API do Reader.
Como você já viu acima, é possível controlar o comportamento da API do Reader usando cabeçalhos de solicitação. Aqui está uma lista completa de cabeçalhos suportados.
Você pode ativar o recurso de legenda de imagem por meio do cabeçalho x-with-generated-alt: true
.
Você pode solicitar à API do Reader que encaminhe as configurações de cookies por meio do cabeçalho x-set-cookie
.
Observe que as solicitações com cookies não serão armazenadas em cache.
Você pode ignorar a filtragem readability
por meio do cabeçalho x-respond-with
, especificamente:
x-respond-with: markdown
retorna markdown sem passar pela reability
x-respond-with: html
retorna documentElement.outerHTML
x-respond-with: text
retorna document.body.innerText
x-respond-with: screenshot
retorna o URL da captura de tela da página da web
Você pode especificar um servidor proxy por meio do cabeçalho x-proxy-url
.
Você pode personalizar a tolerância do cache por meio do cabeçalho x-cache-tolerance
(número inteiro em segundos).
Você pode ignorar a página em cache (vida útil 3600) por meio do cabeçalho x-no-cache: true
(equivalente a x-cache-tolerance: 0
).
Se você já conhece a estrutura HTML da sua página de destino, você pode especificar x-target-selector
ou x-wait-for-selector
para direcionar a API do Reader para focar em uma parte específica da página.
Ao definir o cabeçalho x-target-selector
como um seletor CSS, a API do Reader retorna o conteúdo do elemento correspondente, em vez do HTML completo. Definir esse cabeçalho é útil quando a extração automática de conteúdo não consegue capturar o conteúdo desejado e você pode selecionar manualmente o destino correto.
Ao definir o cabeçalho x-wait-for-selector
como um seletor CSS, a API do Reader aguardará até que o elemento correspondente seja renderizado antes de retornar o conteúdo. Se você já especificou x-wait-for-selector
, esse cabeçalho poderá ser omitido se você planeja esperar pelo mesmo elemento.
r.jina.ai
para busca de aplicativo de página única (SPA)Muitos sites hoje em dia dependem de estruturas JavaScript e renderização do lado do cliente. Geralmente conhecido como Aplicativo de Página Única (SPA). Graças ao Puppeteer e ao navegador Chrome sem cabeça, o Reader suporta nativamente a busca desses sites. No entanto, devido à abordagem específica de alguns SPA são desenvolvidos, pode haver alguns cuidados extras a serem tomados.
Por definição dos padrões da web, o conteúdo que vem depois de #
em uma URL não é enviado ao servidor. Para atenuar esse problema, use o método POST
com parâmetro url
no corpo.
curl -X POST 'https://r.jina.ai/' -d 'url=https://example.com/#/route'
Alguns SPAs, ou mesmo alguns sites que não são estritamente SPAs, podem mostrar conteúdos pré-carregados antes de carregarem posteriormente o conteúdo principal de forma dinâmica. Neste caso, o Reader pode estar capturando o conteúdo pré-carregado em vez do conteúdo principal. Para mitigar esse problema, aqui estão algumas soluções possíveis:
x-timeout
Quando o tempo limite é especificado explicitamente, o Reader não tentará retornar mais cedo e aguardará a rede ociosa até que o tempo limite seja atingido. Isso é útil quando o site de destino eventualmente chega a uma rede ociosa.
curl 'https://example.com/' -H 'x-timeout: 30'
x-wait-for-selector
Quando wait-for-selector é especificado explicitamente, o Reader aguardará o aparecimento do seletor CSS especificado até que o tempo limite seja atingido. Isso é útil quando você sabe exatamente por qual elemento esperar.
curl 'https://example.com/' -H 'x-wait-for-selector: #content'
O modo de streaming é útil quando você descobre que o modo padrão fornece um resultado incompleto. Isso ocorre porque o Reader esperará um pouco mais até que a página seja renderizada de forma estável . Use o cabeçalho accept para alternar o modo de streaming:
curl -H "Aceitar: text/event-stream" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Os dados vêm em um fluxo; cada pedaço subsequente contém informações mais completas. O último pedaço deve fornecer o resultado mais completo e final. Se você vem de LLMs, observe que é um comportamento diferente do streaming de geração de texto dos LLMs.
Por exemplo, compare esses dois comandos curl abaixo. Você pode ver que o streaming fornece finalmente informações completas, enquanto o modo padrão não. Isso ocorre porque o carregamento do conteúdo neste site específico é acionado por alguns js depois que a página é totalmente carregada, e o modo padrão retorna a página "muito cedo".
curl -H 'x-no-cache: verdadeiro' https://access.redhat.com/security/cve/CVE-2023-45853 curl -H "Aceitar: text/event-stream" -H 'x-no-cache: true' https://r.jina.ai/https://access.redhat.com/security/cve/CVE-2023 -45853
Nota:
-H 'x-no-cache: true'
é usado apenas para fins de demonstração para ignorar o cache.
O modo de streaming também é útil se o seu sistema LLM/agente downstream exigir entrega imediata de conteúdo ou precisar processar dados em partes para intercalar tempos de processamento de E/S e LLM. Isso permite um acesso mais rápido e um tratamento de dados mais eficiente:
Reader API: streamContent1 ----> streamContent2 ----> streamContent3 ---> ...
| | |
v | |
Your LLM: LLM(streamContent1) | |
v |
LLM(streamContent2) |
v
LLM(streamContent3)
Observe que em termos de integridade: ... > streamContent3 > streamContent2 > streamContent1
, cada bloco subsequente contém informações mais completas.
Isso ainda é muito cedo e o resultado não é realmente um JSON “útil”. Ele contém apenas três campos url
, title
e content
. No entanto, você pode usar accept-header para controlar o formato de saída:
curl -H "Aceitar: aplicativo/json" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
O modo JSON é provavelmente mais útil em s.jina.ai
do que r.jina.ai
. Para s.jina.ai
com modo JSON, ele retorna 5 resultados em uma lista, cada um na estrutura de {'title', 'content', 'url'}
.
Todas as imagens nessa página que não possuem tag alt
podem ser legendadas automaticamente por um VLM (modelo de linguagem de visão) e formatadas como !(Image [idx]: [VLM_caption])[img_URL]
. Isso deve fornecer ao seu LLM somente texto downstream dicas suficientes para incluir essas imagens no raciocínio, seleção e resumo. Use o cabeçalho x-with-generated-alt para alternar o modo de streaming:
curl -H "X-With-Generated-Alt: verdadeiro" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
Você precisará das seguintes ferramentas para executar o projeto:
Node v18 (a compilação falha para a versão do Node >18)
CLI do Firebase ( npm install -g firebase-tools
)
Para backend, vá para o diretório backend/functions
e instale as dependências npm.
git clone [email protected]:jina-ai/reader.gitcd backend/functions instalação npm
thinapps-shared
? Você pode notar uma referência ao submódulo thinapps-shared
, um pacote interno que usamos para compartilhar código entre nossos produtos. Embora não seja de código aberto e não seja parte integrante das funções do Reader, ajuda principalmente com decoradores, registro, gerenciamento de segredos, etc.
Dito isto, esta é a única base de código por trás de https://r.jina.ai
, portanto, sempre que fizermos commit aqui, implantaremos a nova versão em https://r.jina.ai
.
Levante um problema com o URL com o qual você está tendo problemas. Iremos investigar e tentar consertar.
O Reader é apoiado pela Jina AI e licenciado sob Apache-2.0.