0Pricing
AI Agents · Lezione

Un agente di ricerca che naviga sul Web

Combini uno strumento di ricerca, uno di recupero e un LLM per studiare un argomento e scrivere un riepilogo corredato da fonti.

Un agente di ricerca che naviga sul Web è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Obiettivo del progetto

Costruisca un agente che faccia ricerche su un argomento cercando sul web, recuperando pagine e scrivendo un riepilogo con le fonti, come una piccola versione di Perplexity.

Strumenti necessari

  1. search — interroga una API di ricerca (Tavily, Serper, Brave) e restituisce i risultati
  2. fetch_url — scarica una pagina e restituisce il testo ripulito
  3. answer — l'agente scrive il riepilogo finale con le citazioni

Step 1: Search Tool

import requests

def search(query: str, k: int = 5) -> list[dict]:
    r = requests.post(
        'https://api.tavily.com/search',
        json={'api_key': TAVILY_KEY, 'query': query, 'max_results': k}
    )
    return r.json()['results']   # list of {url, title, snippet}

Step 2: Fetch Tool

from bs4 import BeautifulSoup

def fetch_url(url: str) -> str:
    r = requests.get(url, timeout=10)
    soup = BeautifulSoup(r.text, 'html.parser')
    for tag in soup(['script', 'style', 'nav', 'footer']):
        tag.decompose()
    return soup.get_text(separator='\n', strip=True)[:5000]   # truncate

Step 3: Tool Definitions

tools = [
    {'type': 'function', 'function': {
        'name': 'search',
        'description': 'Search the web for a query, return top results with URLs',
        'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
    }},
    {'type': 'function', 'function': {
        'name': 'fetch_url',
        'description': 'Download the text of a URL',
        'parameters': {'type': 'object', 'properties': {'url': {'type': 'string'}}, 'required': ['url']}
    }}
]
import json
print(json.dumps(tools, indent=2))

Step 4: The Agent Loop

def research(question, max_steps=8):
    messages = [
        {'role': 'system', 'content': 'You are a research agent. Use search and fetch_url to gather facts. Cite each claim with a URL.'},
        {'role': 'user', 'content': question}
    ]
    for _ in range(max_steps):
        r = oai.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=tools)
        msg = r.choices[0].message
        messages.append(msg)
        if not msg.tool_calls:
            return msg.content
        for tc in msg.tool_calls:
            result = dispatch(tc)
            messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})
    return 'Step limit reached'

Tool Dispatcher

def dispatch(tc):
    args = json.loads(tc.function.arguments)
    if tc.function.name == 'search':
        return search(**args)
    if tc.function.name == 'fetch_url':
        return fetch_url(**args)
    return {'error': 'unknown tool'}

Aggiungere un limite ai passaggi

Senza un limite, l'agente può entrare in un ciclo infinito. max_steps=8 è un valore predefinito ragionevole.

Troncare le pagine recuperate

La maggior parte delle pagine supera i 50 KB: sono decisamente troppo grandi. Le tronchi a 5000 caratteri (circa 1300 token). Raramente il modello ha bisogno di altro.

Rispettare robots.txt

La navigazione in produzione deve rispettare robots.txt e i Termini di servizio del sito. In caso di dubbio, utilizzi un servizio gestito di ricerca e recupero.

Memorizzare nella cache i risultati

La stessa query e lo stesso URL verranno richiesti spesso. Memorizzi i risultati in Redis per un'ora:

@lru_cache(maxsize=1000)
def cached_fetch(url):
    return fetch_url(url)

Gestire gli errori

Gli errori di rete sono normali. Restituisca l'errore al modello, così potrà provare un'altra fonte:

try:
    return fetch_url(url)
except Exception as e:
    return {'error': f'Could not fetch {url}: {e}'}

Forzare le citazioni

Termini il prompt di sistema con: "La risposta finale deve includere gli URL per ogni affermazione, ad esempio [1] https://..." — e valuti un controllo dello schema dell'output.

Controllare il costo

Gli agenti di ricerca sono costosi: da 5 a 15 chiamate agli strumenti per domanda, ognuna delle quali recupera kilobyte di dati. Imposti un limite di budget per query.

Limite dei passaggi

Perché impostare un limite max_steps sul ciclo dell'agente?

Riepilogo

Ricerca + recupero + LLM + un limite ai passaggi = un agente di ricerca funzionante in 50 righe. Un eccellente terzo progetto.

Domande Frequenti

La lezione «Un agente di ricerca che naviga sul Web» è gratuita?

Sì — il testo completo di «Un agente di ricerca che naviga sul Web» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Un agente di ricerca che naviga sul Web»?

Combini uno strumento di ricerca, uno di recupero e un LLM per studiare un argomento e scrivere un riepilogo corredato da fonti. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Un agente di ricerca che naviga sul Web»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Un bot di domande e risposte sui Suoi documenti
  2. Un agente che spiega il codice
  3. Un agente di ricerca che naviga sul Web
  4. Un assistente SQL per il Suo database
← Torna a AI Agents