{"id":20031,"date":"2026-09-28T00:19:15","date_gmt":"2026-09-28T04:19:15","guid":{"rendered":"https:\/\/wp.glbgpt.com\/?p=20031"},"modified":"2026-09-28T00:19:17","modified_gmt":"2026-09-28T04:19:17","slug":"perplexity-api-tutorial","status":"publish","type":"post","link":"https:\/\/wp.glbgpt.com\/it\/hub\/perplexity-api-tutorial","title":{"rendered":"Tutorial sull'API Perplexity: come realizzare passo dopo passo un circuito di risposta con massa sul sorgente"},"content":{"rendered":"<style>\n[class*=\"pat-\"]{box-sizing:border-box}\np.pat-p,ul.pat-list{font:17px\/1.8 system-ui,-apple-system,\"Segoe UI\",sans-serif;color:#243F46;margin:0 0 22px}\np.pat-eyebrow{font:750 12px\/1.5 system-ui,sans-serif;letter-spacing:.12em;color:#35756f;margin:0 0 22px}\nh2.pat-h2{font:750 30px\/1.28 system-ui,sans-serif;color:#173E48;border-top:1px solid #D5E1DB;padding-top:23px;margin:58px 0 22px;scroll-margin-top:24px}\nh3.pat-h3{font:700 22px\/1.4 system-ui,sans-serif;color:#245D56;margin:30px 0 14px}\n.pat-p a,.pat-list a,.pat-table a{color:#146B61;text-decoration:underline;text-underline-offset:3px}\n.pat-p code,.pat-list code,.pat-table code{font:.88em Consolas,monospace;overflow-wrap:anywhere;background:#EEF3EF;padding:2px 4px;border-radius:3px}\np.pat-quick{background:#F5EDDA;border-left:4px solid #B99749;padding:23px 26px}\np.pat-note{background:#EEF4EF;border-radius:10px;padding:20px 24px}\nul.pat-toc{background:#EEF4EF;padding:24px 24px 24px 46px;border-radius:10px;columns:2;column-gap:32px;font-size:15px}\n.pat-list li{margin:8px 0;break-inside:avoid}\nul.pat-checklist{background:#F7F2E8;border:1px solid #DFD1B2;border-radius:10px;padding:20px 24px 20px 46px}\nfigure.pat-table{display:block;max-width:100%;overflow-x:auto;border:1px solid #CEDDD5;border-radius:10px;margin:26px 0}\n.pat-table table{border-collapse:collapse;width:100%;min-width:610px;font:14px\/1.65 system-ui,sans-serif}\n.pat-table th{background:#215957;color:white;text-align:left;padding:14px 16px;font-weight:650}\n.pat-table td{padding:13px 16px;vertical-align:top;border-bottom:1px solid #DFE7DF}\n.pat-table tbody tr:nth-child(even){background:#F2F6F0}\n.pat-table td:first-child{font-weight:600}\npre.pat-code{max-width:100%;overflow-x:auto;white-space:pre;padding:24px;border-radius:10px;background:#142F3C;color:#ECF7EF;font:14px\/1.7 Consolas,monospace;margin:24px 0}\n.pat-code code{font:inherit;white-space:pre;overflow-wrap:normal}\nfigure.pat-image{margin:30px 0}.pat-image img{display:block;width:100%;height:auto;border-radius:12px}\n.pat-image figcaption{font:14px\/1.6 system-ui,sans-serif;color:#627773;margin-top:10px}\n@media(max-width:650px){p.pat-p,ul.pat-list{font-size:16px}h2.pat-h2{font-size:26px;margin-top:44px}h3.pat-h3{font-size:20px}ul.pat-toc{columns:1}pre.pat-code{padding:18px;font-size:13px}p.pat-quick{padding:18px}.pat-table th,.pat-table td{padding:11px 12px}}\n\n\/* Native image blocks: same presentation as the approved preview. *\/\nfigure.wp-block-image.pat-image{display:block;max-width:100%;margin:30px 0}\nfigure.wp-block-image.pat-official{width:100%;max-width:848px;margin:30px auto}\nfigure.pat-image>a{display:block}figure.pat-image img{display:block;width:100%;max-width:100%;height:auto;border-radius:12px}\nfigure.pat-image figcaption.wp-element-caption{font:14px\/1.6 system-ui,sans-serif;color:#627773;margin:10px 0 0;text-align:left}\n.pat-image figcaption a{color:#146B61;text-decoration:underline;text-underline-offset:3px}\n<\/style>\n\n\n\n<p class=\"pat-p pat-eyebrow wp-block-paragraph\">API PERPLEXITY \u00b7 TUTORIAL IN PYTHON \u00b7 2026<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Questo tutorial sull'API Perplexity illustra come creare uno script Python che restituisca una risposta con fonti web cliccabili. Utilizza l'API Agent per inviare una domanda, leggere la risposta, associare i marcatori di citazione agli ID delle fonti ed esportare un file Markdown che potrai esaminare.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Useremo una sola domanda per tutto il testo: <em>In che modo un piccolo progetto in Python dovrebbe utilizzare gli ambienti virtuali e gestire le dipendenze?<\/em> Inizia con una richiesta di base, poi aggiungi l'analisi della sorgente e i filtri di dominio. Sono necessarie conoscenze di base di Python e un account sviluppatore Perplexity con la fatturazione API configurata.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Se anche tu utilizzi l'intelligenza artificiale per le tue ricerche e i tuoi scritti quotidiani, <a href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\">Perplexity su GlobalGPT<\/a> offre l'accesso all'interno di un unico spazio di lavoro basato sull'intelligenza artificiale, riducendo la necessit\u00e0 di passare da uno strumento all'altro. Tale flusso di lavoro per gli utenti finali \u00e8 distinto dalla chiave di sviluppo e dalla fatturazione delle API utilizzate in questo contesto.<\/p>\n\n\n\n<p class=\"pat-p pat-quick wp-block-paragraph\"><strong>Risposta rapida:<\/strong> Utilizza il <code>veloce<\/code> Impostazione predefinita dell'agente per una prima risposta basata sul web, leggi <code>response.output_text<\/code> per la risposta, e leggi il <code>risultati_della_ricerca<\/code> voce in <code>risposta.output<\/code> per le fonti. Abbina ciascun indicatore in linea a una fonte in base al valore restituito <code>id<\/code>. Una citazione significa che \u201cla risposta porta a questo risultato\u201d; non garantisce che la pagina dimostri ogni affermazione.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Esempio di stato:<\/strong> La sintassi della richiesta \u00e8 conforme alla documentazione ufficiale consultata il 28 settembre 2026. Lo strumento di citazione \u00e8 stato verificato utilizzando dati di esempio offline; per questo tutorial non \u00e8 stata effettuata alcuna richiesta API a pagamento. I record di origine mostrati nell'illustrazione sono esempi illustrativi.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\"><img alt=\"\" decoding=\"async\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2025\/10\/image-33.png\" class=\"wp-image-2306\"\/><\/a><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-black-color has-text-color has-background has-link-color has-medium-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\" style=\"background-color:#fec33a;line-height:1\"><strong>Prova ora Perplexity &gt;<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list pat-list pat-toc\">\n<li><a href=\"#api-choice\">Quale API Perplexity dovresti utilizzare?<\/a><\/li>\n\n\n\n<li><a href=\"#setup\">Passaggio 1: Ottenere una chiave API e configurare Python<\/a><\/li>\n\n\n\n<li><a href=\"#first-request\">Fase 2: Invia la tua prima richiesta con messa a terra alla sorgente<\/a><\/li>\n\n\n\n<li><a href=\"#sources\">Fase 3: Estrarre la risposta e abbinarla alle relative fonti<\/a><\/li>\n\n\n\n<li><a href=\"#filters\">Passaggio 4: Migliora la risposta con i filtri di ricerca<\/a><\/li>\n\n\n\n<li><a href=\"#export\">Passaggio 5: Salva una risposta completa con fonti cliccabili<\/a><\/li>\n\n\n\n<li><a href=\"#advanced\">Streaming e output strutturato<\/a><\/li>\n\n\n\n<li><a href=\"#cost-errors\">Costi ed errori comuni<\/a><\/li>\n\n\n\n<li><a href=\"#migration\">Passaggio da un vecchio tutorial su Sonar<\/a><\/li>\n\n\n\n<li><a href=\"#faq\">Domande frequenti<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"api-choice\" class=\"wp-block-heading pat-h2\">Tutorial sull'API Perplexity: come scegliere l'API giusta<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Si tratta di interfacce per sviluppatori. Il prodotto di chat potrebbe integrare funzionalit\u00e0 simili in modo diverso; la nostra panoramica su <a href=\"https:\/\/www.glbgpt.com\/hub\/what-are-the-main-features-of-perplexity-ai\/\">Caratteristiche di Perplexity<\/a> descrive l'esperienza dell'utente.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Di Perplexity <a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/quickstart\">Guida rapida all\u2019API ufficiale<\/a> raggruppa i suoi prodotti per sviluppatori in base all'attivit\u00e0 che devi svolgere. Scegli la superficie pi\u00f9 piccola che generi i dati di cui la tua applicazione ha effettivamente bisogno.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>API<\/th><th>La migliore vestibilit\u00e0<\/th><th>Cosa riceve il tuo codice<\/th><\/tr><\/thead><tbody><tr><td><strong>Agente<\/strong><\/td><td>Una risposta completa basata su ricerche sul web o altri strumenti<\/td><td>Elementi di output digitati, testo delle risposte e record dei risultati di ricerca<\/td><\/tr><tr><td><strong>Ricerca<\/strong><\/td><td>L'applicazione provveder\u00e0 autonomamente a ordinare, filtrare o riassumere i risultati<\/td><td>Risultati della ricerca senza chiedere a Perplexity di scrivere la risposta definitiva<\/td><\/tr><tr><td><strong>Router<\/strong><\/td><td>Indirizzare le richieste verso un modello adeguato<\/td><td>Una risposta modello selezionata tramite il router<\/td><\/tr><tr><td><strong>Incorporamenti<\/strong><\/td><td>Ricerca semantica e indice RAG<\/td><td>Vettori per il proprio livello di ricerca<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Questo tutorial sceglie Agent perch\u00e9 il risultato desiderato \u00e8 una risposta completa corredata delle relative fonti. Per un quadro pi\u00f9 ampio del flusso di lavoro di ricerca, consulta la nostra guida a <a href=\"https:\/\/www.glbgpt.com\/hub\/how-to-use-perplexity-for-research\/\">utilizzo di Perplexity a fini di ricerca<\/a>.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Informazioni su Sonar:<\/strong> L'attuale <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/overview\">Panoramica sulla migrazione<\/a> afferma che Sonar Chat Completions continua a essere supportato e raccomanda l\u2019uso di Agent per tutti i nuovi progetti. Questo tutorial utilizza quindi Agent. Non si deve dedurre che una vecchia integrazione abbia smesso di funzionare solo perch\u00e9 in un tutorial precedente era indicata una scadenza.<\/p>\n\n\n\n<h2 id=\"setup\" class=\"wp-block-heading pat-h2\">Passaggio 1: Ottenere una chiave API e configurare Python<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Creare la chiave e preparare la fatturazione<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/console.perplexity.ai\/\">Apri la console dell'API Perplexity<\/a>, scegli o crea il progetto che intendi utilizzare, configura la fatturazione delle API e crea una chiave. Conservala sul lato server. Le API per sviluppatori vengono fatturate separatamente dagli abbonamenti per gli utenti; controlla il saldo del tuo progetto prima di effettuare richieste.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Installa l'SDK ufficiale<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>python -m venv .venv\n\n# macOS\/Linux: scegli questo comando di attivazione\nsource .venv\/bin\/activate\n\n# Windows PowerShell: usa invece questo comando\n.venv\\Scripts\\Activate.ps1\n\npython -m pip install --upgrade perplexityai<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Per il codice riportato di seguito, utilizzare Python 3.10 o versioni successive. Attivare l'ambiente utilizzando il comando corrispondente al proprio sistema operativo, quindi installare l'SDK. Se PowerShell blocca l'attivazione, utilizzare <code>.venv\\Scripts\\python.exe<\/code> al posto di <code>python<\/code> per l'installazione e l'esecuzione dello script.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Il nome del pacchetto \u00e8 <code>perplexityai<\/code>, mentre l'importazione in Python \u00e8 <code>perplessit\u00e0<\/code>. Utilizza un ambiente virtuale in modo che le dipendenze di questo tutorial non modifichino un altro progetto.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">L'esempio utilizza una domanda relativa alla programmazione perch\u00e9 le sue affermazioni possono essere verificate sulla base della documentazione aggiornata. La nostra guida a <a href=\"https:\/\/www.glbgpt.com\/hub\/is-perplexity-good-for-coding\/\">Perplexity per la codifica<\/a> spiega come il supporto alla ricerca si integri con la verifica autonoma del codice.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Imposta la chiave API come variabile d'ambiente<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code># macOS\/Linux\nexport PERPLEXITY_API_KEY=\"la-tua-chiave-qui\"\n\n# Windows PowerShell\n$env:PERPLEXITY_API_KEY = \"la-tua-chiave-qui\"<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">L'SDK legge <code>PERPLEXITY_API_KEY<\/code> al momento della creazione del client. Non incollare la chiave in un blocco note, non salvarla su Git n\u00e9 inviarla a un browser. Se utilizzi un file .env in locale, mantieni tale file fuori dal controllo di versione e caricalo utilizzando la libreria di variabili d\u2019ambiente che hai scelto.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"848\" height=\"632\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication.webp\" alt=\"Documentazione ufficiale di Perplexity che illustra l&#039;installazione dell&#039;SDK Python e la variabile d&#039;ambiente PERPLEXITY_API_KEY.\" class=\"wp-image-20033\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication.webp 848w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication-300x224.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication-16x12.webp 16w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication-767x572.webp 767w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/figure>\n\n\n\n<h2 id=\"first-request\" class=\"wp-block-heading pat-h2\">Fase 2: Invia la tua prima richiesta con messa a terra alla sorgente<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/quickstart\">Guida rapida all'API Agent<\/a> documenti <code>POST https:\/\/api.perplexity.ai\/v1\/agent<\/code>. Il suo client Python incapsula la richiesta con <code>client.responses.create()<\/code>. Il <code>veloce<\/code> L'impostazione predefinita abilita la ricerca sul Web, il che permette di mantenere breve il primo esempio.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>da perplexity import Perplexity\n\nclient = Perplexity()\n\nquestion = (\n    \"In che modo un piccolo progetto Python dovrebbe utilizzare gli ambienti virtuali \"\n    \"e gestire le dipendenze?\"\n)\n\nresponse = client.responses.create(\n    preset=\"fast\",\n    input=question,\n)\n\nprint(response.output_text)<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Salva il frammento di codice come <code>first_request.py<\/code>, quindi eseguire <code>python first_request.py<\/code> nello stesso terminale in cui hai impostato la chiave. Se la chiamata va a buon fine, dovrebbe comparire un testo di risposta non vuoto. Se hai bisogno di una conferma del risultato, passa alla fase di estrazione del codice sorgente; il testo da solo non costituisce una verifica completa.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">La propriet\u00e0 \"convenienza\" <code>testo_di_uscita<\/code> ti fornisce il testo della risposta finale. Conserva anche l'intero oggetto della risposta: i record di origine e i dettagli sull'utilizzo si trovano nell'output digitato, non solo nel paragrafo stampato.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">La stessa richiesta con cURL<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>curl https:\/\/api.perplexity.ai\/v1\/agent \\\n  -H \"Authorization: Bearer $PERPLEXITY_API_KEY\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"preset\": \"fast\",\n    \"input\": \"In che modo un piccolo progetto Python dovrebbe utilizzare gli ambienti virtuali e gestire le dipendenze?\"\n  }'<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Questo esempio di cURL utilizza la sintassi Bash per macOS\/Linux o una shell compatibile con Bash. Ogni esecuzione genera una nuova richiesta a pagamento. Utilizzalo solo quando devi isolare un problema relativo all'endpoint da un problema relativo a Python; non eseguire tutte le versioni solo per seguire l'esempio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Equivalente in JavaScript lato server<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Node.js 18+ include <code>recuperare<\/code>, quindi un \"smoke test\" lato server non richiede alcuna libreria aggiuntiva. Leggi il codice sorgente <code>output<\/code> elementi presenti nella risposta JSON; l\u2019SDK Python offre la comoda <code>testo_di_uscita<\/code> accessorio.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>const res = await fetch(\"https:\/\/api.perplexity.ai\/v1\/agent\", {\n  method: \"POST\",\n  headers: {\n    Authorization: `Bearer ${process.env.PERPLEXITY_API_KEY}`,\n    \"Content-Type\": \"application\/json\"\n  },\n  body: JSON.stringify({\n    preset: \"fast\",\n    input: \"In che modo un piccolo progetto Python dovrebbe utilizzare gli ambienti virtuali e gestire le dipendenze?\"\n  })\n});\nif (!res.ok) throw new Error(`Perplexity HTTP ${res.status}`);\nconsole.log(await res.json());<\/code><\/pre>\n\n\n\n<h2 id=\"sources\" class=\"wp-block-heading pat-h2\">Fase 3: Estrarre la risposta e abbinarla alle relative fonti<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/how-to#inline-citations\">Le linee guida ufficiali sulla citazione<\/a> distingue la prosa dai relativi atti processuali. Le fonti giungono in un <code>output<\/code> elemento di tipo <code>risultati_della_ricerca<\/code>. Leggi l'articolo <code>risultati<\/code> e abbinare ciascun indicatore di citazione al risultato corrispondente <code>id<\/code>. Un risultato ha un titolo e un URL; gestisci i valori mancanti prima di visualizzarlo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"848\" height=\"880\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations.webp\" alt=\"Documentazione ufficiale di Perplexity che illustra le citazioni numerate, le citazioni con indicazione della fonte e i marcatori di corrispondenza agli ID dei risultati di ricerca.\" class=\"wp-image-20034\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations.webp 848w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations-289x300.webp 289w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations-12x12.webp 12w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations-767x796.webp 767w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Quest'ultimo dettaglio \u00e8 importante. Non dare per scontato che la \u201ccitazione 1\u201d sia sempre il primo elemento di un array dopo che un altro strumento ha aggiunto un elemento. Crea una ricerca in base all\u2019ID, quindi identifica gli indicatori che compaiono effettivamente nella risposta.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>def field(obj, name, default=None):\n    return obj.get(name, default) if isinstance(obj, dict) else getattr(obj, name, default)\n\ndef source_index(output):\n    sources = {}\n    for item in output or []:\n    if field(item, \"type\") != \"search_results\":\n        continue\n    for result in field(item, \"results\", []) or []:\n            sid, url = field(result, \"id\"), field(result, \"url\")\n if sid is None:\n continue\n key = str(sid)\n if key in sources and field(sources[key], \"url\") != url:\n                raise ValueError(f\"URL in conflitto per l\u2019ID della fonte {key}\")\n sources[key] = result\n    return sources\n\nsources = source_index(response.output)\nprint(sources.get(\"7\"))  # Un ID della fonte, non la posizione 7 dell\u2019array<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Il codice completo riportato di seguito riconosce <code>[1]<\/code> e <code>[web:1]<\/code>, i modelli di citazione documentati per le impostazioni predefinite pi\u00f9 comuni. La funzione di supporto sopra riportata gestisce sia gli oggetti SDK che i dizionari e rifiuta gli URL in conflitto assegnati allo stesso ID. Non rinumera i risultati n\u00e9 ipotizza una fonte mancante.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Per un approfondimento sul tema della qualit\u00e0 delle citazioni, consulta il nostro <a href=\"https:\/\/www.glbgpt.com\/hub\/perplexity-citation-accuracy\/\">Guida alla precisione delle citazioni Perplexity<\/a>. Una citazione costituisce una traccia di controllo; la tua applicazione necessita comunque di una politica per le pagine non aggiornate, gli URL duplicati e le affermazioni non comprovate.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Ad esempio, se l'array restituito contiene l'ID 2 seguito dall'ID 7, il marcatore <code>[7]<\/code> deve rimandare all\u2019ID 7. Se lo stesso URL compare sia sotto l\u2019ID 7 che sotto l\u2019ID 9, \u00e8 possibile visualizzare quell\u2019URL una sola volta, mantenendo entrambi gli ID. Se l\u2019ID 8 non viene mai generato, mantenere <code>[8]<\/code> visibile e contrassegnarlo come non corrispondente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"597\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-1024x597.webp\" alt=\"Il riferimento 7 corrisponde al risultato della ricerca con ID 7, anche quando in primo luogo viene visualizzato un risultato diverso.\" class=\"wp-image-20035\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-1024x597.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-300x175.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-768x448.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-18x10.webp 18w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow.webp 1440w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 id=\"filters\" class=\"wp-block-heading pat-h2\">Passaggio 4: Migliora la risposta con i filtri di ricerca<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Una volta che la ricerca di base funziona, restringi il campo di ricerca quando la tua domanda ha un ambito di riferimento ben definito. Per quanto riguarda la creazione di pacchetti in Python, la documentazione del linguaggio e la guida alla creazione di pacchetti sono punti di partenza migliori rispetto a un tutorial qualsiasi.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>response = client.responses.create(\n    preset=\"fast\",\n    input=(\n \"In che modo un piccolo progetto Python dovrebbe utilizzare gli ambienti virtuali \"\n \"e gestire le dipendenze? Cita le linee guida che utilizzi.\"\n    ),\n    tools=[\n {\n \"type\": \"web_search\",\n \"filters\": {\n \"search_domain_filter\": [\n \"docs.python.org\",\n                    \"packaging.python.org\",\n ]\n },\n }\n    ],\n)<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Il filtro va inserito nella configurazione dello strumento di ricerca sul web. La documentazione sulla migrazione descrive inoltre <code>filtro_per_data_di_pubblicazione<\/code> per domande in cui il fattore tempo \u00e8 determinante. Ricorri al criterio della recency quando la domanda dipende da pubblicazioni o notizie recenti; una combinazione troppo ristretta di ambito e data potrebbe lasciarti con prove insufficienti.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Per una domanda relativa alle pubblicazioni dell'ultimo mese, aggiungi <code>\"search_recency_filter\": \"mese\"<\/code> accanto a <code>filtro_dominio_ricerca<\/code>. Non includerlo nell'esempio dell'ambiente virtuale: la documentazione stabile potrebbe riportare una data di pubblicazione precedente. Se si passa da un modello predefinito a uno selezionato direttamente, includere esplicitamente lo strumento di ricerca sul web.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Durante lo sviluppo, confronta i risultati filtrati con quelli non filtrati. Se la risposta cambia, registra il motivo: un filtro potrebbe eliminare contesti utili oppure pagine con scarsa autorevolezza che distraevano il modello. Si tratta di una scelta di qualit\u00e0, non di una garanzia che ogni pagina rimanente sia corretta.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Se la tua applicazione richiede solo link ordinati per rilevanza e snippet, chiama la funzione <a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/quickstart\">API di ricerca<\/a> ed eseguire la sintesi autonomamente. Tale separazione pu\u00f2 facilitare la revisione e la memorizzazione nella cache. Per un confronto pi\u00f9 ampio con Google, si veda <a href=\"https:\/\/www.glbgpt.com\/hub\/how-is-perplexity-different-than-google\/\">In che modo Perplexity si differenzia da Google<\/a>.<\/p>\n\n\n\n<h2 id=\"export\" class=\"wp-block-heading pat-h2\">Passaggio 5: Salva una risposta completa con fonti cliccabili<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Salva quanto segue con il nome <code>perplexity_tutorial.py<\/code>. \u00c8 un sistema autonomo: include l\u2019helper per le fonti, applica il filtro di dominio della documentazione Python, trasforma i marcatori di citazione corrispondenti in link, raggruppa gli URL duplicati senza perdere gli ID e salva la risposta completa dell\u2019SDK insieme al Markdown.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>from pathlib import Path\nfrom collections import defaultdict\nfrom urllib.parse import urlsplit\nimport json\nimport re\n\nQUESTION = (\n    \"How should a small Python project use virtual environments \"\n    \"and manage dependencies?\"\n)\n# Supports the documented &#91;1] and &#91;web:1] forms in prose answers.\nCITATION_RE = re.compile(r\"(?&lt;!!)\\&#91;(?:web:)?(\\d+)\\](?!\\()\")\n\ndef field(obj, name, default=None):\n    return obj.get(name, default) if isinstance(obj, dict) else getattr(obj, name, default)\n\ndef source_index(output):\n    sources = {}\n    for item in output or &#91;]:\n        if field(item, \"type\") != \"search_results\":\n            continue\n        for result in field(item, \"results\", &#91;]) or &#91;]:\n            sid, url = field(result, \"id\"), field(result, \"url\")\n            if sid is None:\n                continue\n            key = str(sid)\n            if key in sources and field(sources&#91;key], \"url\") != url:\n                raise ValueError(f\"Conflicting URLs for source ID {key}\")\n            sources&#91;key] = result\n    return sources\n\ndef safe_url(value):\n    if not isinstance(value, str):\n        return None\n    parsed = urlsplit(value)\n    if parsed.scheme not in (\"http\", \"https\") or not parsed.netloc:\n        return None\n    # Protect a Markdown angle-bracket destination.\n    return value.replace(\"&lt;\", \"%3C\").replace(\"&gt;\", \"%3E\").replace(\" \", \"%20\")\n\ndef md_label(value):\n    return re.sub(r\"(&#91;\\\\\\&#91;\\]&lt;&gt;])\", r\"\\\\\\1\", str(value).replace(\"\\n\", \" \"))\n\ndef export_markdown(answer, output, question=QUESTION):\n    sources = source_index(output)\n    cited = list(dict.fromkeys(CITATION_RE.findall(answer)))\n    missing = &#91;\n        sid for sid in cited\n        if sid not in sources or not safe_url(field(sources&#91;sid], \"url\"))\n    ]\n    def link(match):\n        sid = match.group(1)\n        url = safe_url(field(sources.get(sid, {}), \"url\"))\n        return f\"&#91;{match.group(0)&#91;1:-1]}](&lt;{url}&gt;)\" if url else match.group(0)\n\n    # Keep every ID when the same URL appears under different IDs.\n    grouped = defaultdict(list)\n    titles = {}\n    for sid in cited:\n        source = sources.get(sid, {})\n        url = safe_url(field(source, \"url\"))\n        if url:\n            grouped&#91;url].append(sid)\n            titles.setdefault(url, field(source, \"title\") or url)\n\n    lines = &#91;\"# Source-grounded answer\", \"\", question, \"\",\n             CITATION_RE.sub(link, answer), \"\", \"## Cited sources\", \"\"]\n    for url, ids in grouped.items():\n        lines.append(f\"- IDs {', '.join(ids)}: &#91;{md_label(titles&#91;url])}](&lt;{url}&gt;)\")\n    if missing:\n        lines.append(\"- Unmatched or unusable source IDs: \" + \", \".join(missing))\n    if not cited:\n        lines.append(\"- No recognized inline citations; evidence not verified.\")\n    lines.extend(&#91;\"\", \"Source links require review; matching IDs does not verify claims.\"])\n    return \"\\n\".join(lines) + \"\\n\"\n\ndef main():\n    from perplexity import Perplexity\n    response = Perplexity().responses.create(\n        preset=\"fast\",\n        input=QUESTION,\n        tools=&#91;{\"type\": \"web_search\", \"filters\": {\n            \"search_domain_filter\": &#91;\"docs.python.org\", \"packaging.python.org\"]\n        }}],\n    )\n    answer = response.output_text or \"\"\n    if not answer.strip():\n        raise RuntimeError(\"No answer text returned; inspect response status and errors.\")\n    Path(\"perplexity-response.json\").write_text(\n        response.model_dump_json(indent=2), encoding=\"utf-8\"\n    )\n    Path(\"perplexity-answer.md\").write_text(\n        export_markdown(answer, response.output), encoding=\"utf-8\"\n    )\n    print(\"Saved perplexity-answer.md and perplexity-response.json\")\n\nif __name__ == \"__main__\":\n    main()\n\n<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Esegui <code>python perplexity_tutorial.py<\/code> dalla directory del progetto. Scrive <code>perplexity-answer.md<\/code> e <code>perplexity-response.json<\/code> l\u00ec, sostituendo i file precedenti con quelli che hanno gli stessi nomi. Il file Markdown contiene la domanda, la risposta collegata, le fonti citate ed eventuali ID non corrispondenti. Il file JSON conserva l'output restituito e le informazioni sull'utilizzo a fini diagnostici.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Il parser \u00e8 progettato per analizzare le forme con un singolo marcatore documentate nella prosa. Non si tratta di un parser Markdown completo: se la vostra applicazione richiede Markdown arbitrario, esempi di codice o citazioni come <code>[1,2]<\/code>, aggiungere un renderer che riconosca la sintassi e dei test per quel formato. Non reinterpretare silenziosamente i marcatori sconosciuti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Verifica se la pagina collegata conferma la risposta<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">In questo esempio, verifica se la documentazione citata spiega effettivamente l\u2019isolamento dell\u2019ambiente e l\u2019installazione delle dipendenze. Un link alla homepage di Python \u00e8 meno utile rispetto alla sezione pertinente della documentazione. Se una risposta consiglia un comando specifico, controlla il sistema operativo e la versione di Python prima di eseguirlo. Mark sostiene che il testo citato non giustifichi il contrassegno \u201cirrisolto\u201d.<\/p>\n\n\n\n<h2 id=\"advanced\" class=\"wp-block-heading pat-h2\">Aggiungere un output in streaming o strutturato quando necessario<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Streaming<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Lo streaming migliora la latenza percepita in un'interfaccia di chat. La guida alla migrazione degli agenti descrive gli eventi delta di testo quali <code>response.output_text.delta<\/code>. Visualizza quei delta man mano che arrivano, ma raccogli anche gli elementi della risposta finale, in modo che l'interfaccia utente possa mostrare le fonti una volta completata la risposta. Un semplice flusso di testo non costituisce di per s\u00e9 un elenco di fonti.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Quanto segue \u00e8 solo una visualizzazione testuale. Conserva l'esportazione non in streaming per il tuo primo record sorgente completo; un'implementazione di streaming in produzione deve inoltre raccogliere gli eventi relativi agli strumenti e all'output e gestire le esecuzioni interrotte o non riuscite.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>stream = client.responses.create(\n    preset=\"fast\", input=question, stream=True\n)\nfor event in stream:\n    if event.type == \"response.output_text.delta\":\n print(event.delta, end=\"\", flush=True)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Output strutturato<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Utilizzare una risposta strutturata quando il codice a valle richiede campi quali <code>risposta<\/code>, <code>nota_di_fiducia<\/code> e <code>domande_di_approfondimento<\/code>. Mantieni gli ID di origine in un campo separato oppure conserva l'output originale di Agent, in modo che lo schema non nasconda le prove. Verifica lo schema sui tuoi casi di test prima di utilizzarlo in un flusso di lavoro.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Il riferimento alla migrazione mantiene <code>formato_risposta<\/code> con <code>tipo: \"json_schema\"<\/code> per un output strutturato. Definire i campi obbligatori e, ove opportuno, impedire l'uso di propriet\u00e0 non previste. I controlli di validit\u00e0 dello schema riguardano la forma, non la verit\u00e0: gli ID di origine devono comunque corrispondere ai record effettivamente restituiti, e un'etichetta di affidabilit\u00e0 generata dal modello non costituisce una misura di accuratezza.<\/p>\n\n\n\n<h2 id=\"cost-errors\" class=\"wp-block-heading pat-h2\">Costi dell'API Perplexity ed errori comuni<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/pricing\">Pagina ufficiale dei prezzi di Perplexity<\/a>, verificato il 28 settembre 2026, separa i token del modello Agent dalle chiamate agli strumenti. Di seguito sono riportati i costi in USD relativi agli strumenti e alle ricerche. Il <code>veloce<\/code> Impostazioni predefinite dell'agente e <code>search_type: \"fast\"<\/code> Esistono diverse opzioni di configurazione; non dedurre la velocit\u00e0 di ricerca dal nome del preset.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Azione fatturabile<\/th><th>USD per azione<\/th><th>USD per 1.000<\/th><\/tr><\/thead><tbody><tr><td>Ricerca web standard dell'agente<\/td><td>$0.0025<\/td><td>$2.50<\/td><\/tr><tr><td>Chiamata della funzione \"Agent Fast Search\"<\/td><td>$0.001<\/td><td>$1.00<\/td><\/tr><tr><td>Recupero dell'URL dell'agente<\/td><td>$0.0005<\/td><td>$0.50<\/td><\/tr><tr><td>Richiesta API di ricerca riuscita<\/td><td>$0.005<\/td><td>$5.00<\/td><\/tr><tr><td>API di ricerca con Fast Search<\/td><td>$0.001<\/td><td>$1.00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"736\" height=\"1024\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-736x1024.webp\" alt=\"Tabelle ufficiali dei prezzi Perplexity che riportano i costi di utilizzo dello strumento Agent e i costi dell\u2019API di ricerca per ogni 1.000 richieste.\" class=\"wp-image-20036\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-736x1024.webp 736w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-216x300.webp 216w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-9x12.webp 9w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-768x1068.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing.webp 848w\" sizes=\"(max-width: 736px) 100vw, 736px\" \/><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Esempio:<\/strong> Il costo di 1.000 richieste standard di ricerca sul web pi\u00f9 1.000 recuperi di URL <strong>$3.00 nelle spese per gli utensili<\/strong> ($2.50 + $0.50), al netto dei token del modello o di altri costi. Si tratta di un carico di lavoro ipotetico, non di un costo effettivo rilevato per il tutorial. Una singola richiesta dell\u2019Agente pu\u00f2 attivare pi\u00f9 strumenti. Se disponibile, verificare <code>utilizzo.costo.costo_totale<\/code> sulla risposta completata.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Sintomo<\/th><th>Cosa controllare per prima cosa<\/th><\/tr><\/thead><tbody><tr><td>401 o 403<\/td><td>Nome della variabile d'ambiente, validit\u00e0 della chiave, accesso all'account e se la richiesta sta raggiungendo l'endpoint corrente.<\/td><\/tr><tr><td>Errore di fatturazione o di quota<\/td><td>Crediti API, configurazione dei pagamenti, costi relativi a modelli\/strumenti e limiti dell'account. Un piano consumer Perplexity non comporta automaticamente l'assegnazione di crediti API.<\/td><\/tr><tr><td>429<\/td><td>Limiti di frequenza e comportamento dei tentativi di riprova. Utilizzare un backoff esponenziale limitato ed evitare di ripetere ciecamente una richiesta gi\u00e0 evasa.<\/td><\/tr><tr><td>Timeout<\/td><td>Impostazioni relative al percorso di rete, alla dimensione del prompt, al numero di strumenti e al timeout del client. Registrare l'ID della richiesta se l'SDK ne fornisce uno, ma non registrare mai la chiave.<\/td><\/tr><tr><td>La risposta non ha fonti corrispondenti<\/td><td>Esaminare la materia prima <code>risposta.output<\/code>, sintassi delle citazioni e ID delle fonti; contrassegnare la risposta come non verificata invece di inventare link.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">L'API di ricerca fattura le richieste andate a buon fine, comprese quelle che non restituiscono risultati; il costo della richiesta non comporta alcun addebito aggiuntivo per i token. I costi degli agenti dipendono dai token dei modelli e dagli strumenti. \u00c8 importante tenere separate queste unit\u00e0 di fatturazione quando si confronta un flusso di lavoro con risposta con un flusso di lavoro solo di ricerca.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Per un confronto tra i costi delle API, il nostro <a href=\"https:\/\/www.glbgpt.com\/hub\/perplexity-api-cost-2025\/\">Guida ai costi dell'API Perplexity<\/a> fornisce ulteriori informazioni, mentre la pagina ufficiale dei prezzi rimane il riferimento ufficiale per le tariffe attuali.<\/p>\n\n\n\n<h2 id=\"migration\" class=\"wp-block-heading pat-h2\">Passaggio da un vecchio tutorial su Sonar<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Molti risultati di ricerca mostrano ancora la vecchia forma dei \"Chat Completions\". La guida alla migrazione per gli agenti utilizza una mappatura concettuale diretta. Se state confrontando le etichette del modello consumer con le impostazioni predefinite dell'API, la nostra guida esplicativa su <a href=\"https:\/\/www.glbgpt.com\/hub\/what-llm-does-perplexity-use\/\">cosa usa LLM Perplexity<\/a> fornisce un contesto, ma non sostituisce la documentazione dell'API Agent.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Modello Sonar precedente<\/th><th>Modello API dell'agente<\/th><\/tr><\/thead><tbody><tr><td><code>messaggi<\/code><\/td><td><code>input<\/code><\/td><\/tr><tr><td><code>modello<\/code><\/td><td><code>preimpostazione<\/code><\/td><\/tr><tr><td><code>choices[0].message.content<\/code><\/td><td><code>testo_di_uscita<\/code><\/td><\/tr><tr><td>Ipotesi precedenti relative alle matrici di citazioni<\/td><td><code>risultati_della_ricerca<\/code> elemento di output e corrispondenza basata sull'ID<\/td><\/tr><tr><td>Parametri di ricerca nella richiesta<\/td><td><code>tools=[{\"type\":\"web_search\",\"filters\":{...}}]<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Leggi la diretta <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/overview\">Panoramica sulla migrazione<\/a> e <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/how-to\">dettagli sulla migrazione<\/a> prima di modificare il codice di produzione. Le mappature predefinite rappresentano un punto di partenza, non una garanzia che i modelli vecchi e nuovi producano risultati identici in termini di qualit\u00e0, latenza o costo.<\/p>\n\n\n\n<h2 id=\"faq\" class=\"wp-block-heading pat-h2\">Domande frequenti<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">L'API Perplexity \u00e8 gratuita?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Le API prevedono un modello di pagamento \"pay-as-you-go\", come indicato nella documentazione attuale relativa alla guida rapida e ai prezzi. Non dare per scontato che un abbonamento consumer, una versione di prova o un credito promozionale rendano gratuite tutte le richieste API.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Devo avere Perplexity Pro per poter utilizzare l'API?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">L'accesso all'API e il piano Pro per gli utenti finali sono prodotti distinti. Crea le credenziali API e verifica la fatturazione relativa all'API per l'account sviluppatore che intendi utilizzare.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">\u00c8 meglio usare l'API Agent o l'API Search?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Scegli \"Agente\" quando desideri una risposta completa e ben fondata, corredata di fonti. Scegli \"Ricerca\" quando la tua applicazione deve gestire autonomamente il ranking, il filtraggio e la sintesi. Puoi combinare la \"Ricerca\" con il tuo modello personalizzato se hai bisogno di un controllo rigoroso su ogni fase del processo di generazione.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Posso chiamare Perplexity da JavaScript?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">S\u00ec. Utilizza l'esempio Node.js lato server riportato sopra oppure l'SDK ufficiale JavaScript. Conserva la chiave sul server. Quando leggi il JSON grezzo, esamina gli elementi di output tipizzati e applica le stesse regole di mappatura degli ID di origine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">\u00c8 garantita la correttezza delle citazioni Perplexity?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">No. Una citazione indica a quale risultato restituito si riferisce la risposta. La tua applicazione o il revisore devono comunque verificare l'attualit\u00e0, l'autorevolezza e se la pagina supporti effettivamente l'affermazione in questione.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Perch\u00e9 il mio parser non ha trovato alcuna fonte?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Esamina i tipi di elementi dell'output grezzo, verifica che la ricerca sul web sia stata eseguita e controlla se l'espressione regolare corrisponde al formato di citazione predefinito. Se non compare alcun indicatore, salva la risposta come \"non verificata\" e approfondisci la richiesta, invece di aggiungere un link ipotetico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Il codice GlobalGPT pu\u00f2 sostituire una chiave API Perplexity?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">GlobalGPT \u00e8 uno spazio di lavoro AI \"tutto in uno\" pensato per l'uso quotidiano dell'intelligenza artificiale. L'abbonamento e l'accesso ai modelli sono separati dall'account sviluppatore Perplexity, dalla chiave API e dai crediti API; questo tutorial su Python utilizza l'account sviluppatore.<\/p>\n\n\n\n<h2 id=\"checklist\" class=\"wp-block-heading pat-h2\">Una pratica lista di controllo per il lancio<\/h2>\n\n\n\n<ul class=\"wp-block-list pat-list pat-checklist\">\n<li>Crea una chiave lato server e conferma la fatturazione dell'API.<\/li>\n\n\n\n<li>Esegui la versione minima <code>veloce<\/code> richiesta prima di aggiungere filtri o avviare lo streaming.<\/li>\n\n\n\n<li>Salva la risposta completa, non solo il testo visibile della risposta.<\/li>\n\n\n\n<li>Abbinare i marcatori di citazione agli ID delle fonti restituiti e contrassegnare i marcatori non abbinati.<\/li>\n\n\n\n<li>Controlla le pagine citate per verificare la fondatezza delle affermazioni, l'attualit\u00e0 dei contenuti e la presenza di URL duplicati.<\/li>\n\n\n\n<li>Prima di procedere con l'implementazione, ricontrolla la documentazione relativa all'Agent live, ai prezzi e alla migrazione.<\/li>\n<\/ul>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Ora disponi dello schema di base per un'integrazione affidabile dell'API Perplexity: poni una domanda mirata, lascia che l'API dell'agente effettui la ricerca, mantieni la risposta e le prove insieme e rendi ogni citazione verificabile. Da qui, aggiungi la memorizzazione nella cache, i tentativi di ripetizione e le tue regole di revisione relative allo stesso flusso di lavoro basato sull'ID della fonte.<\/p>\n\n\n\n<script type=\"application\/ld+json\">{\n    \"@context\": \"https:\\\/\\\/schema.org\",\n    \"@type\": \"FAQPage\",\n    \"mainEntity\": [\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Is the Perplexity API free?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"The APIs are pay-as-you-go according to the current quickstart and pricing documentation. Do not assume that a consumer subscription, a trial or a promotional credit makes every API request free.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Do I need Perplexity Pro to use the API?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"API access and a consumer Pro plan are separate products. Create API credentials and check API billing for the developer account you plan to use.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Should I use Agent API or Search API?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Choose Agent when you want a finished grounded answer with sources. Choose Search when your application should own ranking, filtering and synthesis. You can combine Search with your own model if you need strict control over every generation step.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Can I call Perplexity from JavaScript?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Yes. Use the server-side Node.js example above or the official JavaScript SDK. Keep the key on the server. When reading raw JSON, inspect the typed output items and apply the same source-ID mapping rules.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Are Perplexity citations guaranteed to be correct?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"No. A citation tells you which returned result the answer points to. Your application or reviewer must still check freshness, authority and whether the page supports the exact claim.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Why did my parser find no sources?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Inspect the raw output item types, confirm that web search ran, and check whether your regular expression matches the preset's citation form. If no marker appears, save the answer as unverified and investigate the request rather than adding a guessed link.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Can GlobalGPT replace a Perplexity API key?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"GlobalGPT is an all-in-one AI workspace for everyday AI use. Its subscription and model access are separate from a Perplexity developer account, API key and API credits; this Python tutorial uses the developer account.\"\n            }\n        }\n    ]\n}<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>API PERPLEXITY \u00b7 TUTORIAL IN PYTHON \u00b7 2026 Questo tutorial sull\u2019API Perplexity illustra come creare uno script in Python che restituisca una risposta con fonti web cliccabili. Utilizza l\u2019API Agent per inviare una domanda, leggere la risposta, associare i suoi marcatori di citazione agli ID delle fonti ed esportare un file Markdown che potrai esaminare. Faremo [\u2026]<\/p>","protected":false},"author":17,"featured_media":20032,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"Perplexity API Tutorial: Build Answers with Sources","_seopress_titles_desc":"Perplexity API tutorial for Python: get a key, build answers with clickable sources, and match citation IDs correctly. Follow the complete script step by step.","_seopress_robots_index":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-20031","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-chat"],"acf":[],"_links":{"self":[{"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/posts\/20031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/comments?post=20031"}],"version-history":[{"count":2,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/posts\/20031\/revisions"}],"predecessor-version":[{"id":20038,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/posts\/20031\/revisions\/20038"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/media\/20032"}],"wp:attachment":[{"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/media?parent=20031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/categories?post=20031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/it\/wp-json\/wp\/v2\/tags?post=20031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}