Prototipado rápido con Gemini

La API de Generative Language de Google habilita el prototipado sin problemas con los modelos de Gemini. Te permite probar y explorar las capacidades de los modelos de Gemini sin necesidad de configurar una infraestructura compleja ni administrar la implementación de modelos. La herramienta de prototipado basada en el navegador de Google, Google AI Studio,musa la API de Generative Language para habilitar el prototipado basado en el navegador con modelos generativos.

Con el SDK de Vertex AI para ABAP, puedes usar la API de lenguaje generativo (API de Gemini) para comenzar tu recorrido de prototipado, directamente desde tu entorno de ABAP. Necesitas una clave de API generada desde Google AI Studio para acceder a los modelos de Gemini. Debes generar esta clave de API solo una vez.

Genera una clave de API

La clave de API que generas desde Google AI Studio proporciona una forma conveniente de autenticarse en la API de Gemini.

Para generar una clave de API, sigue estos pasos:

  1. En Google AI Studio, abre la página Claves de API.

    Obtén una clave de API

  2. Haz clic en Crear clave de API.

  3. Si se propaga, lee y acepta el aviso legal y, luego, haz clic en Continuar.

  4. Si se propaga, lee y confirma el recordatorio de configuración de seguridad.

  5. En el cuadro de diálogo Crear clave de API, selecciona una de las siguientes opciones según corresponda:

    • Crea una clave de API en un proyecto nuevo
    • Crea una clave de API en un proyecto existente
  6. Copia tu string de clave y mantenla segura. Necesitas esta clave de API para configurar la autenticación en la API de Gemini.

  7. Copia el número de proyecto del proyecto de Google Cloud en el que se genera la clave de API. La necesitarás en un paso posterior.

Configura la autenticación

Para autenticarte en la API de Gemini con una clave de API, usa uno de los siguientes métodos:

Autentícate con una clave de API almacenada en SAP SSF

Para mantener la seguridad de tu clave de API, puedes almacenar la clave de API generada en SAP SSF y configurar una clave de cliente con la clase de autenticación de SSF. Puedes usar esta clave de cliente para acceder a la API de Gemini. Para obtener más información, consulte:

Autentícate con una clave de API a través de una clase de autenticación personalizada

Como alternativa, puedes crear una clase de autenticación personalizada para conservar tu clave de API y configurar una clave de cliente con la clase de autenticación personalizada.

Edición local o cualquier edición en la nube

  1. En tu sistema SAP, crea una clase Z implementando la interfaz /GOOG/IF_AUTH que se incluye con el SDK de ABAP para Google Cloud:

    1. En la GUI de SAP, ejecuta el código de transacción SE24.
    2. En el campo Tipo de objeto, escribe un nombre, como Z_TEST_GEMINI_API, y, luego, haz clic en Crear.
    3. Asegúrate de que el Tipo de objeto sea Clase y, luego, haz clic en Aceptar.
    4. En el campo Descripción, proporciona una descripción de la clase, como Class for authentication to Google AI Studio, y, luego, guárdala como un objeto local o en una solicitud de transporte.
    5. Abre la pestaña Interfaces, agrega la interfaz /GOOG/IF_AUTH y, luego, presiona Intro.
    6. Abre la pestaña Métodos. Los métodos de la interfaz /GOOG/IF_AUTH se implementan automáticamente en la clase Z.
    7. Haz doble clic en el método /GOOG/IF_AUTH~GET_ACCESS_TOKEN.
    8. En el método /GOOG/IF_AUTH~GET_ACCESS_TOKEN, agrega el siguiente código:

      ev_auth_type = /goog/if_auth=>c_auth_type_apik_ssf.
      cv_token = 'API_KEY'.
      GET TIME STAMP FIELD ev_logtime.
      

      Reemplaza API_KEY por la clave de API que generaste en Google AI Studio.

    9. Activa tu clase Z.

  2. En el sistema SAP, crea una configuración de clave de cliente:

    1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

      Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

    2. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.

    3. Haz clic en Entradas nuevas.

    4. Ingresa los valores para los siguientes campos:

    Campo Descripción
    Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente, como TEST_GEMINI_API.
    Nombre de la cuenta de servicio de Google Cloud Deja este campo en blanco.
    Permiso de Google Cloud Deja este campo en blanco.
    Identificador de proyecto de Google Cloud Especifica el número de proyecto del proyecto de Google Cloud en el que se almacena la clave de API.
    Nombre del comando Deja este campo en blanco.
    Clase de autorización Especifica la clase Z que creaste en el paso anterior, como Z_TEST_GEMINI_API.
    Almacenamiento en caché de tokens

    Deja este campo en blanco.

    Segundos de actualización de los tokens Deja este campo en blanco.
    Parámetro de autorización 1 Deja este campo en blanco.
    Parámetro de autorización 2 Deja este campo en blanco.
    1. Guarda la entrada nueva.
  3. Anota la clave del cliente. Usas esta clave de cliente para la autenticación.

