{"id":1113,"date":"2025-07-08T09:28:57","date_gmt":"2025-07-08T12:28:57","guid":{"rendered":"https:\/\/www.tachyonix.io\/br\/?p=1113"},"modified":"2025-07-08T09:28:57","modified_gmt":"2025-07-08T12:28:57","slug":"agentes-de-a-i-no-sap-parte-1","status":"publish","type":"post","link":"https:\/\/www.tachyonix.io\/br\/agentes-de-a-i-no-sap-parte-1\/","title":{"rendered":"Agentes de A.I. no SAP &#8211; Parte 1"},"content":{"rendered":"\n<p id=\"ember51\">Estamos a <strong>zero dias<\/strong> <strong>sem ouvir falar em Intelig\u00eancia Artificial<\/strong>, e n\u00e3o \u00e9 \u00e0 toa. Seja em v\u00eddeos,palestras ou nas timelines do Linkedin, o tema est\u00e1 em todos os lugares.<\/p>\n\n\n\n<p id=\"ember52\">Recentemente, ao assistir mais um conte\u00fado sobre agentes inteligentes, resolvi mergulhar nesse universo e estudar uma forma de como aplicar esse conte\u00fado dentro de nosso bom e velho <strong>SAP<\/strong>, especialmente com <strong>ABAP<\/strong>.<\/p>\n\n\n\n<p id=\"ember53\">Ap\u00f3s alguma horas explorando bibliotecas em Python, JavaScript e arquiteturas com MCPs, percebi que seria totalmente poss\u00edvel (e at\u00e9 interessante) <strong>simular um agente de AI diretamente em ABAP<\/strong>, com chamadas \u00e0 API da OpenAI.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ember54\">A arquitetura do agente<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQHPruBYk6B1kA\/article-inline_image-shrink_1000_1488\/B4DZe4OJndHAAQ-\/0\/1751142407056?e=1757548800&amp;v=beta&amp;t=30tVqQwbKGxqNRRZfd4QECzWtv1zbMYCaIHLnn-Hgxc\" alt=\"Conte\u00fado do artigo\"\/><figcaption class=\"wp-element-caption\">Arquitetura do agente<\/figcaption><\/figure>\n<\/div>\n\n\n<p id=\"ember56\">A id\u00e9ia \u00e9 simples:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O usu\u00e1rio <strong>envia um prompt<\/strong> com uma d\u00favida ou solicita\u00e7\u00e3o.<\/li>\n\n\n\n<li>O agente <strong>analisa o conte\u00fado e decide<\/strong>, com base em uma lista de ferramentas registradas, <strong>qual fun\u00e7\u00e3o deve ser chamada no SAP<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p id=\"ember58\">Para exemplificar, defini duas ferramentas b\u00e1sicas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Obter a data e hora atual do servidor<\/strong><\/li>\n\n\n\n<li><strong>Listar requests abertas para o usu\u00e1rio logado<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ember60\">Vamos ao c\u00f3digo<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQEdhtaQF95j2g\/article-inline_image-shrink_1500_2232\/B4DZfCbTD.G8AU-\/0\/1751313626259?e=1757548800&amp;v=beta&amp;t=rc0CuHXObqSWHxY11wNJ8sFn5MWullUxegBOxNjWQO0\" alt=\"Conte\u00fado do artigo\"\/><figcaption class=\"wp-element-caption\">Classe ABAP com exemplo<\/figcaption><\/figure>\n<\/div>\n\n\n<p id=\"ember62\">Note que aqui temos a simula\u00e7\u00e3o de uma <em>tool_call<\/em> sendo requisitada pelo modelo. A execu\u00e7\u00e3o da chamada de m\u00e9todos de classe ou fun\u00e7\u00f5es ABAP \u00e9 ent\u00e3o respondida ao usu\u00e1rio com um texto gerado de forma &#8220;natural&#8221; pela API OpenAI.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ember63\">Exemplos de consumo da nossa classe<\/h3>\n\n\n\n<p id=\"ember64\"><strong>Obtendo a hora do ambiente<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DATA(lo_openai)   = NEW zcl_mak_agente_ai( ).\nDATA(lv_response) = lo_openai-&gt;chama_agente( iv_prompt = 'Que horas s\u00e3o agora no sistema?' ).\nWRITE lv_response.<\/code><\/pre>\n\n\n\n<p id=\"ember65\"><strong>Recuperando a lista de requests<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DATA(lo_agente)   = NEW zcl_mak_agente_ai( ).\nDATA(lv_response) = lo_agente-&gt;call_openai_function( iv_prompt = 'Eu tenho alguma request aberta?' ).\nWRITE lv_response.<\/code><\/pre>\n\n\n\n<p id=\"ember66\">Observe que nessa simula\u00e7\u00e3o, a chamada e interpretada pela AI, que decide qual fun\u00e7\u00e3o executar e responder com uma mensagem natural como:<\/p>\n\n\n\n<p id=\"ember67\"><strong>&#8220;Agora s\u00e3o 14h32 no sistema&#8221; <\/strong>ou <strong>&#8220;Sim, voc\u00ea possui duas requess abertas.&#8221;<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ember68\">E voc\u00ea?<\/h3>\n\n\n\n<p id=\"ember69\">J\u00e1 come\u00e7ou a explorer o uso de agentes de IA dentro do SAP?<\/p>\n\n\n\n<p id=\"ember70\">J\u00e1 integrou algo com ABAP e GPT?<\/p>\n\n\n\n<p id=\"ember71\">Estou curioso para saber como outros desenvolvedores est\u00e3o trazendo o mundo da AI para dentro do ERP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estamos a zero dias sem ouvir falar em Intelig\u00eancia Artificial, e n\u00e3o \u00e9 \u00e0 toa. Seja em v\u00eddeos,palestras ou nas timelines do Linkedin, o tema est\u00e1 em todos os lugares. Recentemente, ao assistir mais um conte\u00fado sobre agentes inteligentes, resolvi mergulhar nesse universo e estudar uma forma de como aplicar esse conte\u00fado dentro de nosso [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1114,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sem-categoria"],"_links":{"self":[{"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/posts\/1113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/comments?post=1113"}],"version-history":[{"count":2,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/posts\/1113\/revisions"}],"predecessor-version":[{"id":1117,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/posts\/1113\/revisions\/1117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/media\/1114"}],"wp:attachment":[{"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/media?parent=1113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/categories?post=1113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tachyonix.io\/br\/wp-json\/wp\/v2\/tags?post=1113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}