

{"id":205123,"date":"2025-08-25T11:52:06","date_gmt":"2025-08-25T14:52:06","guid":{"rendered":"https:\/\/goias.gov.br\/ligo\/?p=205123"},"modified":"2025-08-25T11:52:10","modified_gmt":"2025-08-25T14:52:10","slug":"estudo-para-criar-um-agente-de-ia-com-mcp-que-respondera-sobre-emendas-parlamentares-do-portal-da-transparencia","status":"publish","type":"post","link":"https:\/\/goias.gov.br\/ligo\/estudo-para-criar-um-agente-de-ia-com-mcp-que-respondera-sobre-emendas-parlamentares-do-portal-da-transparencia\/","title":{"rendered":"Estudo para criar um Agente de IA com MCP que responder\u00e1 sobre emendas parlamentares do portal da transpar\u00eancia"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"960\" height=\"500\" src=\"https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/logo-2.jpg\" alt=\"\" class=\"wp-image-205135\" srcset=\"https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/logo-2.jpg 960w, https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/logo-2-300x156.jpg 300w, https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/logo-2-768x400.jpg 768w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/figure>\n<\/div>\n\n\n<p>Nos \u00faltimos anos, a transpar\u00eancia p\u00fablica tem se tornado cada vez mais importante. O portal da transpar\u00eancia do governo disponibiliza informa\u00e7\u00f5es valiosas sobre <strong>emendas parlamentares<\/strong>, mas a forma como esses dados s\u00e3o apresentados nem sempre facilita o acesso do cidad\u00e3o comum. Foi nesse contexto que nasceu este projeto: criar um <strong>Agente de Intelig\u00eancia Artificial<\/strong> que pudesse responder a perguntas em linguagem natural sobre emendas parlamentares.<\/p>\n\n\n\n<p>O diferencial foi utilizar o <strong>Google ADK<\/strong> com um <strong>servidor MCP local<\/strong> para orquestrar ferramentas de busca sobre um <strong>arquivo Excel<\/strong> baixado diretamente do portal da transpar\u00eancia. Assim, o usu\u00e1rio poderia perguntar de maneira natural, e o agente interpretaria a solicita\u00e7\u00e3o, filtrando os dados de forma autom\u00e1tica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Primeira abordagem: ferramenta \u00fanica de busca por filtros<\/h2>\n\n\n\n<p>Na primeira vers\u00e3o, criei a ferramenta chamada <em>buscar_emendas<\/em>.<br>A ideia era simples: o usu\u00e1rio faria a pergunta em portugu\u00eas e, dentro da fun\u00e7\u00e3o, um <strong>LLM (Large Language Model)<\/strong> interpretaria o texto, transformando-o em um filtro estruturado.<\/p>\n\n\n\n<p>Por exemplo:<\/p>\n\n\n\n<p><strong>Pergunta do usu\u00e1rio:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left\">Liste as emendas cujo benefici\u00e1rio \u00e9 &#8220;Associa\u00e7\u00e3o dos Agricultores de Goi\u00e1s&#8221; e que tiveram valor liquidado acima de 100000 em 2022.<\/p>\n\n\n\n<p><strong>Filtro esperado:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n  \"Ano Emenda\": \"2022\",\n  \"Benefici\u00e1rio\": \"Associa\u00e7\u00e3o dos Agricultores de Goi\u00e1s\",\n  \"Valor Liquidado (R$)\": \">100000\"\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #97E2F2\">&quot;<\/span><span style=\"color: #97E1F1\">Ano Emenda<\/span><span style=\"color: #97E2F2\">&quot;<\/span><span style=\"color: #F286C4\">:<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">2022<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #F6F6F4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #97E2F2\">&quot;<\/span><span style=\"color: #97E1F1\">Benefici\u00e1rio<\/span><span style=\"color: #97E2F2\">&quot;<\/span><span style=\"color: #F286C4\">:<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">Associa\u00e7\u00e3o dos Agricultores de Goi\u00e1s<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #F6F6F4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #97E2F2\">&quot;<\/span><span style=\"color: #97E1F1\">Valor Liquidado (R$)<\/span><span style=\"color: #97E2F2\">&quot;<\/span><span style=\"color: #F286C4\">:<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">&gt;100000<\/span><span style=\"color: #DEE492\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Essa solu\u00e7\u00e3o funcionava bem para consultas diretas de filtragem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Limita\u00e7\u00f5es encontradas<\/strong><\/strong>:<\/h2>\n\n\n\n<p>Apesar de \u00fatil, essa abordagem tinha um <strong>problema estrutural<\/strong>: ela s\u00f3 atendia a perguntas que pudessem ser transformadas em filtros diretos.<\/p>\n\n\n\n<p>Por exemplo:<br><br><strong>Pergunta<strong> do usu\u00e1rio:<\/strong>:<\/strong><\/p>\n\n\n\n<p>Qual o valor total das emendas previstas do Deputado Qualquer em 2024?<\/p>\n\n\n\n<p>Esse tipo de quest\u00e3o n\u00e3o \u00e9 apenas um filtro, mas uma <strong>agrega\u00e7\u00e3o num\u00e9rica.<\/strong> Ou seja, n\u00e3o bastava retornar linhas da planilha, era preciso somar valores.<\/p>\n\n\n\n<p>Essa limita\u00e7\u00e3o mostrou que eu precisaria de algo mais flex\u00edvel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Expans\u00e3o para m\u00faltiplas fun\u00e7\u00f5es<\/strong><\/strong>:<\/h2>\n\n\n\n<p>Diante disso, criei cinco fun\u00e7\u00f5es diferentes, cada uma cobrindo um tipo de pergunta:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><strong>buscar_filtros <\/strong><\/em>\u2013 consultas simples por filtros.<\/li>\n\n\n\n<li><em><strong>agrega\u00e7\u00e3o_numerica<\/strong> <\/em>\u2013 c\u00e1lculos como soma, m\u00e9dia, m\u00ednimo e m\u00e1ximo.<\/li>\n\n\n\n<li><em><strong>ranking_ordenacao <\/strong><\/em>\u2013 perguntas do tipo \u201cquem s\u00e3o os maiores benefici\u00e1rios\u201d.<\/li>\n\n\n\n<li><strong><em>estatisticas_coluna <\/em><\/strong>\u2013 estat\u00edsticas gerais sobre uma coluna (quantidade, valores distintos etc.).<\/li>\n\n\n\n<li><strong><em>busca_texto<\/em><\/strong> \u2013 buscas por palavras ou express\u00f5es em campos de texto.<\/li>\n<\/ul>\n\n\n\n<p>Com isso, o agente passou a <strong>decidir sozinho<\/strong> qual ferramenta usar de acordo com a pergunta.<\/p>\n\n\n\n<p>Essa evolu\u00e7\u00e3o funcionou, mas a <strong>complexidade aumentou muito<\/strong>. Cada ferramenta exigia tratamento espec\u00edfico, e a manuten\u00e7\u00e3o ficava cada vez mais dif\u00edcil.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Segunda abordagem: Repensando a arquitetura para SQL como linguagem universal<\/h2>\n\n\n\n<p>Foi ent\u00e3o que decidimos <strong>recome\u00e7ar o projeto com outra abordagem<\/strong>.<br>Em vez de manter v\u00e1rias ferramentas, a ideia passou a ser ter uma <strong>\u00fanica ferramenta de busca<\/strong>, capaz de converter a pergunta do usu\u00e1rio diretamente em uma consulta SQL.<\/p>\n\n\n\n<p>O fluxo ficou assim:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>O usu\u00e1rio faz a pergunta em linguagem natural.<\/li>\n\n\n\n<li>O LLM interpreta a pergunta e gera uma query SQL.<\/li>\n\n\n\n<li>Essa query \u00e9 executada no <strong>DataFrame com os dados das emendas<\/strong>.<\/li>\n\n\n\n<li>O resultado \u00e9 devolvido ao agente, que responde ao usu\u00e1rio.<\/li>\n<\/ol>\n\n\n\n<p>Dessa forma, perguntas simples ou complexas s\u00e3o tratadas da mesma maneira.<\/p>\n\n\n\n<p>Exemplo:<br><strong>Pergunta:<\/strong><\/p>\n\n\n\n<p>Qual o valor total das emendas previstas do Deputado Qualquer em 2024?<\/p>\n\n\n\n<p><strong>SQL gerado:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>SELECT SUM(\"Valor Previsto (R$)\")\nFROM emendas&lt;br>WHERE \"Autor da Emenda\" = 'Deputado Qualquer'\n AND \"Ano Emenda\" = 2024;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">SELECT<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #97E1F1\">SUM<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">Valor Previsto (R$)<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #F6F6F4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">FROM<\/span><span style=\"color: #F6F6F4\"> emendas<\/span><span style=\"color: #F286C4\">&lt;<\/span><span style=\"color: #F6F6F4\">br<\/span><span style=\"color: #F286C4\">&gt;WHERE<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">Autor da Emenda<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&#39;<\/span><span style=\"color: #E7EE98\">Deputado Qualquer<\/span><span style=\"color: #DEE492\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">AND<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #E7EE98\">Ano Emenda<\/span><span style=\"color: #DEE492\">&quot;<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #BF9EEE\">2024<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Essa mudan\u00e7a simplificou bastante o projeto e trouxe muito mais poder de consulta, j\u00e1 que o SQL \u00e9 naturalmente expressivo e cobre uma ampla gama de perguntas poss\u00edveis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>O desafio da performance e a solu\u00e7\u00e3o final<\/strong><\/strong>:<\/h2>\n\n\n\n<p>Apesar do ganho em flexibilidade com SQL, surgiu um novo problema: <strong>consultas muito complexas<\/strong> exigiam que o modelo usado at\u00e9 ent\u00e3o, o <strong>gpt-oss:20b<\/strong>, entrasse em <strong>modo <em>thinking<\/em><\/strong>. Esse processo permitia ao modelo raciocinar em m\u00faltiplos passos e criar SQLs complexos, mas trazia um custo: as respostas ficavam <strong>muito lentas<\/strong>.<\/p>\n\n\n\n<p>Esse modelo tinha as seguintes caracter\u00edsticas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nome:<\/strong> gpt-oss:20b<\/li>\n\n\n\n<li><strong>Capacidades:<\/strong> suporta ferramentas e <em>thinking<\/em><\/li>\n\n\n\n<li><strong>Tamanho:<\/strong> ~14GB<\/li>\n\n\n\n<li><strong>Janela de contexto:<\/strong> 128K tokens<\/li>\n<\/ul>\n\n\n\n<p>Para consultas simples e frequentes, esse comportamento era um gargalo de performance.<\/p>\n\n\n\n<p>A solu\u00e7\u00e3o foi dividir as buscas em dois n\u00edveis, utilizando tamb\u00e9m um segundo modelo: <strong>qwen2.5:14b<\/strong>, que <strong>n\u00e3o possui modo thinking<\/strong>. Ele \u00e9 mais r\u00e1pido e adequado para consultas diretas. Suas especifica\u00e7\u00f5es s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nome:<\/strong> qwen2.5:14b<\/li>\n\n\n\n<li><strong>Capacidades:<\/strong> suporta ferramentas, mas sem <em>thinking<\/em><\/li>\n\n\n\n<li><strong>Tamanho:<\/strong> ~9GB<\/li>\n\n\n\n<li><strong>Janela de contexto:<\/strong> 32K tokens<\/li>\n<\/ul>\n\n\n\n<p>Assim, a arquitetura final ficou organizada em duas ferramentas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>busca_simples_emenda<\/strong> \u2013 roda no qwen2.5:14b, que responde r\u00e1pido e cobre a maior parte das perguntas usuais.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"370\" height=\"374\" src=\"https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/Sem-titulo.png\" alt=\"\" class=\"wp-image-205125\" srcset=\"https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/Sem-titulo.png 370w, https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/Sem-titulo-297x300.png 297w\" sizes=\"(max-width: 370px) 100vw, 370px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>busca_avancada_emenda<\/strong> \u2013 roda no gpt-oss:20b, que entra em modo <em>thinking<\/em> apenas quando necess\u00e1rio para consultas complexas.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"664\" height=\"775\" src=\"https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/Untitled-1.jpg\" alt=\"\" class=\"wp-image-205126\" style=\"width:373px;height:auto\" srcset=\"https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/Untitled-1.jpg 664w, https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/Untitled-1-257x300.jpg 257w\" sizes=\"(max-width: 664px) 100vw, 664px\" \/><\/figure>\n<\/div>\n\n\n<p>O agente passou a ter uma <strong>estrat\u00e9gia adaptativa<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Primeiro tenta resolver com o modelo simples (<strong>qwen2.5:14b<\/strong>).<\/li>\n\n\n\n<li>Se a resposta n\u00e3o for suficiente, escala para o modelo avan\u00e7ado (<strong>gpt-oss:20b<\/strong>).<\/li>\n<\/ol>\n\n\n\n<p>Esse arranjo trouxe o equil\u00edbrio ideal entre <strong>velocidade<\/strong> e <strong>capacidade de racioc\u00ednio complexo<\/strong>, garantindo boa experi\u00eancia para o usu\u00e1rio sem abrir m\u00e3o de consultas sofisticadas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Conclus\u00e3o<\/h2>\n\n\n\n<p>O projeto passou por diversas fases de evolu\u00e7\u00e3o:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Filtros simples<\/strong> \u2192 bom in\u00edcio, mas limitado.<\/li>\n\n\n\n<li><strong>Conjunto de fun\u00e7\u00f5es especializadas<\/strong> \u2192 mais flex\u00edvel, por\u00e9m complexo demais.<\/li>\n\n\n\n<li><strong>SQL como linguagem de consultas<\/strong> \u2192 solu\u00e7\u00e3o enxuta e poderosa.<\/li>\n\n\n\n<li><strong>Divis\u00e3o entre busca simples e avan\u00e7ada<\/strong> \u2192 equil\u00edbrio entre <strong>rapidez<\/strong> e <strong>capacidade de lidar com complexidade<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p>Esse caminho mostra bem os desafios de construir um agente de IA: n\u00e3o basta apenas usar um LLM, \u00e9 preciso <strong>iterar, testar, identificar gargalos e redesenhar a arquitetura<\/strong> at\u00e9 encontrar um ponto de equil\u00edbrio.<\/p>\n\n\n\n<p>No fim, o agente se tornou capaz de responder a perguntas em linguagem natural sobre emendas parlamentares de maneira <strong>eficiente, robusta e escal\u00e1vel<\/strong>, unindo simplicidade de uso e poder anal\u00edtico.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo ser\u00e1 detalhado as etapas que foram passadas para encontrar uma solu\u00e7\u00e3o adequada na cria\u00e7\u00e3o desse agente de IA com a habilidade de fazer consultas num arquivo de emendas parlamentares.<\/p>\n","protected":false},"author":712,"featured_media":205133,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[55,26],"tags":[],"class_list":["post-205123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-inteligencia_artificial","category-publicacoes-ligo"],"rttpg_featured_image_url":{"full":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false],"landscape":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false],"portraits":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false],"thumbnail":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque-150x150.png",150,150,true],"medium":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false],"large":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false],"1536x1536":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false],"2048x2048":["https:\/\/goias.gov.br\/ligo\/wp-content\/uploads\/sites\/61\/2025\/08\/destaque.png",200,260,false]},"rttpg_author":{"display_name":"Adriano Pericles","author_link":"https:\/\/goias.gov.br\/ligo\/author\/adrianorodrigues\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/goias.gov.br\/ligo\/categoria\/publicacoes-ligo\/inteligencia_artificial\/\" rel=\"category tag\">Intelig\u00eancia Artificial<\/a> <a href=\"https:\/\/goias.gov.br\/ligo\/categoria\/publicacoes-ligo\/\" rel=\"category tag\">Publica\u00e7\u00f5es Ligo<\/a>","rttpg_excerpt":"Neste artigo ser\u00e1 detalhado as etapas que foram passadas para encontrar uma solu\u00e7\u00e3o adequada na cria\u00e7\u00e3o desse agente de IA com a habilidade de fazer consultas num arquivo de emendas parlamentares.","_links":{"self":[{"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/posts\/205123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/users\/712"}],"replies":[{"embeddable":true,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/comments?post=205123"}],"version-history":[{"count":2,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/posts\/205123\/revisions"}],"predecessor-version":[{"id":205136,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/posts\/205123\/revisions\/205136"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/media\/205133"}],"wp:attachment":[{"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/media?parent=205123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/categories?post=205123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/goias.gov.br\/ligo\/wp-json\/wp\/v2\/tags?post=205123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}