{"id":1181,"date":"2026-09-02T04:01:27","date_gmt":"2026-09-02T07:01:27","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/rag-na-pratica-contexto-para-ia-sobre-seu-projeto\/"},"modified":"2026-09-02T04:01:35","modified_gmt":"2026-09-02T07:01:35","slug":"rag-na-pratica-contexto-para-ia-sobre-seu-projeto","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/rag-na-pratica-contexto-para-ia-sobre-seu-projeto\/","title":{"rendered":"O Estagi\u00e1rio Amn\u00e9sico: Como Dar \u00e0 IA Mem\u00f3ria Real Sobre o Seu Projeto Usando RAG"},"content":{"rendered":"<p>Imagine contratar um estagi\u00e1rio muito inteligente, capaz de escrever c\u00f3digo limpo e explicar conceitos complexos com clareza. H\u00e1 apenas um problema: todos os dias, ao chegar, ele esquece completamente o projeto em que est\u00e1 trabalhando. N\u00e3o lembra das regras de neg\u00f3cio, n\u00e3o sabe como as fun\u00e7\u00f5es do sistema se conectam, n\u00e3o conhece as decis\u00f5es que a equipe tomou na semana passada. Todos os dias voc\u00ea precisa reexplicar tudo do zero.<\/p>\n<p>Esse estagi\u00e1rio existe, e voc\u00ea provavelmente j\u00e1 trabalha com ele: \u00e9 o assistente de IA que voc\u00ea usa para programar. Modelos como os que alimentam <a href=\"https:\/\/claude.ai\" target=\"_blank\" rel=\"noopener\">o Claude<\/a> ou o ChatGPT s\u00e3o treinados com uma quantidade enorme de informa\u00e7\u00e3o gen\u00e9rica sobre programa\u00e7\u00e3o, mas eles n\u00e3o nascem sabendo nada sobre o seu projeto espec\u00edfico \u2014 sua arquitetura, suas conven\u00e7\u00f5es, suas regras internas. Sem esse conhecimento, a IA improvisa, e improvisar em cima de um sistema real custa caro: sugest\u00f5es que ignoram padr\u00f5es j\u00e1 definidos, c\u00f3digo duplicado porque a IA n\u00e3o sabia que aquela fun\u00e7\u00e3o j\u00e1 existia, ou respostas gen\u00e9ricas quando voc\u00ea precisava de algo espec\u00edfico do seu dom\u00ednio.<\/p>\n<p>\u00c9 exatamente esse problema que a t\u00e9cnica chamada <strong>RAG<\/strong> (Retrieval-Augmented Generation, ou &#8220;Gera\u00e7\u00e3o Aumentada por Recupera\u00e7\u00e3o&#8221;) resolve. Neste artigo, voc\u00ea vai entender o que \u00e9 RAG, como ela funciona por baixo dos panos e vai construir, passo a passo, um exemplo funcional que d\u00e1 \u00e0 IA acesso ao contexto real de um projeto \u2014 sem precisar copiar e colar arquivos inteiros toda vez que fizer uma pergunta.<\/p>\n<h2>O que \u00e9 RAG, afinal?<\/h2>\n<p>RAG \u00e9 a combina\u00e7\u00e3o de duas etapas: <strong>recupera\u00e7\u00e3o<\/strong> (retrieval) de informa\u00e7\u00e3o relevante e <strong>gera\u00e7\u00e3o<\/strong> (generation) de uma resposta usando essa informa\u00e7\u00e3o como apoio. Em vez de perguntar diretamente ao modelo de IA e esperar que ele &#8220;adivinhe&#8221; a resposta com base apenas no que aprendeu durante o treinamento, voc\u00ea primeiro busca em uma base de dados pr\u00f3pria \u2014 pode ser a documenta\u00e7\u00e3o do seu projeto, o c\u00f3digo-fonte, tickets de suporte, atas de reuni\u00e3o \u2014 os trechos mais relevantes para a pergunta feita. Depois, voc\u00ea entrega esses trechos junto com a pergunta para o modelo, que ent\u00e3o gera uma resposta fundamentada nesse material.<\/p>\n<p>\u00c9 como transformar aquele estagi\u00e1rio amn\u00e9sico em um profissional que, antes de responder qualquer coisa, consulta rapidamente um caderno de anota\u00e7\u00f5es espec\u00edfico do projeto. Ele continua sendo o mesmo modelo gen\u00e9rico e inteligente, mas agora com uma &#8220;cola&#8221; contextualizada na m\u00e3o.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> A <a href=\"https:\/\/www.redhat.com\/pt-br\/blog\/redefining-development-retrieval-augmented-generation-rag-revolution-software-engineering\" target=\"_blank\" rel=\"noopener\">Red Hat publicou um artigo detalhado sobre como o RAG est\u00e1 redefinindo a engenharia de software<\/a>, mostrando o impacto dessa t\u00e9cnica al\u00e9m do uso pontual em chats \u2014 ela est\u00e1 mudando como equipes projetam sistemas inteiros de apoio \u00e0 IA.<\/p><\/blockquote>\n<h3>Por que n\u00e3o simplesmente colar tudo no prompt?<\/h3>\n<p>Uma pergunta natural de quem est\u00e1 come\u00e7ando \u00e9: &#8220;por que n\u00e3o colo o projeto inteiro na conversa com a IA?&#8221;. A resposta tem dois motivos pr\u00e1ticos.<\/p>\n<ul>\n<li><strong>Limite de contexto:<\/strong> todo modelo de IA tem um limite de quantidade de texto que consegue processar em uma \u00fanica intera\u00e7\u00e3o, chamado de &#8220;janela de contexto&#8221;. Projetos reais, com milhares de linhas de c\u00f3digo e documenta\u00e7\u00e3o, ultrapassam esse limite facilmente.<\/li>\n<li><strong>Ru\u00eddo:<\/strong> mesmo quando cabe, jogar informa\u00e7\u00e3o em excesso no prompt faz o modelo perder o foco. \u00c9 como pedir para algu\u00e9m encontrar uma frase espec\u00edfica dentro de uma enciclop\u00e9dia inteira, em vez de entregar diretamente o cap\u00edtulo certo.<\/li>\n<\/ul>\n<p>O RAG resolve isso filtrando, antes de conversar com a IA, apenas os peda\u00e7os de informa\u00e7\u00e3o realmente relevantes para aquela pergunta espec\u00edfica.<\/p>\n<h2>As pe\u00e7as que comp\u00f5em um sistema de RAG<\/h2>\n<p>Para entender como o RAG funciona na pr\u00e1tica, \u00e9 preciso conhecer quatro pe\u00e7as fundamentais. Vamos explicar cada uma com uma analogia antes de partir para o c\u00f3digo.<\/p>\n<h3>1. Os documentos-fonte<\/h3>\n<p>S\u00e3o os materiais que voc\u00ea quer que a IA &#8220;conhe\u00e7a&#8221;: arquivos de c\u00f3digo, documenta\u00e7\u00e3o em Markdown, especifica\u00e7\u00f5es t\u00e9cnicas, tickets do sistema de gest\u00e3o de projetos. \u00c9 o conte\u00fado bruto da sua base de conhecimento.<\/p>\n<h3>2. Chunking (divis\u00e3o em peda\u00e7os)<\/h3>\n<p>Documentos grandes precisam ser divididos em peda\u00e7os menores, chamados de &#8220;chunks&#8221;. Isso acontece porque a busca funciona melhor em blocos pequenos e focados do que em arquivos gigantes. Pense em um livro: se algu\u00e9m pergunta sobre um assunto espec\u00edfico, \u00e9 mais eficiente indicar o par\u00e1grafo exato do que entregar o livro inteiro.<\/p>\n<h3>3. Embeddings (representa\u00e7\u00e3o num\u00e9rica de significado)<\/h3>\n<p>Aqui est\u00e1 o cora\u00e7\u00e3o t\u00e9cnico do RAG. Um <strong>embedding<\/strong> \u00e9 uma representa\u00e7\u00e3o num\u00e9rica \u2014 um vetor, ou seja, uma lista de n\u00fameros \u2014 que captura o significado de um texto. Dois textos com significados parecidos geram vetores numericamente pr\u00f3ximos, mesmo que usem palavras diferentes. \u00c9 assim que a busca consegue encontrar &#8220;como fa\u00e7o para me conectar ao banco de dados&#8221; mesmo quando o documento fala em &#8220;configura\u00e7\u00e3o da conex\u00e3o com o PostgreSQL&#8221; \u2014 as palavras diferem, mas o significado \u00e9 pr\u00f3ximo.<\/p>\n<h3>4. O banco vetorial<\/h3>\n<p>\u00c9 onde os embeddings ficam armazenados, organizados de forma que seja poss\u00edvel buscar rapidamente &#8220;quais chunks t\u00eam significado mais pr\u00f3ximo desta pergunta&#8221;. Existem solu\u00e7\u00f5es especializadas para isso, mas tamb\u00e9m \u00e9 poss\u00edvel montar uma vers\u00e3o simples usando apenas estruturas de dados comuns, como faremos no exemplo a seguir.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> Se voc\u00ea quer ver esses quatro conceitos aplicados em um cen\u00e1rio mais avan\u00e7ado, com banco de grafos, vale assistir a <a href=\"https:\/\/www.youtube.com\/watch?v=yPz8LDcAcdA\" target=\"_blank\" rel=\"noopener\">este v\u00eddeo que demonstra como criar um buscador com RAG usando Ollama e Neo4j<\/a>. \u00c9 um passo al\u00e9m do que faremos aqui, mas ajuda a visualizar onde a t\u00e9cnica pode chegar.<\/p><\/blockquote>\n<h2>Construindo um RAG simples do zero, em Python<\/h2>\n<p>Vamos construir um exemplo funcional e minimalista, usando apenas Python puro e uma biblioteca leve para gerar embeddings. O objetivo n\u00e3o \u00e9 criar um sistema de produ\u00e7\u00e3o, mas fazer voc\u00ea entender o mecanismo com as pr\u00f3prias m\u00e3os.<\/p>\n<h3>Passo 1: preparando o ambiente<\/h3>\n<p>Vamos usar a biblioteca <a href=\"https:\/\/www.sbert.net\" target=\"_blank\" rel=\"noopener\">sentence-transformers<\/a>, que gera embeddings de forma local e gratuita, sem depender de uma API externa paga. Instale com:<\/p>\n<pre><code>pip install sentence-transformers numpy<\/code><\/pre>\n<h3>Passo 2: simulando os documentos do projeto<\/h3>\n<p>Imagine que voc\u00ea tem uma pequena base de conhecimento sobre um projeto fict\u00edcio: um sistema de pedidos. Cada item representa um &#8220;chunk&#8221; de documenta\u00e7\u00e3o.<\/p>\n<pre><code>documentos = [\n    \"O m\u00f3dulo de pedidos usa o padr\u00e3o Repository para acessar o banco de dados. \"\n    \"A classe PedidoRepository fica em src\/repositories\/pedido_repository.py.\",\n\n    \"Todo pedido criado precisa passar pela valida\u00e7\u00e3o de estoque antes de ser confirmado. \"\n    \"Essa valida\u00e7\u00e3o est\u00e1 implementada na fun\u00e7\u00e3o validar_estoque, no m\u00f3dulo estoque.py.\",\n\n    \"A API de pagamentos externa \u00e9 acessada atrav\u00e9s da classe PagamentoGateway. \"\n    \"Ela possui retry autom\u00e1tico de at\u00e9 3 tentativas em caso de falha de rede.\",\n\n    \"Conven\u00e7\u00e3o do time: toda fun\u00e7\u00e3o p\u00fablica deve ter docstring no formato Google Style, \"\n    \"e nomes de vari\u00e1veis s\u00e3o sempre em portugu\u00eas para manter consist\u00eancia no dom\u00ednio.\",\n]<\/code><\/pre>\n<p>Em um cen\u00e1rio real, esses textos viriam de arquivos de documenta\u00e7\u00e3o, coment\u00e1rios no c\u00f3digo ou at\u00e9 do pr\u00f3prio c\u00f3digo-fonte processado.<\/p>\n<h3>Passo 3: gerando os embeddings<\/h3>\n<pre><code>from sentence_transformers import SentenceTransformer\nimport numpy as np\n\nmodelo = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')\n\nembeddings_documentos = modelo.encode(documentos)\n\nprint(f\"Cada documento virou um vetor de {embeddings_documentos.shape[1]} n\u00fameros.\")<\/code><\/pre>\n<p>Esse trecho transforma cada um dos quatro textos em um vetor num\u00e9rico. \u00c9 esse vetor que permite comparar significados matematicamente.<\/p>\n<h3>Passo 4: implementando a busca por similaridade<\/h3>\n<p>Para encontrar o documento mais relevante para uma pergunta, comparamos o embedding da pergunta com os embeddings dos documentos, usando uma medida chamada <strong>similaridade de cosseno<\/strong> \u2014 quanto mais pr\u00f3xima de 1, mais parecidos os significados.<\/p>\n<pre><code>def buscar_contexto_relevante(pergunta, documentos, embeddings_documentos, modelo, top_k=2):\n    embedding_pergunta = modelo.encode([pergunta])\n\n    # Similaridade de cosseno entre a pergunta e cada documento\n    similaridades = np.dot(embeddings_documentos, embedding_pergunta.T).flatten()\n    normas = np.linalg.norm(embeddings_documentos, axis=1) * np.linalg.norm(embedding_pergunta)\n    similaridades = similaridades \/ normas\n\n    indices_mais_relevantes = np.argsort(similaridades)[::-1][:top_k]\n\n    return [documentos[i] for i in indices_mais_relevantes]<\/code><\/pre>\n<p>Agora podemos testar com uma pergunta real:<\/p>\n<pre><code>pergunta = \"Como o sistema lida com falhas ao processar um pagamento?\"\n\ncontexto = buscar_contexto_relevante(pergunta, documentos, embeddings_documentos, modelo)\n\nfor trecho in contexto:\n    print(\"-\", trecho)<\/code><\/pre>\n<p>Mesmo sem a palavra &#8220;pagamento&#8221; aparecer em uma pergunta gen\u00e9rica sobre &#8220;falhas&#8221;, o sistema deve retornar o trecho sobre o <code>PagamentoGateway<\/code> como o mais relevante, porque o significado da pergunta est\u00e1 semanticamente pr\u00f3ximo daquele conte\u00fado.<\/p>\n<h3>Passo 5: montando o prompt aumentado<\/h3>\n<p>Com o contexto relevante em m\u00e3os, o pr\u00f3ximo passo \u00e9 montar o prompt que ser\u00e1 enviado \u00e0 IA, combinando a pergunta original com os trechos recuperados:<\/p>\n<pre><code>def montar_prompt(pergunta, contexto):\n    contexto_formatado = \"\\n\".join(f\"- {trecho}\" for trecho in contexto)\n\n    prompt = f\"\"\"Voc\u00ea \u00e9 um assistente t\u00e9cnico do projeto de sistema de pedidos.\nUse exclusivamente as informa\u00e7\u00f5es de contexto abaixo para responder.\nSe a resposta n\u00e3o estiver no contexto, diga que n\u00e3o sabe.\n\nContexto:\n{contexto_formatado}\n\nPergunta: {pergunta}\n\nResposta:\"\"\"\n    return prompt\n\nprompt_final = montar_prompt(pergunta, contexto)\nprint(prompt_final)<\/code><\/pre>\n<p>Esse prompt final \u00e9 o que voc\u00ea envia \u00e0 API do modelo de IA de sua escolha \u2014 seja via chamada de API, seja colando manualmente em uma conversa. A diferen\u00e7a crucial \u00e9 que agora a IA n\u00e3o est\u00e1 &#8220;chutando&#8221; com base em conhecimento gen\u00e9rico: ela est\u00e1 respondendo com base em fatos espec\u00edficos do seu projeto.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> Instruir o modelo a dizer &#8220;n\u00e3o sei&#8221; quando a resposta n\u00e3o estiver no contexto \u00e9 uma pr\u00e1tica essencial. Sem essa instru\u00e7\u00e3o, o modelo tende a preencher lacunas com suposi\u00e7\u00f5es plaus\u00edveis, mas incorretas \u2014 um comportamento conhecido como alucina\u00e7\u00e3o.<\/p><\/blockquote>\n<h2>Como isso se conecta ao seu fluxo de trabalho real<\/h2>\n<p>O exemplo acima usou quatro frases fixas para fins did\u00e1ticos, mas o mesmo princ\u00edpio se aplica a bases de conhecimento muito maiores: documenta\u00e7\u00e3o inteira de um projeto, hist\u00f3rico de decis\u00f5es t\u00e9cnicas, ou at\u00e9 o pr\u00f3prio c\u00f3digo-fonte dividido em fun\u00e7\u00f5es e classes. A l\u00f3gica n\u00e3o muda \u2014 apenas a escala e as ferramentas usadas para armazenar os embeddings de forma eficiente.<\/p>\n<h3>Onde o RAG aparece nas ferramentas que voc\u00ea j\u00e1 usa<\/h3>\n<p>Se voc\u00ea j\u00e1 usa assistentes de IA integrados ao editor de c\u00f3digo, provavelmente j\u00e1 se beneficiou de uma vers\u00e3o de RAG sem perceber. Quando uma ferramenta &#8220;entende&#8221; o projeto aberto e sugere c\u00f3digo coerente com o padr\u00e3o do reposit\u00f3rio, ela normalmente est\u00e1 indexando arquivos localmente e recuperando trechos relevantes antes de gerar a resposta \u2014 exatamente o mecanismo que constru\u00edmos aqui, em uma vers\u00e3o simplificada.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> Vale destacar que RAG em produ\u00e7\u00e3o envolve muito mais cuidado do que o exemplo did\u00e1tico mostrado aqui. Segundo <a href=\"https:\/\/www.instagram.com\/p\/DbwaOlQjnYe\/\" target=\"_blank\" rel=\"noopener\">um post da Roga DX sobre bastidores de IA corporativa<\/a>, construir um sistema de RAG confi\u00e1vel em escala real exige aten\u00e7\u00e3o a atualiza\u00e7\u00e3o constante da base, controle de qualidade dos dados de origem e monitoramento de respostas \u2014 desafios que v\u00e3o al\u00e9m do experimento inicial.<\/p><\/blockquote>\n<h3>RAG e agentes de IA<\/h3>\n<p>Um ponto importante para quem est\u00e1 come\u00e7ando: RAG n\u00e3o \u00e9 uma ferramenta isolada, \u00e9 uma t\u00e9cnica que pode ser combinada com outras pr\u00e1ticas de IA aplicada ao desenvolvimento. Sistemas mais sofisticados usam o RAG dentro de agentes \u2014 programas de IA que decidem, sozinhos, quando buscar informa\u00e7\u00e3o, quando executar uma a\u00e7\u00e3o e quando responder diretamente. Como destacado em <a href=\"https:\/\/www.facebook.com\/ProfessorTenebroso\/videos\/usar-ia-para-programar-%C3%A9-uma-coisa-saber-construir-software-com-ia-%C3%A9-outrafoi-es\/1684937825940818\/\" target=\"_blank\" rel=\"noopener\">uma discuss\u00e3o sobre a diferen\u00e7a entre usar IA para programar e construir software com IA<\/a>, entender conceitos como chunking, contexto e boas pr\u00e1ticas de recupera\u00e7\u00e3o de informa\u00e7\u00e3o \u00e9 o que separa quem usa IA de forma superficial de quem constr\u00f3i solu\u00e7\u00f5es s\u00f3lidas com ela.<\/p>\n<p>Da mesma forma, <a href=\"https:\/\/pt.linkedin.com\/posts\/michellibrito_rag-ia-java-activity-7485679170812039168-g4JM\" target=\"_blank\" rel=\"noopener\">um post de Michelli Brito sobre RAG aplicado a sistemas ag\u00eanticos em Java<\/a> refor\u00e7a essa ideia: o RAG permite que um agente de software busque informa\u00e7\u00f5es relevantes dinamicamente e as injete no prompt em tempo real, em vez de depender de um contexto est\u00e1tico e desatualizado.<\/p>\n<h2>Cuidados b\u00e1sicos ao aplicar RAG no seu projeto<\/h2>\n<p>Antes de sair implementando RAG em tudo, vale conhecer algumas armadilhas comuns para quem est\u00e1 come\u00e7ando:<\/p>\n<ul>\n<li><strong>Chunks mal dimensionados:<\/strong> peda\u00e7os muito pequenos perdem contexto; peda\u00e7os muito grandes trazem ru\u00eddo. \u00c9 preciso testar e ajustar o tamanho ideal para o seu tipo de conte\u00fado.<\/li>\n<li><strong>Base desatualizada:<\/strong> se a documenta\u00e7\u00e3o-fonte n\u00e3o \u00e9 atualizada junto com o c\u00f3digo, o RAG passa a &#8220;ensinar&#8221; a IA com informa\u00e7\u00e3o obsoleta \u2014 o que \u00e9 pior do que n\u00e3o ter contexto algum.<\/li>\n<li><strong>Confiar cegamente na resposta:<\/strong> mesmo com contexto correto, o modelo pode interpretar mal a informa\u00e7\u00e3o recuperada. Revis\u00e3o humana continua sendo indispens\u00e1vel, especialmente em decis\u00f5es cr\u00edticas.<\/li>\n<\/ul>\n<h2>V\u00e1 al\u00e9m: pratique com a comunidade<\/h2>\n<p>Entender RAG na teoria \u00e9 o primeiro passo, mas o verdadeiro aprendizado acontece quando voc\u00ea aplica a t\u00e9cnica em um projeto de verdade, discute decis\u00f5es de implementa\u00e7\u00e3o e troca experi\u00eancias com quem est\u00e1 resolvendo problemas parecidos com os seus. \u00c9 exatamente esse tipo de troca que acontece na <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\" rel=\"noopener\">Comunidade Dev&#8217;s AI<\/a>, um espa\u00e7o para desenvolvedores que querem ir al\u00e9m do uso superficial de IA e realmente entender como construir solu\u00e7\u00f5es s\u00f3lidas com ela \u2014 seja voc\u00ea iniciante ou algu\u00e9m com anos de experi\u00eancia buscando atualiza\u00e7\u00e3o pr\u00e1tica. Participe, compartilhe seus experimentos e aprenda com quem j\u00e1 passou pelos mesmos obst\u00e1culos.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>RAG n\u00e3o \u00e9 uma tecnologia misteriosa reservada a grandes empresas de tecnologia \u2014 \u00e9 uma t\u00e9cnica acess\u00edvel, com fundamentos simples, que qualquer desenvolvedor pode come\u00e7ar a aplicar hoje. No fundo, tudo se resume a tr\u00eas passos: transformar informa\u00e7\u00e3o em uma representa\u00e7\u00e3o que capture significado, buscar os peda\u00e7os mais relevantes para cada pergunta, e entregar esse contexto ao modelo de IA antes de pedir uma resposta.<\/p>\n<p>O exemplo constru\u00eddo neste artigo \u00e9 deliberadamente simples, mas cont\u00e9m exatamente os mesmos princ\u00edpios usados em sistemas de produ\u00e7\u00e3o mais sofisticados. Ao entender essa base, voc\u00ea deixa de ver a IA como uma caixa-preta que \u00e0s vezes acerta e \u00e0s vezes erra, e passa a enxerg\u00e1-la como uma ferramenta que voc\u00ea pode alimentar, ajustar e melhorar \u2014 transformando aquele estagi\u00e1rio amn\u00e9sico em um colega de equipe que, finalmente, conhece o seu projeto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine contratar um estagi\u00e1rio muito inteligente, capaz de escrever c\u00f3digo limpo e explicar conceitos complexos com clareza. H\u00e1 apenas um problema: todos os dias, ao chegar, ele esquece completamente o projeto em que est\u00e1 trabalhando. N\u00e3o lembra das regras de neg\u00f3cio, n\u00e3o sabe como as fun\u00e7\u00f5es do sistema se conectam, n\u00e3o conhece as decis\u00f5es que [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1181","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\/1181","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=1181"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1181\/revisions"}],"predecessor-version":[{"id":1183,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1181\/revisions\/1183"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1182"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}