Edición SAP BTP

  1. En tu entorno de SAP BTP, ABAP, crea una clase nueva heredando la clase /GOOG/CL_AUTH_BASE que se envía con el SDK de ABAP para Google Cloud:

    1. En la plataforma Eclipse, haz clic con el botón derecho en el paquete en el que deseas crear una clase y, luego, haz clic en Nueva > Clase ABAP.
    2. En el campo Nombre, ingresa ZCL_TEST_GEMINI_API.
    3. En el campo Descripción, ingresa Authentication Class for testing Gemini API.
    4. En el campo Superclase, ingresa /GOOG/CL_AUTH_BASE.
    5. Haz clic en Siguiente.
    6. Selecciona una solicitud de transporte o crea una nueva.
    7. Haz clic en Finish (Finalizar).
    8. En el editor, reemplaza el código existente por el siguiente:

      CLASS zcl_test_gemini_api DEFINITION
        PUBLIC
        INHERITING FROM /goog/cl_auth_base FINAL
        CREATE PUBLIC.
        PUBLIC SECTION.
          CONSTANTS: BEGIN OF c_com_scn_sdk,
                       wif     TYPE /goog/comm_scenario VALUE '/GOOG/COM_SDK_WIF',
                       apik_sm TYPE /goog/comm_scenario VALUE '/GOOG/COM_SDK_APIKSM',
                       END OF c_com_scn_sdk.
          METHODS get_access_token REDEFINITION.
       PROTECTED SECTION.
       PRIVATE SECTION.
      ENDCLASS.
      CLASS zcl_test_gemini_api IMPLEMENTATION.
        METHOD get_access_token.
          ev_auth_type = CONV #( apikey_sm ).
          ev_token = API_KEY.
        ENDMETHOD.
      ENDCLASS.
      

      Reemplaza API_KEY por la clave de API que generaste en Google AI Studio.

    9. Activa tu clase Z.

    10. Ve a las propiedades de esta clase, ve a la pestaña Estado de la API y, luego, lanza la API con el estado del contrato C1.

      Para obtener más información sobre el estado de la API, consulta Cómo lanzar objetos de desarrollo.

  2. Accede al SAP Fiori launchpad del sistema BTP ABAP en el que está instalado el SDK de ABAP para Google Cloud.

  3. Accede a la app de SDK de Google: configuración principal y, luego, sigue estos pasos:

    1. Haz clic en Crear.
    2. En el diálogo Create new entry, ingresa valores para los siguientes campos:

      Campo Descripción
      Nombre de la clave de Google Cloud Especifica un nombre de la configuración de la clave de cliente, como GEMINI_QUICK_TEST.
      Nombre de la cuenta de servicio de Google Cloud Deja este campo en blanco.
      Permiso de Google Cloud Deja este campo en blanco.
      Identificador de proyecto de Google Cloud Especifica el ID del proyecto de Google Cloud en el que creaste la clave de API.
      Número de proyecto de Google Cloud Especifica el número del proyecto de Google Cloud en el que creaste la clave de API.
      Tipo de autenticación Selecciona Z.
      Clase de autenticación Selecciona la clase ZCL_TEST_GEMINI_API que creaste en un paso anterior.
    3. Guarda la entrada nueva.

  4. Anota la clave del cliente. Usas esta clave de cliente para la autenticación.

