{"id":1103,"date":"2026-08-17T04:01:25","date_gmt":"2026-08-17T07:01:25","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/como-usar-ia-para-encontrar-bugs-sem-virar-refem\/"},"modified":"2026-08-17T04:01:32","modified_gmt":"2026-08-17T07:01:32","slug":"como-usar-ia-para-encontrar-bugs-sem-virar-refem","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/como-usar-ia-para-encontrar-bugs-sem-virar-refem\/","title":{"rendered":"O Erro que Custou a Tarde: Como Usar IA para Encontrar Bugs sem Virar Ref\u00e9m do &#8220;Tenta de Novo&#8221;"},"content":{"rendered":"<p>S\u00e3o 16h de uma quarta-feira. Um teste que sempre passou come\u00e7ou a falhar depois de um commit aparentemente inofensivo. Voc\u00ea olha o log, n\u00e3o entende nada, adiciona um <code>print<\/code> aqui, comenta uma linha ali, roda de novo \u2014 e o erro muda de lugar, mas n\u00e3o desaparece. Uma hora se transforma em tr\u00eas. O prazo da entrega, que parecia tranquilo pela manh\u00e3, agora est\u00e1 em risco por causa de um bug que, no fim, vai se revelar uma bobagem: um par\u00e2metro na ordem errada, uma compara\u00e7\u00e3o de tipos diferentes, um valor nulo que ningu\u00e9m previu.<\/p>\n<p>Esse cen\u00e1rio \u00e9 t\u00e3o comum que praticamente todo desenvolvedor \u2014 iniciante ou experiente \u2014 j\u00e1 perdeu uma tarde inteira nele. A boa not\u00edcia \u00e9 que, hoje, existe uma forma de reduzir drasticamente esse tempo: usar ferramentas de intelig\u00eancia artificial (IA) como parceiras de investiga\u00e7\u00e3o, n\u00e3o apenas como &#8220;geradoras de c\u00f3digo&#8221;. Neste artigo, voc\u00ea vai aprender, com exemplos pr\u00e1ticos e sem pressupor conhecimento avan\u00e7ado, como transformar a IA em uma aliada real no processo de <strong>debugging<\/strong> \u2014 o processo de encontrar e corrigir erros em um programa.<\/p>\n<h2>O que \u00e9 debugging, afinal, e por que ele consome tanto tempo<\/h2>\n<p>Debugging \u00e9 a atividade de descobrir por que um programa n\u00e3o est\u00e1 se comportando como deveria e corrigir essa causa. O nome vem de &#8220;bug&#8221; (inseto, em ingl\u00eas), um termo que a lenda da computa\u00e7\u00e3o atribui a um inseto literal encontrado em um computador antigo, causador de uma falha. Na pr\u00e1tica, um bug pode ser qualquer coisa: uma vari\u00e1vel com valor errado, uma condi\u00e7\u00e3o mal escrita, uma chamada de fun\u00e7\u00e3o na ordem trocada, ou uma depend\u00eancia externa que mudou de comportamento sem avisar.<\/p>\n<p>O motivo pelo qual o debugging consome tanto tempo \u00e9 simples: o sintoma que voc\u00ea v\u00ea (uma tela em branco, um erro na tela, um resultado incorreto) raramente aponta diretamente para a causa. \u00c9 como um m\u00e9dico que recebe um paciente com dor de cabe\u00e7a \u2014 a dor \u00e9 o sintoma, mas a causa pode estar em dezenas de lugares diferentes. O trabalho de investiga\u00e7\u00e3o \u00e9 o que consome as horas, n\u00e3o a corre\u00e7\u00e3o em si, que geralmente \u00e9 r\u00e1pida assim que a causa \u00e9 identificada.<\/p>\n<h3>Por que a IA ajuda tanto nessa etapa<\/h3>\n<p>Ferramentas de IA generativa, como o <a href=\"https:\/\/claude.ai\" target=\"_blank\">Claude<\/a>, o <a href=\"https:\/\/chatgpt.com\" target=\"_blank\">ChatGPT<\/a> ou assistentes integrados ao editor de c\u00f3digo como o <a href=\"https:\/\/github.com\/features\/copilot\" target=\"_blank\">GitHub Copilot<\/a> e o <a href=\"https:\/\/cursor.com\" target=\"_blank\">Cursor<\/a>, foram treinadas com uma quantidade enorme de c\u00f3digo, mensagens de erro e discuss\u00f5es t\u00e9cnicas. Isso significa que elas j\u00e1 &#8220;viram&#8221; milhares de varia\u00e7\u00f5es do mesmo tipo de problema que voc\u00ea est\u00e1 enfrentando agora. Onde voc\u00ea precisaria pesquisar em f\u00f3runs e testar hip\u00f3teses uma a uma, a IA consegue sugerir, em segundos, as causas mais prov\u00e1veis com base em padr\u00f5es conhecidos.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> pense na IA aplicada ao debugging como um m\u00e9dico residente que j\u00e1 atendeu milhares de casos parecidos com o seu. Ele n\u00e3o substitui o exame cl\u00ednico (rodar o c\u00f3digo, olhar os dados), mas acelera muito a formula\u00e7\u00e3o do diagn\u00f3stico correto.<\/p><\/blockquote>\n<h2>O erro mais comum: pedir a corre\u00e7\u00e3o antes de entender o problema<\/h2>\n<p>A maioria dos iniciantes usa a IA de debugging da forma menos eficiente: cola o c\u00f3digo inteiro, cola a mensagem de erro, e pede &#8220;conserta isso para mim&#8221;. \u00c0s vezes funciona. Mas em problemas um pouco mais sutis, essa abordagem gera respostas gen\u00e9ricas, corre\u00e7\u00f5es que &#8220;escondem&#8221; o sintoma sem resolver a causa, ou um ciclo frustrante de &#8220;tenta isso&#8221; seguido de &#8220;n\u00e3o funcionou, tenta outra coisa&#8221;.<\/p>\n<p>A t\u00e9cnica que realmente economiza horas \u00e9 usar a IA como parceira de <strong>investiga\u00e7\u00e3o<\/strong>, seguindo um roteiro parecido com o que um investigador segue em uma cena: reunir evid\u00eancias, formular hip\u00f3teses, testar cada uma, e s\u00f3 ent\u00e3o aplicar a corre\u00e7\u00e3o.<\/p>\n<h3>Passo 1: descreva o comportamento esperado e o comportamento real<\/h3>\n<p>Antes de colar qualquer c\u00f3digo, escreva duas frases simples: o que o programa deveria fazer, e o que ele est\u00e1 fazendo de fato. Essa etapa parece \u00f3bvia, mas \u00e9 onde a maioria das pessoas erra \u2014 muitas vezes cola s\u00f3 a mensagem de erro, sem explicar o contexto de uso.<\/p>\n<p>Veja um exemplo em Python, uma fun\u00e7\u00e3o simples que deveria calcular a m\u00e9dia de uma lista de notas, mas est\u00e1 retornando um valor errado:<\/p>\n<pre><code>def calcular_media(notas):\n    soma = 0\n    for nota in notas:\n        soma += nota\n    return soma \/ len(notas) - 1\n\nnotas = [7.0, 8.5, 9.0]\nprint(calcular_media(notas))\n<\/code><\/pre>\n<p>Um prompt (a instru\u00e7\u00e3o dada \u00e0 IA) ruim seria: &#8220;esse c\u00f3digo est\u00e1 errado, conserta&#8221;. Um prompt bom, seguindo o passo 1, seria:<\/p>\n<pre><code>Tenho uma fun\u00e7\u00e3o em Python que deveria calcular a m\u00e9dia\naritm\u00e9tica de uma lista de notas. Para a lista [7.0, 8.5, 9.0],\no resultado esperado \u00e9 8.166..., mas a fun\u00e7\u00e3o est\u00e1 retornando\n7.166...\n\nAqui est\u00e1 o c\u00f3digo:\n\ndef calcular_media(notas):\n    soma = 0\n    for nota in notas:\n        soma += nota\n    return soma \/ len(notas) - 1\n\nO que pode estar causando essa diferen\u00e7a de exatamente 1\nunidade no resultado?\n<\/code><\/pre>\n<p>Perceba que o prompt j\u00e1 entrega a evid\u00eancia mais importante: a diferen\u00e7a \u00e9 constante (1 unidade), o que \u00e9 uma pista fort\u00edssima de que existe uma opera\u00e7\u00e3o a mais (ou a menos) isolada do c\u00e1lculo principal. Com esse n\u00edvel de detalhe, a IA \u2014 ou at\u00e9 voc\u00ea mesmo, relendo o c\u00f3digo com esse olhar \u2014 identifica rapidamente o <code>- 1<\/code> sobrando no final da fun\u00e7\u00e3o.<\/p>\n<h3>Passo 2: forne\u00e7a o contexto m\u00ednimo necess\u00e1rio, nem mais, nem menos<\/h3>\n<p>Em projetos reais, o bug raramente est\u00e1 isolado em uma fun\u00e7\u00e3o de cinco linhas. Ele est\u00e1 espalhado entre m\u00f3dulos, arquivos de configura\u00e7\u00e3o e chamadas a bibliotecas externas. O desafio aqui \u00e9 encontrar o equil\u00edbrio: colar o projeto inteiro sobrecarrega a IA com informa\u00e7\u00e3o irrelevante e dilui o foco; colar de menos faz a IA &#8220;chutar&#8221; sem embasamento.<\/p>\n<p>Uma boa pr\u00e1tica \u00e9 fornecer tr\u00eas coisas: o trecho de c\u00f3digo relevante, a mensagem de erro completa (sem resumir ou parafrasear) e, quando existir, o rastro de chamadas (o chamado <em>stack trace<\/em>, a lista de fun\u00e7\u00f5es que foram executadas at\u00e9 o erro acontecer).<\/p>\n<p>Veja um exemplo em JavaScript, rodando com <a href=\"https:\/\/nodejs.org\" target=\"_blank\">Node.js<\/a>:<\/p>\n<pre><code>function buscarUsuario(lista, id) {\n  return lista.find(usuario =&gt; usuario.id === id).nome;\n}\n\nconst usuarios = [\n  { id: 1, nome: \"Ana\" },\n  { id: 2, nome: \"Bruno\" }\n];\n\nconsole.log(buscarUsuario(usuarios, 3));\n<\/code><\/pre>\n<p>Ao rodar esse c\u00f3digo, o erro real \u00e9 este:<\/p>\n<pre><code>TypeError: Cannot read properties of undefined (reading 'nome')\n    at buscarUsuario (\/app\/index.js:2:41)\n    at Object.&lt;anonymous&gt; (\/app\/index.js:10:13)\n<\/code><\/pre>\n<p>Um prompt bem constru\u00eddo incluiria os dois blocos acima, mais uma frase de contexto:<\/p>\n<pre><code>Estou usando Node.js. A fun\u00e7\u00e3o buscarUsuario deveria retornar\no nome do usu\u00e1rio pelo id, mas quando o id n\u00e3o existe na lista,\nrecebo o erro abaixo. Preciso que ela retorne null em vez de\nquebrar o programa. Segue o c\u00f3digo e o erro completo:\n\n[c\u00f3digo aqui]\n[mensagem de erro completa aqui]\n<\/code><\/pre>\n<p>Com essas informa\u00e7\u00f5es, a resposta tende a ser precisa e imediatamente aplic\u00e1vel, porque a IA n\u00e3o precisa adivinhar a linguagem, o ambiente de execu\u00e7\u00e3o, nem o comportamento desejado \u2014 tudo j\u00e1 foi dito.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> nunca resuma a mensagem de erro com suas pr\u00f3prias palavras. Copie e cole o texto exato. Detalhes como o nome do arquivo, o n\u00famero da linha e o tipo exato da exce\u00e7\u00e3o (<code>TypeError<\/code>, <code>KeyError<\/code>, <code>NullReferenceException<\/code>, entre outros) carregam informa\u00e7\u00e3o valiosa que se perde na par\u00e1frase.<\/p><\/blockquote>\n<h3>Passo 3: pe\u00e7a hip\u00f3teses antes de pedir a corre\u00e7\u00e3o<\/h3>\n<p>Uma t\u00e9cnica pouco usada por iniciantes, mas extremamente eficaz, \u00e9 pedir explicitamente uma lista de hip\u00f3teses antes de qualquer c\u00f3digo corrigido. Isso obriga a IA \u2014 e voc\u00ea \u2014 a pensar no diagn\u00f3stico antes do tratamento, evitando corre\u00e7\u00f5es que resolvem o sintoma sem tratar a causa.<\/p>\n<p>Exemplo de prompt:<\/p>\n<pre><code>Antes de me dar uma corre\u00e7\u00e3o, liste de 3 a 5 hip\u00f3teses poss\u00edveis\npara essa falha, ordenadas da mais prov\u00e1vel para a menos prov\u00e1vel,\nexplicando brevemente o racioc\u00ednio de cada uma.\n<\/code><\/pre>\n<p>Esse pedido muda completamente a qualidade da conversa. Em vez de receber um bloco de c\u00f3digo pronto que voc\u00ea aceita sem entender, voc\u00ea recebe um racioc\u00ednio que pode confirmar, ou refutar, testando no seu pr\u00f3prio ambiente. Isso \u00e9 importante porque a IA n\u00e3o executa o seu c\u00f3digo real \u2014 ela infere com base no texto que voc\u00ea forneceu, ent\u00e3o validar as hip\u00f3teses continua sendo etapa sua.<\/p>\n<h2>T\u00e9cnicas pr\u00e1ticas para o dia a dia<\/h2>\n<h3>T\u00e9cnica 1: o &#8220;pato de borracha&#8221; com IA<\/h3>\n<p><em>Rubber duck debugging<\/em> (depura\u00e7\u00e3o do pato de borracha) \u00e9 uma t\u00e9cnica antiga: voc\u00ea explica o problema em voz alta, linha por linha, para um objeto inanimado \u2014 literalmente um pato de borracha, na hist\u00f3ria original \u2014, e muitas vezes encontra o erro sozinho, s\u00f3 pelo ato de verbalizar o racioc\u00ednio. A IA torna essa t\u00e9cnica mais poderosa porque, al\u00e9m de ouvir, ela responde e questiona.<\/p>\n<p>Na pr\u00e1tica, isso significa narrar o c\u00f3digo para a IA, fun\u00e7\u00e3o por fun\u00e7\u00e3o, pedindo que ela aponte inconsist\u00eancias no meio da explica\u00e7\u00e3o \u2014 n\u00e3o apenas no final.<\/p>\n<h3>T\u00e9cnica 2: isolamento por bisse\u00e7\u00e3o<\/h3>\n<p>Quando o bug est\u00e1 em um trecho grande e voc\u00ea n\u00e3o sabe por onde come\u00e7ar, pe\u00e7a \u00e0 IA para ajudar a montar um plano de bisse\u00e7\u00e3o: dividir o c\u00f3digo ao meio, testar cada metade isoladamente, e repetir o processo na metade que ainda apresenta o problema, at\u00e9 isolar a linha exata. \u00c9 a mesma l\u00f3gica usada pelo comando <code>git bisect<\/code>, do <a href=\"https:\/\/git-scm.com\/docs\/git-bisect\" target=\"_blank\">Git<\/a>, que localiza qual commit introduziu um bug testando commits intermedi\u00e1rios.<\/p>\n<pre><code># Exemplo de uso do git bisect para encontrar o commit\n# que introduziu uma regress\u00e3o\ngit bisect start\ngit bisect bad                # o commit atual est\u00e1 com bug\ngit bisect good v1.2.0        # essa vers\u00e3o antiga funcionava\n# o Git vai indicar um commit no meio; voc\u00ea testa e responde:\ngit bisect good   # ou\ngit bisect bad\n# repete at\u00e9 o Git apontar o commit exato do problema\ngit bisect reset\n<\/code><\/pre>\n<p>Voc\u00ea pode pedir \u00e0 IA que interprete o <em>diff<\/em> (a diferen\u00e7a entre duas vers\u00f5es do c\u00f3digo) do commit apontado pelo <code>git bisect<\/code> e explique, em linguagem simples, o que mudou e por que isso pode ter causado a falha.<\/p>\n<h3>T\u00e9cnica 3: pe\u00e7a para a IA gerar um caso de teste m\u00ednimo<\/h3>\n<p>Um bug em um sistema grande costuma depender de muitas partes m\u00f3veis. Reduzir o problema a um exemplo m\u00ednimo que reproduz o erro \u00e9 uma das etapas mais valiosas do debugging \u2014 e uma das que a IA mais ajuda a acelerar.<\/p>\n<p>Exemplo de prompt:<\/p>\n<pre><code>Com base nesse trecho de c\u00f3digo e no erro relatado, crie o\nmenor exemplo poss\u00edvel, sem depend\u00eancias externas, que\nreproduza esse mesmo comportamento incorreto.\n<\/code><\/pre>\n<p>Ter um exemplo m\u00ednimo \u00e9 \u00fatil por dois motivos: primeiro, ele confirma que voc\u00ea entendeu a causa raiz (se o exemplo reduzido tamb\u00e9m falhar, a hip\u00f3tese est\u00e1 correta); segundo, ele se torna, naturalmente, um teste automatizado que evita que o mesmo bug volte no futuro \u2014 tema que vale a pena aprofundar separadamente ao estudar testes automatizados.<\/p>\n<h3>T\u00e9cnica 4: use a IA para traduzir mensagens de erro obscuras<\/h3>\n<p>Algumas linguagens e frameworks produzem mensagens de erro pouco amig\u00e1veis para quem est\u00e1 come\u00e7ando. Um exemplo cl\u00e1ssico \u00e9 o Delphi, com exce\u00e7\u00f5es como <code>EAccessViolation<\/code>, que indicam acesso inv\u00e1lido \u00e0 mem\u00f3ria, mas raramente dizem exatamente qual vari\u00e1vel causou o problema:<\/p>\n<pre><code>procedure TFormPrincipal.CarregarDados;\nvar\n  Lista: TStringList;\nbegin\n  Lista.Add('Primeiro item'); \/\/ Lista nunca foi criada com Create\nend;\n<\/code><\/pre>\n<p>Ao rodar esse c\u00f3digo, o Delphi lan\u00e7a uma <code>Access violation<\/code> porque a vari\u00e1vel <code>Lista<\/code> foi declarada, mas nunca inicializada com <code>Lista := TStringList.Create;<\/code>. Para quem est\u00e1 come\u00e7ando, a mensagem de erro sozinha n\u00e3o deixa isso \u00f3bvio. Um prompt direto para a IA, explicando a linguagem e colando o trecho, costuma revelar imediatamente que falta a inicializa\u00e7\u00e3o do objeto \u2014 um erro comum em linguagens com gerenciamento manual de mem\u00f3ria.<\/p>\n<h2>Cuidados para n\u00e3o confiar demais na resposta pronta<\/h2>\n<p>A IA pode errar. Ela pode sugerir uma causa plaus\u00edvel, mas incorreta, especialmente quando o contexto fornecido \u00e9 incompleto. Por isso, tr\u00eas h\u00e1bitos protegem voc\u00ea de conclus\u00f5es precipitadas:<\/p>\n<ul>\n<li><strong>Sempre teste a hip\u00f3tese antes de aplicar a corre\u00e7\u00e3o definitiva.<\/strong> Rode o c\u00f3digo, confirme o comportamento, s\u00f3 ent\u00e3o altere.<\/li>\n<li><strong>Pe\u00e7a explica\u00e7\u00f5es, n\u00e3o apenas solu\u00e7\u00f5es.<\/strong> Se a IA n\u00e3o conseguir explicar por que a corre\u00e7\u00e3o resolve o problema, desconfie da resposta.<\/li>\n<li><strong>Desconfie de corre\u00e7\u00f5es que &#8220;escondem&#8221; o sintoma<\/strong>, como capturar uma exce\u00e7\u00e3o sem trat\u00e1-la (um bloco <code>try\/except<\/code> ou <code>try\/catch<\/code> vazio), que faz o erro sumir da tela sem resolver a causa.<\/li>\n<\/ul>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> o livro <em>&#8220;Debugging: The 9 Indispensable Rules&#8221;<\/em>, de David J. Agans, apresenta princ\u00edpios de investiga\u00e7\u00e3o de bugs que continuam v\u00e1lidos mesmo na era da IA \u2014 entre eles, &#8220;entenda o sistema&#8221; e &#8220;n\u00e3o adivinhe, fa\u00e7a o sistema falar&#8221;. A IA acelera a coleta de evid\u00eancias, mas o racioc\u00ednio investigativo continua sendo seu.<\/p><\/blockquote>\n<h2>Um roteiro simples para aplicar hoje mesmo<\/h2>\n<p>Para consolidar o que foi apresentado, aqui est\u00e1 um roteiro curto que voc\u00ea pode seguir na pr\u00f3xima vez que travar em um bug:<\/p>\n<ul>\n<li>Escreva, em uma frase, o que o programa deveria fazer e o que ele est\u00e1 fazendo.<\/li>\n<li>Re\u00fana o trecho de c\u00f3digo relevante, a mensagem de erro completa e, se houver, o rastro de chamadas.<\/li>\n<li>Pe\u00e7a hip\u00f3teses antes de pedir a corre\u00e7\u00e3o.<\/li>\n<li>Teste cada hip\u00f3tese no seu ambiente real antes de aceitar qualquer resposta como definitiva.<\/li>\n<li>Pe\u00e7a um caso de teste m\u00ednimo que reproduza o bug, para validar o entendimento e evitar regress\u00f5es futuras.<\/li>\n<\/ul>\n<h2>Continue evoluindo com quem j\u00e1 est\u00e1 aplicando isso na pr\u00e1tica<\/h2>\n<p>As t\u00e9cnicas apresentadas aqui s\u00e3o o ponto de partida. O aprendizado real acontece quando voc\u00ea troca experi\u00eancias com outros desenvolvedores que est\u00e3o enfrentando os mesmos desafios \u2014 descobrindo, junto, o que funciona e o que n\u00e3o funciona em diferentes linguagens e projetos.<\/p>\n<p>Se voc\u00ea quer aprofundar o uso de IA no desenvolvimento de software, trocar prompts, ver casos reais de debugging e evoluir mais r\u00e1pido do que estudando sozinho, entre para a <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\">Comunidade Dev&#8217;s AI<\/a>. \u00c9 um espa\u00e7o criado justamente para desenvolvedores que querem aplicar IA de forma pr\u00e1tica, sem perder o controle t\u00e9cnico do que est\u00e3o construindo.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Debugging sempre foi, e continua sendo, uma habilidade que se desenvolve com pr\u00e1tica e m\u00e9todo. O que muda, com a chegada das ferramentas de IA, n\u00e3o \u00e9 a necessidade de racioc\u00ednio \u2014 \u00e9 a velocidade com que voc\u00ea consegue formular e testar hip\u00f3teses. Quem trata a IA como um atalho para &#8220;consertar sem entender&#8221; continua perdendo tardes inteiras. Quem a trata como uma parceira de investiga\u00e7\u00e3o, seguindo um m\u00e9todo claro de evid\u00eancias, hip\u00f3teses e testes, transforma horas de frustra\u00e7\u00e3o em minutos de trabalho produtivo. A diferen\u00e7a n\u00e3o est\u00e1 na ferramenta, est\u00e1 em como voc\u00ea conversa com ela.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e3o 16h de uma quarta-feira. Um teste que sempre passou come\u00e7ou a falhar depois de um commit aparentemente inofensivo. Voc\u00ea olha o log, n\u00e3o entende nada, adiciona um print aqui, comenta uma linha ali, roda de novo \u2014 e o erro muda de lugar, mas n\u00e3o desaparece. Uma hora se transforma em tr\u00eas. O prazo [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1104,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1103"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1103\/revisions"}],"predecessor-version":[{"id":1105,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1103\/revisions\/1105"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1104"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}