Il nodo del web access nei flussi agentici on-premise

Quando si costruisce un agente AI che deve interagire con il mondo esterno, la capacità di cercare e leggere pagine web diventa presto indispensabile. Per chi adotta stack locali e on-premise, però, l'uso di API commerciali come Tavily, Serper o Firecrawl introduce dipendenze esterne, costi ricorrenti e un potenziale esfiltrazione dei dati. La soluzione? Un setup interamente self-hosted che combina due strumenti open source: un motore di metasearch (SearXNG) e un estrattore di pagine con browser headless opzionale (Scrapling + Trafilatura).

Ricerca senza uscire di casa: SearXNG

SearXNG è un metasearch engine che si può far girare in un container Docker, esponendo un endpoint JSON. Basta una chiamata GET con il termine di ricerca e il formato json per ottenere una lista di risultati. L'utente ne ha limitato la complessità restituendo solo titolo, URL e snippet (descrizione breve, non il contenuto della pagina). Un dettaglio importante: nella configurazione di SearXNG va aggiunto "json" all'elenco dei formati di ricerca (search.formats), altrimenti l'endpoint non risponde. L'utente sconsiglia di usare istanze pubbliche di SearXNG per un uso programmatico: meglio averne una propria, sotto controllo.

Dall'snippet al testo pieno: Scrapling e Trafilatura

Gli snippet non bastano per un agente che deve ragionare su contenuti. Per estrarre il testo completo, il setup usa Scrapling con due percorsi: uno "veloce" (fetch senza browser, impersonando Chrome) per le pagine normali, e uno "stealth" con un vero browser headless che tenta di superare protezioni Cloudflare e sfide anti-bot. Se nonostante ciò la pagina resta bloccata, il sistema segnala il blocco parziale invece di restituire contenuti fasulli. Una volta ottenuto l'HTML, Trafilatura lo converte in Markdown, conservando link e tabelle, un formato molto più digeribile per un LLM. C'è anche un fallback a testo visibile se Trafilatura estrae troppo poco. Inoltre, i PDF vengono gestiti con pypdf; le pagine che presentano CAPTCHA vengono riconosciute e marcate; un controllo anti-SSRF impedisce richieste a indirizzi interni/privati. Infine, una funzione opzionale di summarization può accorciare pagine molto lunghe prima di passarle al modello principale.

Compromessi onesti e limiti da conoscere

L'approccio ha ovvi compromessi. Il percorso stealth con browser è lento e va tenuto come fallback. La qualità della ricerca di SearXNG dipende dai motori upstream configurati e dai limiti di rate: non è paragonabile a un servizio a pagamento, ma per molti casi d'uso è sufficiente. Il setup non è una fortezza: le query passano comunque attraverso i motori di ricerca esterni (SearXNG inoltra la richiesta), quindi non si ha "zero contatto con terze parti", ma si evita di dover condividere chiavi API o pagare a chiamata. L'autore chiede anche alternative più leggere al browser headless per le pagine difficili: un segnale che la comunità sta cercando di ridurre l'attrito.

Cosa significa per chi sceglie l'on-premise

Questa combinazione mostra che è possibile costruire un'agente IA con accesso a Internet senza cedere sovranità sui dati né accumulare costi API. In un contesto dove il TCO e il controllo dell'infrastruttura contano, strumenti come SearXNG e Scrapling si inseriscono in un ecosistema di self-hosting sempre più maturo. AI-RADAR osserva da tempo come le soluzioni local-first stiano evolvendo: non solo per l'inference LLM, ma anche per i servizi ausiliari che alimentano gli agenti. Il fatto che un framework del genere possa girare interamente in Docker, senza chiavi esterne, riduce la superficie di attacco e semplifica il deployment in ambienti air-gapped o vigilati da normative come il GDPR.

Resta la sfida della qualità della ricerca, ma la direzione è chiara.