Este documento descreve como usar a chamada de função SAP com a Gemini, usando o SDK da Vertex AI para ABAP.
É possível definir funções personalizadas e fornecê-las aos modelos Gemini usando o recurso Chamada de função. Os modelos não invocam diretamente as funções personalizadas, mas geram uma saída de dados estruturados que especifica o nome da função e os argumentos sugeridos. Essa saída permite que você escreva apps que usam a saída estruturada e chamam APIs externas. A saída da API resultante pode ser incorporada a outro comando do modelo, permitindo respostas de consulta mais abrangentes.
O SDK da Vertex AI para ABAP simplifica a chamada de função para desenvolvedores ABAP, oferecendo oportunidades para invocar a lógica personalizada escrita em módulos de função SAP:
- Transmitir nomes de módulo de função SAP ao modelo como declarações de função, descrevendo o nome da função, a finalidade dela e os parâmetros relacionados.
- Definir a invocação automática do módulo de função SAP implicitamente ao invocar o modelo.
Confira a seguir a jornada típica de um desenvolvedor ABAP para invocar a chamada de função do SAP:
- O usuário fornece uma solicitação de entrada.
- O SDK transmite o comando de entrada e as declarações de função para o modelo.
- O modelo analisa o comando e as funções declaradas para derivar a função a ser chamada e sugere os valores de parâmetro para chamar a função.
- Se a invocação automática estiver definida, o SDK vai chamar o módulo de função SAP.
- Em seguida, o SDK invoca o modelo com a saída da função chamada.
- O modelo responde com uma resposta confiável para a solicitação final enriquecida com a saída da função chamada.
- O SDK retorna a resposta ao usuário.
Se você optar por não invocar automaticamente os módulos de função do SAP, o SDK vai permitir que você use o recurso de chamada de função sem nenhuma invocação de módulo de função do SAP. Nesse caso, siga o fluxo de trabalho típico de chamada de função para usar ferramentas externas, como APIs e funções.
Antes de começar
Antes de usar o SDK da Vertex AI para ABAP para chamar funções SAP com o Gemini, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:
- Ative a API Vertex AI no seu projeto do Google Cloud .
- Instalou o SDK da Vertex AI para ABAP no seu ambiente SAP.
- Configure a autenticação para acessar a API Vertex AI.
- Configurou os parâmetros de geração de modelos.
Enriquecer o contexto do modelo de IA do Gemini com dados da SAP
Esta seção explica como enriquecer o contexto do modelo de IA Gemini com dados da SAP usando o SDK da Vertex AI para ABAP.
Criar a classe de invocação multimodal do Gemini
Para invocar a chamada de função no SAP, use a classe /GOOG/CL_GENERATIVE_MODEL
.
Você instancia a classe
transmitindo a chave de modelo configurada nos parâmetros de geração de modelos.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
Substitua MODEL_KEY
pelo nome da chave do modelo, que é configurado
nos parâmetros de geração de modelo.
Criar um módulo de função SAP
Para criar um módulo de função do SAP para invocação automática pelo SDK, siga o esquema fornecido:
Categoria | Nome do parâmetro | Tipo associado |
---|---|---|
Importando | IT_FUNCTION_PARAMETERS |
/GOOG/T_FUNCTION_PARAMETERS |
Exportando | EV_FUNCTION_RESPONSE |
STRING |
Alterando | CV_PROMPT |
STRING |
Exceções | /GOOG/CX_SDK |
Exception Class |
Com base nos parâmetros de importação, escreva sua lógica personalizada no módulo de função,
que pode buscar dados do SAP por meio de consultas SELECT
ou chamar uma API ou um módulo externo
para receber as informações ausentes.
Defina o parâmetro de exportação EV_FUNCTION_RESPONSE
com as informações
para feedback ao contexto do LLM. Também é possível mudar ou modificar o texto do comando
em CV_PROMPT
com base na lógica personalizada e no requisito de negócios para
instruir o LLM com base em diferentes cenários de negócios.
Adicionar declaração de função
Para adicionar uma declaração de função ao contexto de LLM, use o
método ADD_FUNCTION_DECLARATION
. Chame o método ADD_FUNCTION_DECLARATION
sempre que precisar adicionar uma função ao contexto.
DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
type = 'PARAMETER_TYPE'
description = 'PARAMETER_DESCRIPTION'
is_required = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
lo_model->add_function_declaration( iv_name = 'FUNCTION_MODULE_NAME'
iv_description = 'FUNCTION_MODULE_DESCRIPTION'
it_parameters = lt_parameters ).
Substitua:
PARAMETER_NAME
: nome do parâmetro.PARAMETER_TYPE
: o tipo de dados do parâmetro, comostring
,integer
ouboolean
.PARAMETER_DESCRIPTION
: uma explicação clara da finalidade e do formato esperado do parâmetro.PARAMETER_IS_REQUIRED
: se esse parâmetro for obrigatório para a função funcionar, defina o valor comoABAP_TRUE
.FUNCTION_MODULE_NAME
: nome do módulo de função da SAP.FUNCTION_MODULE_DESCRIPTION
: descrição do módulo de função do SAP.
Definir a invocação automática do módulo de função SAP
Para definir a invocação automática da
função SAP selecionada pelo modelo, use o
método SET_AUTO_INVOKE_SAP_FUNCTION
.
Se ABAP_TRUE
for transmitido no parâmetro de importação IV_AUTO_INVOKE
, o módulo de função será invocado pelo SDK e a resposta dele será
incluída com o contexto do LLM para gerar a resposta final.
Defina o módulo de função seguindo o esquema descrito na seção Criar módulo de função do SAP.
lo_model->set_auto_invoke_sap_function( abap_true ).
Gerar conteúdo com chamadas de função
Para transmitir o texto do comando ao
modelo Gemini, use o método GENERATE_CONTENT
.
Para receber a resposta gerada pelo Gemini com o contexto adicional adicionado do módulo de função SAP por meio de chamadas de função, use o método GET_TEXT
.
DATA(lv_response) = lo_model->generate_content( iv_prompt_text ='PROMPT'
)->get_text( ).
Substitua PROMPT
pelo comando de texto.
Exemplo de código
O exemplo de código abaixo ilustra como usar a chamada de função SAP para receber uma resposta final do modelo.
DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
type = 'PARAMETER_TYPE'
description = 'PARAMETER_DESCRIPTION'
is_required = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
DATA(lv_response) = lo_model->add_function_declaration(
iv_name = 'FUNCTION_MODULE_NAME'
iv_description = 'FUNCTION_MODULE_DESCRIPTION'
it_parameters = lt_parameters
)->set_auto_invoke_sap_function( abap_true
)->generate_content( iv_prompt_text ='PROMPT'
)->get_text( ).
IF lv_response IS NOT INITIAL.
cl_demo_output=>display( lv_response ).
ENDIF.
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
Substitua:
MODEL_KEY
: o nome da chave do modelo, que é configurado nos parâmetros de geração de modelos.PARAMETER_NAME
: nome do parâmetro.PARAMETER_TYPE
: o tipo de dados do parâmetro, comostring
,integer
ouboolean
.PARAMETER_DESCRIPTION
: uma explicação clara da finalidade e do formato esperado do parâmetro.PARAMETER_IS_REQUIRED
: se esse parâmetro for obrigatório para a função funcionar, defina o valor comoABAP_TRUE
.FUNCTION_MODULE_NAME
: nome do módulo de função da SAP.FUNCTION_MODULE_DESCRIPTION
: descrição do módulo de função do SAP.PROMPT
: o texto do comando.
A seguir
- Saiba mais sobre o desenvolvimento de aplicativos com a edição local ou na nuvem do ABAP SDK for Google Cloud.
- Saiba mais sobre o desenvolvimento de aplicativos com a edição SAP BTP do SDK ABAP for Google Cloud.
- Faça suas perguntas e converse sobre o SDK da Vertex AI para ABAP com a comunidade em Fóruns do Cloud.