Ejecuta el código de muestra

Edición local o cualquier edición en la nube

Puedes explorar las capacidades de la API de Gemini con la demo de AI Studio que se incluye en el SDK de Vertex AI para ABAP.

Para ejecutar la demostración de AI Studio, sigue estos pasos:

  1. En la GUI de SAP, ejecuta el código de transacción /GOOG/SDK_IMG.

    Como alternativa, ejecuta el código de transacción SPRO y, luego, haz clic en IMG de referencia de SAP.

  2. Go to SDK de ABAP para Google Cloud > Demostraciones.

  3. Abre SDK de Vertex AI: Demostración: Creación de prototipos con la API de lenguaje generativo.

  4. En el campo Clave de cliente, ingresa la clave de cliente que creaste en la sección Configura la autenticación.

  5. En el campo ID de modelo, ingresa el ID del modelo de LLM que deseas usar, como gemini-1.5-flash. Para obtener información sobre los modelos disponibles, consulta Variantes de modelos.

  6. De manera opcional, proporciona los siguientes parámetros de generación según corresponda:

    • Cantidad máxima de tokens de salida
    • Tipo de MIME de la respuesta
    • Temperatura
    • TopK
    • TopP

    Para obtener información sobre estos parámetros de generación de modelos, consulta Experimenta con los valores de los parámetros.

  7. En el campo Enter system instructions, proporciona una instrucción del sistema.

  8. En el campo Ingresar instrucción, proporciona la instrucción de entrada.

  9. Ejecuta el programa. El área Respuesta del LLM muestra la salida generada.

Edición SAP BTP

