Prototipagem rápida com o Gemini

A API Generativa Language do Google permite criar protótipos sem problemas usando os modelos Gemini. Com ela, você testa e explora os recursos dos modelos Gemini sem precisar configurar infraestruturas complexas ou gerenciar a implantação de modelos. O Google AI Studio, ferramenta de prototipagem baseada em navegador do Google, usa a API Generative Language para ativar a prototipagem baseada em navegador com modelos generativos.

Com o SDK da Vertex AI para ABAP, você pode usar a API Generative Language, a API Gemini, para iniciar sua jornada de prototipagem diretamente no seu ambiente ABAP. Você precisa de uma chave de API gerada no Google AI Studio para acessar os modelos do Gemini. Só é necessário gerar essa chave de API uma vez.

Gerar uma chave de API

A chave de API gerada pelo Google AI Studio é uma maneira conveniente de autenticar a API Gemini.

Para gerar uma chave de API, siga estas etapas:

  1. No Google AI Studio, abra a página Chaves de API.

    consiga uma chave de API

  2. Clique em Criar chave de API.

  3. Se ele for preenchido, leia e confirme o aviso legal e clique em Continuar.

  4. Se estiver preenchido, leia e confirme o lembrete de configuração de segurança.

  5. Na caixa de diálogo Criar chave de API, selecione uma das seguintes opções, conforme apropriado:

    • Criar uma chave de API em um novo projeto
    • Criar chave de API em um projeto atual
  6. Copie a string da chave e guarde-a com segurança. Você precisa dessa chave de API para configurar a autenticação da API Gemini.

  7. Copie o número do projeto do Google Cloud em que a chave de API é gerada. Você vai precisar dele em uma etapa posterior.

Configurar a autenticação

Para autenticar na API Gemini usando uma chave de API, use um dos seguintes métodos:

Autenticar usando uma chave de API armazenada no SAP SSF

Para manter a chave de API segura, armazene a chave de API gerada no SAP SSF e configure uma chave do cliente com a classe de autenticação do SSF. Você pode usar essa chave de cliente para acessar a API Gemini. Veja mais informações em:

Autenticar usando uma chave de API em uma classe de autenticação personalizada

Como alternativa, crie uma classe de autenticação personalizada para manter a chave de API e configure uma chave de cliente com a classe de autenticação personalizada.

No local ou qualquer edição na nuvem

  1. No seu sistema SAP, crie uma classe Z implementando a interface /GOOG/IF_AUTH que acompanha o SDK do ABAP for Google Cloud:

    1. Na GUI do SAP, execute o código de transação SE24.
    2. No campo Tipo de objeto, digite um nome como Z_TEST_GEMINI_API e clique em Criar.
    3. Verifique se o Tipo de objeto é Classe e clique em OK.
    4. No campo Descrição, forneça uma descrição da classe, como Class for authentication to Google AI Studio, e salve a classe como um Objeto local ou em uma Solicitação de transporte.
    5. Abra a guia Interfaces, adicione a interface /GOOG/IF_AUTH e pressione Enter.
    6. Abra a guia Métodos. Os métodos da interface /GOOG/IF_AUTH são implementados automaticamente na classe Z.
    7. Clique duas vezes no método /GOOG/IF_AUTH~GET_ACCESS_TOKEN.
    8. No método /GOOG/IF_AUTH~GET_ACCESS_TOKEN, adicione o seguinte código:

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

      Substitua API_KEY pela chave de API gerada no Google AI Studio.

    9. Ative a classe Z.

  2. No sistema SAP, crie uma configuração de chave de cliente:

    1. Na GUI do SAP, execute o código de transação /GOOG/SDK_IMG.

      Como alternativa, execute o código da transação SPRO e clique em IMG de referência do SAP.

    2. Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave do cliente.

    3. Clique em Novas entradas.

    4. Insira valores nos campos a seguir:

    Campo Descrição
    Nome da chave do Google Cloud Especifique um nome da configuração da chave do cliente, como TEST_GEMINI_API.
    Nome da conta de serviço do Google Cloud Deixe esse campo em branco.
    Escopo do Google Cloud Deixe esse campo em branco.
    Identificador de projeto do Google Cloud Especifique o número do projeto do Google Cloud em que a chave da API está armazenada.
    Nome do comando Deixe esse campo em branco.
    Classe de autorização Especifique a classe Z que você criou na etapa anterior, como Z_TEST_GEMINI_API.
    Armazenamento de tokens em cache

    Deixe esse campo em branco.

    Token de atualização em segundos Deixe esse campo em branco.
    Parâmetro de autorização 1 Deixe esse campo em branco.
    Parâmetro de autorização 2 Deixe esse campo em branco.
    1. Salve a nova entrada.
  3. Anote a chave de cliente. Você usará essa chave de cliente para autenticação.

