{"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\/pt-br\/hub\/perplexity-api-tutorial","title":{"rendered":"Tutorial da API Perplexity: Como criar uma resposta com aterramento na fonte, passo a passo"},"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 EM PYTHON \u00b7 2026<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Este tutorial da API Perplexity mostra como criar um script em Python que retorne uma resposta com fontes da web clic\u00e1veis. Use a API do Agente para enviar uma pergunta, ler a resposta, associar seus marcadores de cita\u00e7\u00e3o aos IDs das fontes e exportar um arquivo Markdown para que voc\u00ea possa revis\u00e1-lo.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Vamos usar uma pergunta ao longo de todo o texto: <em>Como um pequeno projeto em Python deve utilizar ambientes virtuais e gerenciar depend\u00eancias?<\/em> Comece com uma solicita\u00e7\u00e3o b\u00e1sica e, em seguida, adicione a an\u00e1lise da fonte e os filtros de dom\u00ednio. \u00c9 necess\u00e1rio ter conhecimentos b\u00e1sicos de Python e uma conta de desenvolvedor Perplexity com o faturamento da API configurado.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Se voc\u00ea tamb\u00e9m usa IA para pesquisas e reda\u00e7\u00e3o no dia a dia, <a href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\">Perplexity em GlobalGPT<\/a> oferece acesso em um ambiente de trabalho de IA completo, reduzindo a necessidade de alternar entre ferramentas distintas. Esse fluxo de trabalho do consumidor \u00e9 independente da chave do desenvolvedor e do faturamento da API utilizados aqui.<\/p>\n\n\n\n<p class=\"pat-p pat-quick wp-block-paragraph\"><strong>Resposta r\u00e1pida:<\/strong> Use o <code>r\u00e1pido<\/code> Predefini\u00e7\u00e3o do agente para uma primeira resposta baseada na web, leia <code>response.output_text<\/code> para saber a resposta e ler o <code>resultados_da_busca<\/code> item em <code>response.output<\/code> para fontes. Associe cada marcador embutido a uma fonte por meio do valor retornado <code>id<\/code>. Uma cita\u00e7\u00e3o significa que \u201ca resposta aponta para esse resultado\u201d; ela n\u00e3o garante que a p\u00e1gina comprove todas as afirma\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Exemplo de status:<\/strong> A sintaxe da solicita\u00e7\u00e3o segue a documenta\u00e7\u00e3o oficial verificada em 28 de setembro de 2026. O auxiliar de cita\u00e7\u00e3o foi testado com dados de amostra offline; nenhuma solicita\u00e7\u00e3o paga \u00e0 API foi realizada para este tutorial. Os registros de origem mostrados na ilustra\u00e7\u00e3o s\u00e3o exemplos ilustrativos.<\/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>Experimente o Perplexity agora &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\">Qual API Perplexity voc\u00ea deve usar?<\/a><\/li>\n\n\n\n<li><a href=\"#setup\">Passo 1: Obter uma chave de API e configurar o Python<\/a><\/li>\n\n\n\n<li><a href=\"#first-request\">Etapa 2: Envie sua primeira solicita\u00e7\u00e3o com aterramento na fonte<\/a><\/li>\n\n\n\n<li><a href=\"#sources\">Etapa 3: Extraia a resposta e identifique suas fontes<\/a><\/li>\n\n\n\n<li><a href=\"#filters\">Etapa 4: Aprimore a resposta com filtros de busca<\/a><\/li>\n\n\n\n<li><a href=\"#export\">Etapa 5: Salve uma resposta completa com fontes clic\u00e1veis<\/a><\/li>\n\n\n\n<li><a href=\"#advanced\">Transmiss\u00e3o cont\u00ednua e sa\u00edda estruturada<\/a><\/li>\n\n\n\n<li><a href=\"#cost-errors\">Custos e erros comuns<\/a><\/li>\n\n\n\n<li><a href=\"#migration\">Mudando de um tutorial mais antigo do Sonar<\/a><\/li>\n\n\n\n<li><a href=\"#faq\">Perguntas frequentes<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"api-choice\" class=\"wp-block-heading pat-h2\">Tutorial da API Perplexity: escolha a API certa<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Essas s\u00e3o interfaces para desenvolvedores. O produto de chat pode oferecer funcionalidades semelhantes de maneira diferente; nossa vis\u00e3o geral sobre <a href=\"https:\/\/www.glbgpt.com\/hub\/what-are-the-main-features-of-perplexity-ai\/\">Recursos do Perplexity<\/a> descreve a experi\u00eancia do usu\u00e1rio.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Da Perplexity\u2019s <a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/quickstart\">Guia r\u00e1pido da API oficial<\/a> agrupa seus produtos para desenvolvedores de acordo com a tarefa que voc\u00ea precisa realizar. Escolha a menor \u00e1rea poss\u00edvel que gere os dados de que seu aplicativo realmente precisa.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>API<\/th><th>Melhor ajuste<\/th><th>O que seu c\u00f3digo recebe<\/th><\/tr><\/thead><tbody><tr><td><strong>Agente<\/strong><\/td><td>Uma resposta completa baseada em pesquisas na internet ou em outras ferramentas<\/td><td>Itens de sa\u00edda digitados, texto da resposta e registros de resultados de pesquisa<\/td><\/tr><tr><td><strong>Pesquisar<\/strong><\/td><td>Seu aplicativo ir\u00e1 classificar, filtrar ou resumir os resultados por conta pr\u00f3pria<\/td><td>Resultados da pesquisa sem pedir ao Perplexity para escrever a resposta final<\/td><\/tr><tr><td><strong>Roteador<\/strong><\/td><td>Encaminhar solicita\u00e7\u00f5es para um modelo adequado<\/td><td>Uma resposta modelo selecionada pelo roteador<\/td><\/tr><tr><td><strong>Incorpora\u00e7\u00f5es<\/strong><\/td><td>Recupera\u00e7\u00e3o sem\u00e2ntica e um \u00edndice RAG<\/td><td>Vetores para sua pr\u00f3pria camada de pesquisa<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Este tutorial escolhe o Agent porque o resultado desejado \u00e9 uma resposta completa, acompanhada de suas fontes. Para conhecer o fluxo de trabalho de pesquisa de forma mais ampla, consulte nosso guia sobre <a href=\"https:\/\/www.glbgpt.com\/hub\/how-to-use-perplexity-for-research\/\">utiliza\u00e7\u00e3o do Perplexity para pesquisa<\/a>.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Sobre o Sonar:<\/strong> A corrente <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/overview\">vis\u00e3o geral da migra\u00e7\u00e3o<\/a> afirma que o Sonar Chat Completions continua sendo suportado e recomenda o Agent para todos os novos projetos. Portanto, este tutorial utiliza o Agent. N\u00e3o se deve deduzir que uma integra\u00e7\u00e3o antiga tenha deixado de funcionar com base em um prazo mencionado em um tutorial mais antigo.<\/p>\n\n\n\n<h2 id=\"setup\" class=\"wp-block-heading pat-h2\">Passo 1: Obter uma chave de API e configurar o Python<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Criar a chave e preparar o faturamento<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/console.perplexity.ai\/\">Abra o console da API Perplexity<\/a>, escolha ou crie o projeto que voc\u00ea vai usar, configure o faturamento da API e crie uma chave. Mantenha-a no lado do servidor. As APIs para desenvolvedores s\u00e3o cobradas separadamente das assinaturas de consumidores; verifique o saldo do seu projeto antes de fazer solicita\u00e7\u00f5es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Instale o SDK oficial<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>python -m venv .venv\n\n# macOS\/Linux: escolha este comando de ativa\u00e7\u00e3o\nsource .venv\/bin\/activate\n\n# Windows PowerShell: use este comando em vez disso\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\">Use o Python 3.10 ou uma vers\u00e3o mais recente para o c\u00f3digo abaixo. Ative o ambiente usando o comando correspondente ao seu sistema operacional e, em seguida, instale o SDK. Se o PowerShell bloquear a ativa\u00e7\u00e3o, use <code>.venv\\Scripts\\python.exe<\/code> em vez de <code>Python<\/code> para instala\u00e7\u00e3o e execu\u00e7\u00e3o de scripts.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O nome do pacote \u00e9 <code>perplexityai<\/code>, enquanto a importa\u00e7\u00e3o do Python \u00e9 <code>perplexidade<\/code>. Use um ambiente virtual para que as depend\u00eancias deste tutorial n\u00e3o alterem outro projeto.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O exemplo utiliza uma quest\u00e3o relacionada \u00e0 programa\u00e7\u00e3o porque suas afirma\u00e7\u00f5es podem ser verificadas com base na documenta\u00e7\u00e3o atualizada. Nosso guia para <a href=\"https:\/\/www.glbgpt.com\/hub\/is-perplexity-good-for-coding\/\">Perplexity para codifica\u00e7\u00e3o<\/a> explica como o apoio \u00e0 pesquisa se encaixa no contexto de testar o c\u00f3digo por conta pr\u00f3pria.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Defina a chave da API como uma vari\u00e1vel de ambiente<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code># macOS\/Linux\nexport PERPLEXITY_API_KEY=\"sua-chave-aqui\"\n\n# Windows PowerShell\n$env:PERPLEXITY_API_KEY = \"sua-chave-aqui\"<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O SDK l\u00ea <code>PERPLEXIDADE_CHAVE_API<\/code> ao criar o cliente. N\u00e3o cole a chave em um bloco de notas, n\u00e3o a envie para o Git nem a envie para um navegador. Se voc\u00ea usar um arquivo .env localmente, mantenha esse arquivo fora do controle de vers\u00e3o e carregue-o com a biblioteca de vari\u00e1veis de ambiente de sua escolha.<\/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=\"Documenta\u00e7\u00e3o oficial do Perplexity que mostra a instala\u00e7\u00e3o do SDK do Python e a vari\u00e1vel de 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\">Etapa 2: Envie sua primeira solicita\u00e7\u00e3o com aterramento na fonte<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/quickstart\">Guia r\u00e1pido da API do Agent<\/a> documentos <code>POST https:\/\/api.perplexity.ai\/v1\/agent<\/code>. Seu cliente em Python encapsula a solicita\u00e7\u00e3o com <code>client.responses.create()<\/code>. O <code>r\u00e1pido<\/code> A configura\u00e7\u00e3o padr\u00e3o habilita a pesquisa na web, o que mant\u00e9m o primeiro exemplo conciso.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>from perplexity import Perplexity\n\nclient = Perplexity()\n\nquestion = (\n    \"Como um pequeno projeto em Python deve usar ambientes virtuais \"\n    \"e gerenciar depend\u00eancias?\"\n)\n\nresposta = cliente.respostas.criar(\n    predefini\u00e7\u00e3o=\"r\u00e1pido\",\n    entrada=pergunta,\n)\n\nprint(resposta.texto_de_sa\u00edda)<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Salve o trecho como <code>first_request.py<\/code>, em seguida, execute <code>python first_request.py<\/code> no mesmo terminal em que voc\u00ea definiu a chave. Uma chamada bem-sucedida deve exibir um texto de resposta que n\u00e3o esteja vazio. Se voc\u00ea precisar de comprova\u00e7\u00e3o do resultado, prossiga para a etapa de extra\u00e7\u00e3o da fonte; o texto por si s\u00f3 n\u00e3o constitui uma verifica\u00e7\u00e3o completa.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">A propriedade de conveni\u00eancia <code>texto_de_sa\u00edda<\/code> fornece o texto da resposta final. Guarde tamb\u00e9m o objeto de resposta completo: os registros de origem e os detalhes de uso est\u00e3o na sa\u00edda digitada, e n\u00e3o apenas no par\u00e1grafo impresso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">A mesma solicita\u00e7\u00e3o com o 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\": \"Como um pequeno projeto em Python deve usar ambientes virtuais e gerenciar depend\u00eancias?\"\n  }'<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Este exemplo do cURL utiliza a sintaxe do Bash para macOS\/Linux ou um shell compat\u00edvel com o Bash. Cada execu\u00e7\u00e3o gera uma nova solicita\u00e7\u00e3o cobr\u00e1vel. Utilize-o apenas quando for necess\u00e1rio isolar um problema no endpoint de um problema no Python; n\u00e3o execute todas as vers\u00f5es apenas para acompanhar o exemplo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Equivalente em JavaScript do lado do servidor<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O Node.js 18+ inclui <code>buscar<\/code>, portanto, um teste de funcionamento do lado do servidor n\u00e3o requer nenhuma biblioteca adicional. Leia o c\u00f3digo-fonte <code>sa\u00edda<\/code> itens na resposta JSON; o SDK do Python oferece a conveniente <code>texto_de_sa\u00edda<\/code> acess\u00f3rio.<\/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: \"Como um pequeno projeto em Python deve usar ambientes virtuais e gerenciar depend\u00eancias?\"\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\">Etapa 3: Extraia a resposta e identifique suas fontes<\/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\">O guia oficial de cita\u00e7\u00f5es<\/a> distingue a prosa de seus registros de evid\u00eancias. As fontes chegam em um <code>sa\u00edda<\/code> item do tipo <code>resultados_da_busca<\/code>. Leia o artigo sobre esse assunto <code>resultados<\/code> e associar cada marcador de cita\u00e7\u00e3o ao resultado <code>id<\/code>. Um resultado possui um t\u00edtulo e uma URL; trate os valores ausentes antes de exibi-lo.<\/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=\"Documenta\u00e7\u00e3o oficial do Perplexity que explica as cita\u00e7\u00f5es numeradas, as cita\u00e7\u00f5es com indica\u00e7\u00e3o da fonte e os marcadores de correspond\u00eancia com os IDs dos resultados da pesquisa.\" 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\">Esse \u00faltimo detalhe \u00e9 importante. N\u00e3o presuma que a \u201ccita\u00e7\u00e3o 1\u201d seja sempre o primeiro elemento de uma matriz depois que outra ferramenta adiciona um item. Crie uma consulta por ID e, em seguida, identifique os marcadores que realmente aparecem na resposta.<\/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 se sid for None:\n continue\n key = str(sid)\n se key estiver em sources e field(sources[key], \"url\") != url:\n                raise ValueError(f\"URLs conflitantes para o ID de fonte {key}\")\n sources[key] = result\n    return sources\n\nsources = source_index(response.output)\nprint(sources.get(\"7\"))  # Um ID de fonte, n\u00e3o a posi\u00e7\u00e3o 7 da matriz<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O script completo abaixo reconhece <code>[1]<\/code> e <code>[web:1]<\/code>, os formatos de cita\u00e7\u00e3o documentados para as predefini\u00e7\u00f5es comuns. O auxiliar acima lida tanto com objetos do SDK quanto com dicion\u00e1rios e rejeita URLs conflitantes atribu\u00eddas ao mesmo ID. Ele n\u00e3o renumera os resultados nem tenta adivinhar uma fonte ausente.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Para uma discuss\u00e3o mais ampla sobre a qualidade das cita\u00e7\u00f5es, consulte nosso <a href=\"https:\/\/www.glbgpt.com\/hub\/perplexity-citation-accuracy\/\">Guia de precis\u00e3o de cita\u00e7\u00f5es do Perplexity<\/a>. Uma cita\u00e7\u00e3o \u00e9 um registro de auditoria; seu aplicativo ainda precisa de uma pol\u00edtica para p\u00e1ginas desatualizadas, URLs duplicadas e alega\u00e7\u00f5es sem fundamento.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Por exemplo, se o array retornado contiver o ID 2 seguido pelo ID 7, o marcador <code>[7]<\/code> deve estar vinculado ao ID 7. Se a mesma URL aparecer nos IDs 7 e 9, voc\u00ea pode exibi-la uma vez, mantendo ambos os IDs. Se o ID 8 nunca for recebido, mantenha <code>[8]<\/code> vis\u00edvel e marc\u00e1-lo como sem correspond\u00eancia.<\/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=\"A cita\u00e7\u00e3o 7 corresponde ao resultado da pesquisa com o ID 7, mesmo quando um resultado diferente aparece em primeiro lugar.\" 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\">Etapa 4: Aprimore a resposta com filtros de busca<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Assim que a consulta b\u00e1sica funcionar, restrinja a pesquisa quando sua d\u00favida tiver um escopo de refer\u00eancia bem definido. Para o gerenciamento de pacotes em Python, a documenta\u00e7\u00e3o da linguagem e o guia de gerenciamento de pacotes s\u00e3o pontos de partida melhores do que um tutorial qualquer.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>response = client.responses.create(\n    preset=\"fast\",\n    input=(\n \"Como um pequeno projeto em Python deve usar ambientes virtuais \"\n \"e gerenciar depend\u00eancias? Cite as orienta\u00e7\u00f5es que voc\u00ea utiliza.\"\n    ),\n    ferramentas=[\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\">O filtro deve ser configurado na ferramenta de pesquisa na web. A documenta\u00e7\u00e3o de migra\u00e7\u00e3o tamb\u00e9m descreve <code>filtro_de_rec\u00eancia_da_busca<\/code> para perguntas que exigem respostas r\u00e1pidas. Utilize a atualidade quando a pergunta depender de lan\u00e7amentos ou not\u00edcias recentes; uma combina\u00e7\u00e3o muito restrita de dom\u00ednio e data pode resultar em poucas evid\u00eancias.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Para uma pergunta sobre lan\u00e7amentos do m\u00eas passado, adicione <code>\"search_recency_filter\": \"m\u00eas\"<\/code> ao lado de <code>filtro_de_dom\u00ednio_de_busca<\/code>. N\u00e3o inclua isso no exemplo do ambiente virtual: a documenta\u00e7\u00e3o est\u00e1vel pode ter uma data de publica\u00e7\u00e3o mais antiga. Se voc\u00ea mudar de um modelo predefinido para um modelo selecionado diretamente, inclua explicitamente a ferramenta de busca na web.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Compare os resultados filtrados e n\u00e3o filtrados durante o desenvolvimento. Se a resposta mudar, registre o motivo: um filtro pode remover contexto \u00fatil ou p\u00e1ginas de baixa autoridade que estavam confundindo o modelo. Trata-se de uma decis\u00e3o de qualidade, n\u00e3o de uma garantia de que todas as p\u00e1ginas restantes estejam corretas.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Se seu aplicativo precisar apenas de links classificados e trechos, chame a fun\u00e7\u00e3o <a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/quickstart\">API de pesquisa<\/a> e fa\u00e7a voc\u00ea mesmo a s\u00edntese. Essa separa\u00e7\u00e3o pode facilitar a revis\u00e3o e o armazenamento em cache. Para uma compara\u00e7\u00e3o mais ampla com o Google, consulte <a href=\"https:\/\/www.glbgpt.com\/hub\/how-is-perplexity-different-than-google\/\">em que o Perplexity difere do Google<\/a>.<\/p>\n\n\n\n<h2 id=\"export\" class=\"wp-block-heading pat-h2\">Etapa 5: Salve uma resposta completa com fontes clic\u00e1veis<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Salve o seguinte como <code>perplexity_tutorial.py<\/code>. \u00c9 um sistema aut\u00f4nomo: inclui o auxiliar de fonte, aplica o filtro de dom\u00ednio da documenta\u00e7\u00e3o do Python, transforma marcadores de cita\u00e7\u00e3o correspondentes em links, agrupa URLs duplicadas sem perder os IDs e salva a resposta completa do SDK junto com o 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\">Executar <code>python perplexity_tutorial.py<\/code> a partir do diret\u00f3rio do seu projeto. Ele grava <code>perplexity-answer.md<\/code> e <code>perplexity-response.json<\/code> ali, substituindo os arquivos anteriores com esses nomes. O arquivo Markdown cont\u00e9m a pergunta, a resposta com link, as fontes citadas e quaisquer IDs sem correspond\u00eancia. O arquivo JSON mant\u00e9m a sa\u00edda retornada e as informa\u00e7\u00f5es de uso para fins de diagn\u00f3stico.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O analisador tem como alvo as formas documentadas de marcador \u00fanico na prosa. N\u00e3o se trata de um analisador completo de Markdown: se o seu aplicativo solicitar Markdown arbitr\u00e1rio, exemplos de c\u00f3digo ou cita\u00e7\u00f5es como, por exemplo, <code>[1,2]<\/code>, adicione um renderizador com reconhecimento de sintaxe e testes para esse formato. N\u00e3o reinterprete silenciosamente marcadores desconhecidos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Verifique se a p\u00e1gina vinculada confirma a resposta<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Nesse exemplo, verifique se a documenta\u00e7\u00e3o citada realmente explica o isolamento de ambiente e a instala\u00e7\u00e3o de depend\u00eancias. Um link para a p\u00e1gina inicial do Python \u00e9 menos \u00fatil do que a se\u00e7\u00e3o relevante da documenta\u00e7\u00e3o. Se uma resposta recomendar um comando espec\u00edfico, verifique o sistema operacional e a vers\u00e3o do Python antes de execut\u00e1-lo. Mark alega que o texto citado n\u00e3o justifica a classifica\u00e7\u00e3o como \u201cn\u00e3o resolvido\u201d.<\/p>\n\n\n\n<h2 id=\"advanced\" class=\"wp-block-heading pat-h2\">Adicione sa\u00edda cont\u00ednua ou estruturada quando necess\u00e1rio<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Transmiss\u00e3o<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O streaming melhora a lat\u00eancia percebida em uma interface de chat. O guia de migra\u00e7\u00e3o do Agente documenta eventos de delta de texto, tais como <code>response.output_text.delta<\/code>. Exiba essas atualiza\u00e7\u00f5es \u00e0 medida que forem chegando, mas colete tamb\u00e9m os itens da resposta final para que sua interface de usu\u00e1rio possa mostrar as fontes assim que a resposta for conclu\u00edda. Um fluxo de texto por si s\u00f3 n\u00e3o constitui uma lista de fontes.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O texto a seguir \u00e9 apenas para exibi\u00e7\u00e3o. Mantenha a exporta\u00e7\u00e3o sem streaming para o seu primeiro registro de origem completo; uma implementa\u00e7\u00e3o de streaming em produ\u00e7\u00e3o tamb\u00e9m deve coletar os eventos de ferramenta\/sa\u00edda e lidar com execu\u00e7\u00f5es interrompidas ou com falha.<\/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\">Sa\u00edda estruturada<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Utilize uma resposta estruturada quando o c\u00f3digo posterior precisar de campos como <code>resposta<\/code>, <code>nota de confian\u00e7a<\/code> e <code>perguntas_de_aprofundamento<\/code>. Mantenha os IDs de origem em um campo separado ou preserve a sa\u00edda original do Agent para que seu esquema n\u00e3o oculte as evid\u00eancias. Valide o esquema em seus pr\u00f3prios casos de teste antes de utiliz\u00e1-lo em um fluxo de trabalho.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">A refer\u00eancia de migra\u00e7\u00e3o mant\u00e9m <code>formato_da_resposta<\/code> com <code>tipo: \"json_schema\"<\/code> para sa\u00edda estruturada. Defina os campos obrigat\u00f3rios e desative propriedades inesperadas quando for o caso. As verifica\u00e7\u00f5es de validade do esquema se referem \u00e0 forma, n\u00e3o \u00e0 veracidade: os IDs de origem ainda precisam corresponder aos registros efetivamente retornados, e um r\u00f3tulo de confian\u00e7a gerado pelo modelo n\u00e3o constitui uma medida de precis\u00e3o.<\/p>\n\n\n\n<h2 id=\"cost-errors\" class=\"wp-block-heading pat-h2\">Custos e erros comuns da API Perplexity<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/pricing\">P\u00e1gina oficial de pre\u00e7os do Perplexity<\/a>, consultado em 28 de setembro de 2026, separa os tokens do modelo do Agente das chamadas de ferramentas. A seguir est\u00e3o as tarifas em USD referentes \u00e0s ferramentas e \u00e0s pesquisas. O <code>r\u00e1pido<\/code> Predefini\u00e7\u00e3o do agente e <code>search_type: \"r\u00e1pido\"<\/code> s\u00e3o op\u00e7\u00f5es de configura\u00e7\u00e3o diferentes; n\u00e3o se deve inferir a taxa de busca a partir do nome da predefini\u00e7\u00e3o.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>A\u00e7\u00e3o fatur\u00e1vel<\/th><th>d\u00f3lares americanos por a\u00e7\u00e3o<\/th><th>USD por 1.000<\/th><\/tr><\/thead><tbody><tr><td>Pesquisa padr\u00e3o na web do agente<\/td><td>$0.0025<\/td><td>$2.50<\/td><\/tr><tr><td>Chamada da Pesquisa R\u00e1pida do Agente<\/td><td>$0.001<\/td><td>$1.00<\/td><\/tr><tr><td>Busca de URL pelo agente<\/td><td>$0.0005<\/td><td>$0.50<\/td><\/tr><tr><td>Solicita\u00e7\u00e3o bem-sucedida \u00e0 API de pesquisa<\/td><td>$0.005<\/td><td>$5.00<\/td><\/tr><tr><td>API de pesquisa com 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=\"Tabelas oficiais de pre\u00e7os do Perplexity que apresentam os pre\u00e7os de invoca\u00e7\u00e3o da ferramenta Agent e os pre\u00e7os da API de pesquisa por 1.000 solicita\u00e7\u00f5es.\" 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>Exemplo:<\/strong> O custo de 1.000 chamadas padr\u00e3o de pesquisa na web mais 1.000 acessos a URLs <strong>$3.00 em custos de ferramentas<\/strong> ($2.50 + $0.50), antes dos tokens de modelo ou de outros encargos. Trata-se de uma estimativa de carga de trabalho, n\u00e3o de um custo medido para o tutorial. Uma \u00fanica solicita\u00e7\u00e3o do Agente pode acionar v\u00e1rias ferramentas. Quando dispon\u00edvel, verifique <code>uso.custo.custo_total<\/code> na resposta preenchida.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Sintoma<\/th><th>O que verificar primeiro<\/th><\/tr><\/thead><tbody><tr><td>401 ou 403<\/td><td>Nome da vari\u00e1vel de ambiente, validade da chave, acesso \u00e0 conta e se a solicita\u00e7\u00e3o est\u00e1 chegando ao endpoint atual.<\/td><\/tr><tr><td>Erro de cobran\u00e7a ou de cota<\/td><td>Cr\u00e9ditos de API, configura\u00e7\u00e3o de pagamento, cobran\u00e7as por modelo\/ferramenta e limites da conta. Um plano de consumidor Perplexity n\u00e3o implica automaticamente na concess\u00e3o de cr\u00e9ditos de API.<\/td><\/tr><tr><td>429<\/td><td>Limites de taxa e comportamento de repeti\u00e7\u00e3o de tentativas. Utilize o backoff exponencial limitado e evite repetir cegamente uma solicita\u00e7\u00e3o j\u00e1 atendida.<\/td><\/tr><tr><td>Tempo limite<\/td><td>Configura\u00e7\u00f5es de caminho de rede, tamanho do prompt, n\u00famero de ferramentas e tempo limite do cliente. Registre o ID da solicita\u00e7\u00e3o, caso o SDK o forne\u00e7a, mas nunca registre a chave.<\/td><\/tr><tr><td>A resposta n\u00e3o tem fontes correspondentes<\/td><td>Inspecione a mat\u00e9ria-prima <code>response.output<\/code>, sintaxe de cita\u00e7\u00e3o e IDs de fonte; marque a resposta como n\u00e3o verificada, em vez de inventar links.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">A API de pesquisa cobra pelas solicita\u00e7\u00f5es bem-sucedidas, incluindo aquelas que n\u00e3o retornam resultados; o pre\u00e7o da solicita\u00e7\u00e3o n\u00e3o inclui cobran\u00e7a adicional por tokens. Os custos do agente dependem dos tokens do modelo e das ferramentas. Mantenha essas unidades de cobran\u00e7a separadas ao comparar um fluxo de trabalho com respostas com um fluxo de trabalho apenas de pesquisa.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Para uma compara\u00e7\u00e3o de or\u00e7amentos de API, nosso <a href=\"https:\/\/www.glbgpt.com\/hub\/perplexity-api-cost-2025\/\">Guia de custos da API Perplexity<\/a> fornece informa\u00e7\u00f5es adicionais, embora a p\u00e1gina oficial de pre\u00e7os continue sendo a fonte oficial para as tarifas atuais.<\/p>\n\n\n\n<h2 id=\"migration\" class=\"wp-block-heading pat-h2\">Mudando de um tutorial mais antigo do Sonar<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Muitos resultados de pesquisa ainda exibem o formato antigo do \u201cChat Completions\u201d. O guia de migra\u00e7\u00e3o do Agente utiliza um mapeamento conceitual direto. Se voc\u00ea estiver comparando os r\u00f3tulos do modelo de consumidor com as predefini\u00e7\u00f5es da API, consulte nosso guia explicativo sobre <a href=\"https:\/\/www.glbgpt.com\/hub\/what-llm-does-perplexity-use\/\">o que o LLM Perplexity usa<\/a> fornece contexto, mas n\u00e3o substitui a documenta\u00e7\u00e3o da API do Agente.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Padr\u00e3o Sonar mais antigo<\/th><th>Padr\u00e3o da API do agente<\/th><\/tr><\/thead><tbody><tr><td><code>mensagens<\/code><\/td><td><code>entrada<\/code><\/td><\/tr><tr><td><code>modelo<\/code><\/td><td><code>predefini\u00e7\u00e3o<\/code><\/td><\/tr><tr><td><code>choices[0].message.content<\/code><\/td><td><code>texto_de_sa\u00edda<\/code><\/td><\/tr><tr><td>Suposi\u00e7\u00f5es mais antigas sobre matrizes de cita\u00e7\u00f5es<\/td><td><code>resultados_da_busca<\/code> correspond\u00eancia com base no item de sa\u00edda e no ID<\/td><\/tr><tr><td>Par\u00e2metros de pesquisa na solicita\u00e7\u00e3o<\/td><td><code>ferramentas=[{\"tipo\":\"pesquisa_na_web\",\"filtros\":{...}}]<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Leia a cobertura ao vivo <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/overview\">vis\u00e3o geral da migra\u00e7\u00e3o<\/a> e <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/how-to\">detalhes da migra\u00e7\u00e3o<\/a> antes de alterar o c\u00f3digo de produ\u00e7\u00e3o. Os mapeamentos predefinidos s\u00e3o um ponto de partida, n\u00e3o uma garantia de que os modelos antigos e novos produzam qualidade, lat\u00eancia ou custo id\u00eanticos.<\/p>\n\n\n\n<h2 id=\"faq\" class=\"wp-block-heading pat-h2\">Perguntas frequentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">A API Perplexity \u00e9 gratuita?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">As APIs s\u00e3o cobradas por uso, conforme o guia r\u00e1pido e a documenta\u00e7\u00e3o de pre\u00e7os atuais. N\u00e3o presuma que uma assinatura de consumidor, um per\u00edodo de teste ou um cr\u00e9dito promocional tornem todas as solicita\u00e7\u00f5es de API gratuitas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Preciso do Perplexity Pro para usar a API?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O acesso \u00e0 API e o plano Pro para consumidores s\u00e3o produtos distintos. Crie credenciais de API e verifique o faturamento da API para a conta de desenvolvedor que voc\u00ea pretende usar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Devo usar a API do Agent ou a API de Pesquisa?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Escolha \u201cAgente\u201d quando desejar uma resposta completa e fundamentada, com fontes. Escolha \u201cPesquisa\u201d quando seu aplicativo precisar realizar classifica\u00e7\u00e3o, filtragem e s\u00edntese. Voc\u00ea pode combinar a \u201cPesquisa\u201d com seu pr\u00f3prio modelo caso precise de controle rigoroso sobre cada etapa de gera\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Posso chamar o Perplexity a partir do JavaScript?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Sim. Use o exemplo do Node.js do lado do servidor apresentado acima ou o SDK oficial do JavaScript. Mantenha a chave no servidor. Ao ler JSON bruto, analise os itens de sa\u00edda tipados e aplique as mesmas regras de mapeamento de ID de origem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">As cita\u00e7\u00f5es do Perplexity t\u00eam garantia de que est\u00e3o corretas?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">N\u00e3o. Uma refer\u00eancia indica a qual resultado retornado a resposta se refere. Seu aplicativo ou revisor ainda deve verificar a atualidade, a autoridade e se a p\u00e1gina corrobora a afirma\u00e7\u00e3o exata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Por que meu analisador n\u00e3o encontrou nenhuma fonte?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Inspecione os tipos de itens da sa\u00edda bruta, confirme se a pesquisa na web foi executada e verifique se sua express\u00e3o regular corresponde ao formato de cita\u00e7\u00e3o da predefini\u00e7\u00e3o. Se nenhum marcador aparecer, salve a resposta como \u201cn\u00e3o verificada\u201d e investigue a solicita\u00e7\u00e3o, em vez de adicionar um link baseado em suposi\u00e7\u00f5es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">A chave API GlobalGPT pode substituir uma chave API Perplexity?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">O GlobalGPT \u00e9 um espa\u00e7o de trabalho de IA completo para o uso di\u00e1rio da IA. Sua assinatura e o acesso aos modelos s\u00e3o independentes da conta de desenvolvedor do Perplexity, da chave de API e dos cr\u00e9ditos de API; este tutorial em Python utiliza a conta de desenvolvedor.<\/p>\n\n\n\n<h2 id=\"checklist\" class=\"wp-block-heading pat-h2\">Uma lista de verifica\u00e7\u00e3o pr\u00e1tica para o lan\u00e7amento<\/h2>\n\n\n\n<ul class=\"wp-block-list pat-list pat-checklist\">\n<li>Crie uma chave do lado do servidor e confirme o faturamento da API.<\/li>\n\n\n\n<li>Execute o m\u00ednimo <code>r\u00e1pido<\/code> solicita\u00e7\u00e3o antes de adicionar filtros ou iniciar a transmiss\u00e3o.<\/li>\n\n\n\n<li>Salve a resposta completa, e n\u00e3o apenas o texto vis\u00edvel da resposta.<\/li>\n\n\n\n<li>Correlacionar os marcadores de cita\u00e7\u00e3o com os IDs das fontes retornadas e sinalizar os marcadores que n\u00e3o tiverem correspond\u00eancia.<\/li>\n\n\n\n<li>Analise as p\u00e1ginas citadas quanto ao fundamento das alega\u00e7\u00f5es, atualidade e URLs duplicados.<\/li>\n\n\n\n<li>Verifique novamente a documenta\u00e7\u00e3o sobre o Live Agent, pre\u00e7os e migra\u00e7\u00e3o antes da implanta\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Agora voc\u00ea j\u00e1 conhece o padr\u00e3o b\u00e1sico para uma integra\u00e7\u00e3o confi\u00e1vel da API Perplexity: fa\u00e7a uma pergunta espec\u00edfica, deixe que a API do Agente fa\u00e7a a busca, mantenha a resposta e as evid\u00eancias juntas e torne cada cita\u00e7\u00e3o audit\u00e1vel. A partir da\u00ed, adicione cache, tentativas de repeti\u00e7\u00e3o e suas pr\u00f3prias regras de revis\u00e3o em torno do mesmo fluxo de trabalho de ID de 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 EM PYTHON \u00b7 2026 Este tutorial da API Perplexity mostra como criar um script em Python que retorna uma resposta com fontes da web clic\u00e1veis. Use a API do Agent para enviar uma pergunta, ler a resposta, associar seus marcadores de cita\u00e7\u00e3o aos IDs das fontes e exportar um arquivo Markdown para revis\u00e3o. Vamos [\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\/pt-br\/wp-json\/wp\/v2\/posts\/20031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/comments?post=20031"}],"version-history":[{"count":2,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/posts\/20031\/revisions"}],"predecessor-version":[{"id":20038,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/posts\/20031\/revisions\/20038"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/media\/20032"}],"wp:attachment":[{"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/media?parent=20031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/categories?post=20031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/pt-br\/wp-json\/wp\/v2\/tags?post=20031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}