Chamar agentes da Vertex AI no ambiente ABAP

Este guia de início rápido mostra como chamar os agentes da Vertex AI, criados com o Agent Development Kit (ADK), no seu ambiente ABAP.

Este guia explica o processo de chamada de um agente de IA usando o ABAP SDK for Google Cloud no local ou em qualquer edição na nuvem, e não aborda procedimentos de criação ou implantação. Você cria um agente de IA usando o Kit de desenvolvimento de agentes (ADK, na sigla em inglês), que é um framework de código aberto para projetar agentes, criado na mesma estrutura que alimenta o Google Agentspace e o Customer Engagement Suite com a IA do Google. Em seguida, você implanta o agente no Vertex AI Agent Engine, que é um ambiente de execução totalmente gerenciado na Vertex AI que ajuda a implantar agentes personalizados na produção com testes, lançamento e confiabilidade integrados em uma escala global e segura.

Antes de começar

Antes de executar este guia de início rápido, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:

Implantar o agente no Vertex AI Agent Engine

Crie, teste e implante seu agente no Vertex AI Agent Engine. Neste tutorial, você pode criar um agente de clima e hora e implantar o agente no Vertex AI Agent Engine.

Para informações sobre como criar, testar e implantar o agente, consulte:

Verifique se você concedeu as permissões necessárias para que o agente use as sessões gerenciadas.

Após a implantação, você recebe um identificador de recurso semelhante ao exemplo abaixo, que permite a invocação do agente no seu programa ABAP:

AgentEngine created. Resource name: projects/project_id/locations/us-central1/reasoningEngines/REASONING_ENGINE_ID

No identificador do recurso, anote o REASONING_ENGINE_ID, por exemplo, 6384464913570601984. Você vai precisar dele em uma etapa posterior.

Criar um programa para chamar agentes da Vertex AI no ambiente ABAP

  1. No sistema SAP, crie um programa executável no namespace personalizado (por exemplo, Z ou Y) usando a transação SE38.

    1. Na GUI do SAP, insira o código da transação SE38.

    2. No campo Programa, insira um nome, por exemplo, ZDEMO_CALL_AGENT.

    3. Clique em Criar.

    4. Especifique os atributos do programa:

      1. No campo Título, insira um título do programa, por exemplo, Call Vertex AI Agent.

      2. No campo Tipo, escolha Executable Program.

      3. Clique em Salvar.

    5. Salve o programa como um Objeto local.

    6. No Editor ABAP, adicione o seguinte código:

        REPORT zdemo_call_agent.
      
        DATA lv_p_projects_id          TYPE string.
        DATA lv_p_locations_id         TYPE string.
        DATA lv_p_reasoning_engines_id TYPE string.
        DATA ls_input                  TYPE /goog/cl_aiplatform_v1=>ty_1072.
      
        TYPES: BEGIN OF ty_agent_input,
                message    TYPE string,
                session_id TYPE string,
                user_id    TYPE string,
              END OF ty_agent_input.
      
        DATA ls_agent_input TYPE ty_agent_input.
      
        TYPES: BEGIN OF ty_response,
                content TYPE /goog/cl_aiplatform_v1=>ty_695,
              END OF ty_response.
        DATA ls_agent_response TYPE ty_response.
      
        TRY.
      
            " Open HTTP Connection
            DATA(lo_client) = NEW /goog/cl_aiplatform_v1( iv_key_name = 'DEMO_AIPLATFORM' ).
            DATA lv_agent_response_txt TYPE string.
      
            " Populate relevant parameters
            lv_p_projects_id = lo_client->gv_project_id.
            lv_p_locations_id = 'LOCATION_ID'.
            lv_p_reasoning_engines_id = 'REASONING_ENGINE_ID'.
      
            ls_agent_input-message = 'What is the weather in New York'. "Prompt
            ls_agent_input-user_id = 'use-101'.
            ls_input-class_method = 'stream_query'.
            GET REFERENCE OF ls_agent_input INTO ls_input-input.
      
            lo_client->add_json_name_mapping( iv_abap = 'CLASS_METHOD' iv_json = 'class_method' ).
            lo_client->add_json_name_mapping( iv_abap = 'SESSION_ID'  iv_json = 'session_id' ).
            lo_client->add_json_name_mapping( iv_abap = 'USER_ID' iv_json = 'user_id' ).
      
            " Call API method: aiplatform.projects.locations.reasoningEngines.streamQuery
            lo_client->stream_query_reasoning_engi( EXPORTING iv_p_projects_id          = lv_p_projects_id
                                                              iv_p_locations_id         = lv_p_locations_id
                                                              iv_p_reasoning_engines_id = lv_p_reasoning_engines_id
                                                              is_input                  = ls_input
                                                    IMPORTING es_raw                    = lv_agent_response_txt
                                                              ev_ret_code               = DATA(lv_ret_code)
                                                              ev_err_text               = DATA(lv_err_text)
                                                              es_err_resp               = DATA(ls_err_resp) ).
      
            " Handle the output
            IF lo_client->is_success( lv_ret_code ).
              SPLIT lv_agent_response_txt AT cl_abap_char_utilities=>newline INTO TABLE DATA(lt_result_event_tab).
      
              " Deserialize to read the final response event from agent
              /goog/cl_json_util=>deserialize_json( EXPORTING iv_json        = lt_result_event_tab[ 3 ]
                                                              iv_pretty_name = /ui2/cl_json=>pretty_mode-extended
                                                    IMPORTING es_data        = ls_agent_response ).
      
              cl_demo_output=>display( ls_agent_response-content-parts[ 1 ]-text ).
      
            ELSE.
              MESSAGE lv_err_text TYPE 'E'.
            ENDIF.
      
            " Close HTTP Connection
            lo_client->close( ).
      
          CATCH /goog/cx_sdk INTO DATA(lo_exception).
            MESSAGE lo_exception->get_text( ) TYPE 'E'.
        ENDTRY.
      
      

      Substitua:

      • DEMO_AIPLATFORM: a chave do cliente para autenticação em Google Cloud.
      • LOCATION_ID: o local em que o agente é implantado. Você especifica o local ao inicializar o agente. Para mais informações, consulte Inicializar o agente.
      • REASONING_ENGINE_ID: o identificador de recursos do agente que você anotou na seção Implantar o agente no Vertex AI Agent Engine.
  2. Execute o aplicativo em SE38.

  3. Valide se os resultados são consistentes com os observados quando o agente foi executado localmente.

    Example response: OK. The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).
    

A seguir