Para explorar las capacidades de la API de Gemini, ejecuta el siguiente código de muestra:

  1. En la plataforma Eclipse, haz clic con el botón derecho en el paquete en el que deseas crear una clase y, luego, haz clic en Nueva > Clase ABAP.

  2. En el campo Nombre, ingresa ZCL_INVOKE_LLM.

  3. En el campo Descripción, ingresa Sample class for testing Gemini API.

  4. Haz clic en Siguiente.

  5. Selecciona una solicitud de transporte o crea una nueva.

  6. Haz clic en Finish (Finalizar).

  7. En el editor, reemplaza el código existente por el siguiente:

    CLASS zcl_invoke_llm DEFINITION
     PUBLIC FINAL
     CREATE PUBLIC.
     PUBLIC SECTION.
       INTERFACES if_oo_adt_classrun.
    ENDCLASS.
    CLASS zcl_invoke_llm IMPLEMENTATION.
     METHOD if_oo_adt_classrun~main.
       DATA lv_sys_instruction TYPE string.
       DATA lv_client_key      TYPE /goog/keyname.
       DATA lv_model_id        TYPE string.
       DATA lv_max_tokens      TYPE int4.
       DATA lv_resp_mime_type  TYPE string.
       DATA lv_prompt          TYPE string.
       DATA lv_temperature     TYPE /goog/num_float.
       DATA lv_top_k           TYPE int4.
       DATA lv_top_p           TYPE /goog/num_float.
       DATA ls_input           TYPE /goog/cl_generativelang_v1beta=>ty_045.
       DATA ls_output          TYPE /goog/cl_generativelang_v1beta=>ty_046.
       DATA ls_part            TYPE /goog/cl_generativelang_v1beta=>ty_068.
       DATA lt_parts           TYPE /goog/cl_generativelang_v1beta=>ty_t_068.
       DATA ls_content         TYPE /goog/cl_generativelang_v1beta=>ty_018.
       DATA lv_msg             TYPE string.
       DATA ls_raw             TYPE string.
       DATA lv_err_msg         TYPE string.
       DATA lo_cx_sdk          TYPE REF TO /goog/cx_sdk.
    
       " TODO Developer: Set values for Mandatory Fields
       lv_model_id = 'gemini-1.5-flash'.  " You can also change the Model ID of your choosing
       lv_client_key = 'GEMINI_QUICK_TEST'.    " Client key configured
    
       " TODO Developer: Set values for Optional Fields, if required
       " lv_temperature =
       " lv_top_k =
       " lv_top_p =
       " lv_max_tokens =
    
       " TODO Developer: (Optional) Set the System Instruction
        lv_sys_instruction  = 'You are an Italian Chef in a 5 Star Restaurant'.
    
       " TODO Developer: (Mandatory) Set the Prompt
        lv_prompt = 'Give me a recipe to make Margarita Pizza'.
       IF lv_temperature IS NOT INITIAL.
         ls_input-generation_config-temperature = lv_temperature.
       ENDIF.
       IF lv_top_k IS NOT INITIAL.
         ls_input-generation_config-top_k = lv_top_k.
       ENDIF.
       IF lv_top_p IS NOT INITIAL.
         ls_input-generation_config-top_p = lv_top_p.
       ENDIF.
       IF lv_max_tokens IS NOT INITIAL.
         ls_input-generation_config-max_output_tokens = lv_max_tokens.
       ENDIF.
       IF lv_sys_instruction IS NOT INITIAL.
         ls_input-system_instruction-role = 'system'.
         ls_part-text = lv_sys_instruction.
         APPEND ls_part TO ls_input-system_instruction-parts.
         CLEAR ls_part.
       ENDIF.
       ls_content-role = 'user'.
       IF lv_prompt IS NOT INITIAL.
         ls_part-text = lv_prompt.
         APPEND ls_part TO ls_content-parts.
         CLEAR ls_part.
       ENDIF.
       APPEND ls_content TO ls_input-contents.
       CLEAR ls_content.
       TRY.
           DATA(lo_llm_invoker) = NEW /goog/cl_generativelang_v1beta( iv_key_name = lv_client_key ).
         CATCH /goog/cx_sdk INTO lo_cx_sdk.
           lv_err_msg = lo_cx_sdk->get_text( ).
    out->write( |Exception occurred, reason: { lv_err_msg }| ).
       ENDTRY.
       TRY.
           lo_llm_invoker->generate_content_models( EXPORTING iv_p_models_id = lv_model_id
                                                              is_input       = ls_input
                                                    IMPORTING es_raw         = ls_raw
                                                              es_output      = ls_output
                                                              ev_ret_code    = DATA(lv_ret_code)
                                                              ev_err_text    = DATA(lv_err_text)
                                                              es_err_resp    = DATA(ls_err_resp) ).
         CATCH /goog/cx_sdk INTO lo_cx_sdk.
           lv_err_msg = lo_cx_sdk->get_text( ).
           out->write( |Exception occurred, reason: { lv_err_msg }| ).
           RETURN.
       ENDTRY.
       IF lo_llm_invoker->is_success( lv_ret_code ) = abap_true.
         ASSIGN ls_output-candidates[ 1 ] TO FIELD-SYMBOL(<ls_candidate>).
         IF sy-subrc = 0.
           lt_parts = <ls_candidate>-content-parts.
           ASSIGN lt_parts[ 1 ] TO FIELD-SYMBOL(<ls_part>).
           IF sy-subrc = 0.
             DATA(lv_response) = <ls_part>-text.
             out->write( lv_response ).
           ELSE.
             out->write( |Model stopped generating response due to finish reason: { <ls_candidate>-finish_reason }| ).
             out->write( |Read more about finish reason in the below link:| ).
             out->write( |https://cloud.google.com/vertex-ai/docs/reference/rest/v1/GenerateContentResponse#FinishReason| ).
           ENDIF.
         ENDIF.
       ELSE.
         out->write( |Error occurred, reason: { lv_ret_code }:{ lv_err_text }| ).
       ENDIF.
     ENDMETHOD.
    ENDCLASS.
    
  8. Activa tu clase.

  9. Ejecuta el código ABAP.

Crea prototipos de casos de uso de IA con ABAP

Puedes compilar prototipos de aplicaciones de SAP con las clases /GOOG/CL_GENERATIVELANGUAGE_V1 y /GOOG/CL_GENERATIVELANG_V1BETA que se envían con el SDK. Puedes invocar estas clasas desde tu entorno de ABAP con la clave de cliente que creaste en la sección Configurar la autenticación.

¿Qué sigue?