Edição do SAP BTP

  1. No ambiente SAP BTP, ABAP, crie uma nova classe herdando a classe /GOOG/CL_AUTH_BASE que acompanha o SDK ABAP for Google Cloud:

    1. Na plataforma Eclipse, clique com o botão direito do mouse no pacote em que você quer criar uma classe e clique em New > ABAP Class.
    2. No campo Nome, use ZCL_TEST_GEMINI_API.
    3. No campo Descrição, insira Authentication Class for testing Gemini API.
    4. No campo Superclass, digite /GOOG/CL_AUTH_BASE.
    5. Clique em Próxima.
    6. Selecione uma solicitação de transporte ou crie uma.
    7. Clique em Concluir.
    8. No editor, substitua o código existente pelo seguinte:

      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.
      

      Substitua API_KEY pela chave de API gerada no Google AI Studio.

    9. Ative a classe Z.

    10. Acesse as propriedades dessa classe, a guia Estado da API e libere a API com o estado do contrato C1.

      Para mais informações sobre o estado da API, consulte Como liberar objetos de desenvolvimento.

  2. Acesse a plataforma de lançamento do SAP Fiori do sistema BTP ABAP em que o ABAP SDK for Google Cloud está instalado.

  3. Acesse o app SDK do Google: configuração principal e siga estas etapas:

    1. Clique em Criar.
    2. Na caixa de diálogo Criar nova entrada, insira valores para os seguintes campos:

      Campo Descrição
      Nome da chave do Google Cloud Especifique um nome da configuração da chave do cliente, como GEMINI_QUICK_TEST.
      Nome da conta de serviço do Google Cloud Deixe esse campo em branco.
      Escopo do Google Cloud Deixe esse campo em branco.
      Identificador de projeto do Google Cloud Especifique o ID do projeto do Google Cloud em que você criou a chave de API.
      Número do projeto do Google Cloud Especifique o número do projeto do Google Cloud em que você criou a chave de API.
      Tipo de autenticação Selecione Z.
      Classe de autenticação Selecione a classe ZCL_TEST_GEMINI_API que você criou em uma etapa anterior.
    3. Salve a nova entrada.

  4. Anote a chave de cliente. Você usará essa chave de cliente para autenticação.

Executar o exemplo de código

No local ou qualquer edição na nuvem

É possível explorar os recursos da API Gemini usando a demonstração do IA Studio enviada com o SDK da Vertex AI para ABAP.

Para executar a demonstração do AI Studio, siga estas etapas:

  1. Na GUI do SAP, execute o código de transação /GOOG/SDK_IMG.

    Como alternativa, execute o código da transação SPRO e clique em IMG de referência do SAP.

  2. Acesse ABAP SDK for Google Cloud > Demonstrações.

  3. Abra o SDK da Vertex AI: demonstração: prototipagem com a API Generative Language.

  4. No campo Chave do cliente, insira a chave do cliente que você criou na seção Configurar autenticação.

  5. No campo ID do modelo, insira o ID do modelo LLM que você quer usar, como gemini-1.5-flash. Para mais informações sobre os modelos disponíveis, consulte Variantes de modelo.

  6. Opcionalmente, forneça os seguintes parâmetros de geração, conforme apropriado:

    • Máximo de tokens de saída
    • Tipo MIME da resposta
    • Temperatura
    • TopK
    • TopP

    Para informações sobre esses parâmetros de geração de modelos, consulte Testar valores de parâmetro.

  7. No campo Inserir instruções do sistema, forneça uma instrução do sistema.

  8. No campo Inserir comando, informe o comando de entrada.

  9. Execute o programa. A área Resposta do LLM mostrará a saída gerada.

Edição do SAP BTP

Para conferir os recursos da API Gemini, execute o seguinte código de exemplo:

  1. Na plataforma Eclipse, clique com o botão direito do mouse no pacote em que você quer criar uma classe e clique em New > ABAP Class.

  2. No campo Nome, use ZCL_INVOKE_LLM.

  3. No campo Descrição, use Sample class for testing Gemini API.

  4. Clique em Próxima.

  5. Selecione ou crie uma solicitação de transporte.

  6. Clique em Concluir.

  7. No editor, substitua o código existente pelo seguinte:

    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. Ative sua turma.

  9. Execute o código ABAP.

Prototipar casos de uso de IA usando ABAP

É possível criar protótipos de aplicativos SAP usando as classes /GOOG/CL_GENERATIVELANGUAGE_V1 e /GOOG/CL_GENERATIVELANG_V1BETA enviadas com o SDK. É possível invocar essas classes no ambiente ABAP usando a chave de cliente que você criou na seção Configurar autenticação.

A seguir