Appeler des agents Vertex AI à partir de l'environnement ABAP

Ce guide de démarrage rapide vous explique comment appeler des agents Vertex AI, créés avec le kit de développement d'agents (ADK), depuis votre environnement ABAP.

Ce guide explique comment appeler un agent d'IA à l'aide de l'édition sur site ou de toute édition cloud du SDK ABAP pour Google Cloud. Il ne couvre pas les procédures de création ni de déploiement. Vous créez un agent d'IA à l'aide du kit de développement d'agent (ADK), un framework open source permettant de concevoir des agents, basé sur le même framework que Google Agentspace et Customer Engagement Suite avec l'IA de Google. Vous déployez ensuite votre agent dans Vertex AI Agent Engine, un environnement d'exécution entièrement géré dans Vertex AI qui vous aide à déployer vos agents personnalisés en production avec des tests, des versions et une fiabilité intégrés à l'échelle mondiale et sécurisée.

Avant de commencer

Avant d'exécuter ce guide de démarrage rapide, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes :

Déployer l'agent dans Vertex AI Agent Engine

Créez, testez et déployez votre agent dans Vertex AI Agent Engine. Pour ce guide de démarrage rapide, vous pouvez créer un agent météo et heure et le déployer dans Vertex AI Agent Engine.

Pour savoir comment créer, tester et déployer votre agent, consultez les pages suivantes:

Assurez-vous d'avoir accordé les autorisations requises à l'agent pour qu'il puisse utiliser les sessions gérées.

Après le déploiement, vous obtenez un identifiant de ressource semblable à l'exemple suivant, qui permet d'appeler l'agent dans votre programme ABAP:

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

À partir de l'identifiant de la ressource, notez le REASONING_ENGINE_ID, par exemple 6384464913570601984. Vous en aurez besoin plus tard.

Créer un programme pour appeler Vertex AI Agents à partir de l'environnement ABAP

  1. Dans le système SAP, créez un programme exécutable dans votre espace de noms personnalisé (par exemple, Z ou Y) à l'aide de la transaction SE38.

    1. Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction SE38.

    2. Dans le champ Program (Programme), saisissez un nom pour votre programme, par exemple ZDEMO_CALL_AGENT.

    3. Cliquez sur Créer.

    4. Spécifiez les attributs du programme :

      1. Dans le champ Titre, saisissez un titre de votre programme, par exemple Call Vertex AI Agent.

      2. Dans le champ Type, sélectionnez Executable Program.

      3. Cliquez sur Enregistrer.

    5. Enregistrez le programme en tant qu'objet local.

    6. Dans l'éditeur ABAP, ajoutez le code suivant :

        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.
      
      

      Remplacez les éléments suivants :

      • DEMO_AIPLATFORM: clé client pour l'authentification à Google Cloud.
      • LOCATION_ID: emplacement où l'agent est déployé. Vous spécifiez l'emplacement lorsque vous initialisez l'agent. Pour en savoir plus, consultez la section Initialiser l'agent.
      • REASONING_ENGINE_ID: identifiant de la ressource de l'agent que vous avez indiqué dans la section Déployer l'agent dans le moteur d'agents Vertex AI.
  2. Exécutez votre application dans SE38.

  3. Vérifiez que les résultats sont cohérents avec ceux observés lorsque l'agent a été exécuté localement.

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

Étape suivante