Chiama Vertex AI Agents dall'ambiente ABAP

Questa guida rapida mostra come chiamare gli agenti Vertex AI, creati con l'Agent Development Kit (ADK), dal tuo ambiente ABAP.

Questa guida illustra la procedura di chiamata di un agente AI utilizzando l'edizione on-premise o qualsiasi versione cloud dell'SDK ABAP per Google Cloud e non tratta le procedure di creazione o di implementazione. Per creare un agente IA, puoi utilizzare Agent Development Kit (ADK), che è un framework open source per la progettazione degli agenti, basato sullo stesso framework alla base di Google Agentspace e Customer Engagement Suite con l'IA di Google. Poi esegui il deployment dell'agente in Vertex AI Agent Engine, un runtime completamente gestito in Vertex AI che ti aiuta a eseguire il deployment degli agenti personalizzati in produzione con test, rilascio e affidabilità integrati su larga scala, in modo sicuro e globale.

Prima di iniziare

Prima di eseguire questa guida rapida, assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:

Esegui il deployment dell'agente in Vertex AI Agent Engine

Crea, testa ed esegui il deployment dell'agente in Vertex AI Agent Engine. Per questa guida rapida, puoi creare un agente per il meteo e l'ora ed eseguire il deployment dell'agente in Vertex AI Agent Engine.

Per informazioni su come creare, testare e implementare l'agente, consulta quanto segue:

Assicurati di aver concesso all'agente le autorizzazioni richieste per utilizzare le sessioni gestite.

Dopo il deployment, viene visualizzato un identificatore della risorsa simile all'esempio seguente, che consente l'invocazione dell'agente all'interno del programma ABAP:

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

Prendi nota del valore REASONING_ENGINE_ID dell'identificatore della risorsa, ad esempio 6384464913570601984. Servirà in un secondo momento.

Creare un programma per chiamare gli agenti Vertex AI dall'ambiente ABAP

  1. Nel sistema SAP, crea un programma eseguibile nel tuo nome spazio dei nomi personalizzato (ad es. Z o Y) utilizzando la transazione SE38.

    1. In SAP GUI, inserisci il codice transazione SE38.

    2. Nel campo Programma, inserisci un nome per il programma, ad esempio ZDEMO_CALL_AGENT.

    3. Fai clic su Crea.

    4. Specifica gli attributi del programma:

      1. Nel campo Title (Titolo), inserisci il titolo del programma, ad esempio Call Vertex AI Agent.

      2. Nel campo Tipo, scegli Executable Program.

      3. Fai clic su Salva.

    5. Salva il programma come Oggetto locale.

    6. Nell'editor ABAP, aggiungi il seguente codice:

        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.
      
      

      Sostituisci quanto segue:

  2. Esegui l'applicazione in SE38.

  3. Verifica che i risultati siano coerenti con quelli osservati quando l'agente è stato eseguito localmente.

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

Passaggi successivi