Usa llamadas a funciones de SAP con Gemini

En este documento, se describe cómo usar las llamadas a funciones de SAP con Gemini con el SDK de Vertex AI para ABAP.

Puedes definir funciones personalizadas y proporcionarlas a los modelos de Gemini con la función Llamada a función. Los modelos no invocan directamente las funciones personalizadas, sino que generan un resultado de datos estructurados que especifica el nombre de la función y los argumentos sugeridos. Este resultado te permite escribir aplicaciones que tomen el resultado estructurado y llamen a APIs externas. El resultado de la API resultante se puede incorporar a otra instrucción del modelo, lo que permite respuestas de consulta más completas.

El SDK de Vertex AI para ABAP simplifica las llamadas a funciones para los desarrolladores de ABAP, ya que les brinda oportunidades para invocar lógica personalizada escrita en módulos de funciones de SAP de las siguientes maneras:

  • Pasar nombres de módulos de funciones de SAP al modelo como declaraciones de funciones, que describen el nombre de la función, su propósito y los parámetros relacionados.
  • Establecer la invocación automática del módulo de funciones de SAP de forma implícita mientras se invoca el modelo.

El siguiente es un recorrido típico de un desarrollador de ABAP para invocar llamadas a funciones de SAP:

  1. El usuario proporciona una instrucción de entrada.
  2. El SDK pasa la instrucción de entrada y las declaraciones de funciones al modelo.
  3. El modelo revisa la instrucción y las funciones declaradas para derivar la función a la que llamar y sugiere los valores de los parámetros para llamar a la función.
  4. Si se establece la invocación automática, el SDK llama al módulo de funciones de SAP.
  5. Luego, el SDK invoca el modelo con el resultado de la función llamada.
  6. El modelo responde con una respuesta confiable para la instrucción final enriquecida con el resultado de la función llamada.
  7. El SDK muestra la respuesta al usuario.

Llamadas a funciones de SAP con Gemini

Si decides no invocar automáticamente los módulos de funciones de SAP, el SDK te permite usar la función de llamada a función sin ninguna invocación de módulo de función de SAP. En este caso, puedes seguir el flujo de trabajo típico de llamadas a función para usar herramientas externas, como APIs y funciones.

Antes de comenzar

Antes de usar el SDK de Vertex AI para ABAP para las llamadas a funciones de SAP con Gemini, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:

Enriquece el contexto del modelo de IA de Gemini con datos de SAP

En esta sección, se explica cómo puedes enriquecer el contexto del modelo de IA de Gemini con datos de SAP mediante el SDK de Vertex AI para ABAP.

Crea una instancia de la clase de invocador multimodal de Gemini

Para invocar llamadas a funciones en SAP, usa la clase /GOOG/CL_GENERATIVE_MODEL. Para crear una instancia de la clase, debes pasar la clave de modelo configurada en los parámetros de generación del modelo.

DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).

Reemplaza MODEL_KEY por el nombre de la clave de modelo, que se configura en los parámetros de generación del modelo.

Crea un módulo de función de SAP

Para crear un módulo de función de SAP para que el SDK lo invoque automáticamente, sigue el esquema proporcionado:

Categoría Nombre del parámetro Tipo asociado
Se está importando IT_FUNCTION_PARAMETERS /GOOG/T_FUNCTION_PARAMETERS
Exportando EV_FUNCTION_RESPONSE STRING
Cambiando CV_PROMPT STRING
Excepciones /GOOG/CX_SDK Exception Class

En función de los parámetros de importación, escribe tu lógica personalizada dentro del módulo de la función, que puede ser recuperar datos de SAP a través de consultas SELECT o llamar a una API o un módulo externos para obtener la información faltante.

Configura el parámetro de exportación EV_FUNCTION_RESPONSE con la información para enviar comentarios al contexto de LLM. También puedes cambiar o modificar el texto de la instrucción en CV_PROMPT según la lógica personalizada y los requisitos empresariales para dar más instrucciones al LLM según diferentes situaciones empresariales.

Agrega la declaración de la función

Para agregar una declaración de función al contexto de LLM, puedes usar el método ADD_FUNCTION_DECLARATION. Llama al método ADD_FUNCTION_DECLARATION cada vez que necesites agregar una función al 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 ).

Reemplaza lo siguiente:

  • PARAMETER_NAME: El nombre del parámetro.
  • PARAMETER_TYPE: Es el tipo de datos del parámetro, como string, integer o boolean.
  • PARAMETER_DESCRIPTION: Una explicación clara del propósito del parámetro y el formato esperado.
  • PARAMETER_IS_REQUIRED: Si este parámetro es obligatorio para que la función se ejecute, establece el valor en ABAP_TRUE.
  • FUNCTION_MODULE_NAME: Es el nombre del módulo de funciones de SAP.
  • FUNCTION_MODULE_DESCRIPTION: Es la descripción del módulo de funciones de SAP.

Cómo configurar la invocación automática del módulo de funciones de SAP

Para configurar la invocación automática de la función de SAP que selecciona el modelo, puedes usar el método SET_AUTO_INVOKE_SAP_FUNCTION. Si se pasa ABAP_TRUE en el parámetro de importación IV_AUTO_INVOKE, el SDK invoca el módulo de función y su respuesta se incluye con el contexto de LLM para generar la respuesta final.

Debes definir tu módulo de funciones siguiendo el esquema que se describe en la sección Cómo crear un módulo de funciones de SAP.

lo_model->set_auto_invoke_sap_function( abap_true ).

Genera contenido con llamadas a función

Para pasar el texto de la instrucción al modelo de Gemini, puedes usar el método GENERATE_CONTENT. Para obtener la respuesta que genera Gemini con el contexto adicional agregado desde el módulo de funciones de SAP a través de llamadas a funciones, usa el método GET_TEXT.

DATA(lv_response) = lo_model->generate_content( iv_prompt_text ='PROMPT'
                           )->get_text( ).

Reemplaza PROMPT por tu instrucción de texto.

Muestra de código

En la siguiente muestra de código, se ilustra cómo usar las llamadas a función de SAP para recibir una respuesta final del 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.

Reemplaza lo siguiente:

  • MODEL_KEY: El nombre de la clave del modelo, que se configura en los parámetros de generación del modelo.
  • PARAMETER_NAME: El nombre del parámetro.
  • PARAMETER_TYPE: Es el tipo de datos del parámetro, como string, integer o boolean.
  • PARAMETER_DESCRIPTION: Una explicación clara del propósito del parámetro y el formato esperado.
  • PARAMETER_IS_REQUIRED: Si este parámetro es obligatorio para que la función se ejecute, establece el valor en ABAP_TRUE.
  • FUNCTION_MODULE_NAME: Es el nombre del módulo de funciones de SAP.
  • FUNCTION_MODULE_DESCRIPTION: Es la descripción del módulo de funciones de SAP.
  • PROMPT: Tu sugerencia de texto.

¿Qué sigue?