Questo documento fornisce una panoramica di come utilizzare le chiamate di funzioni SAP con Gemini, utilizzando l'SDK Vertex AI per ABAP nel tuo ambiente SAP BTP, ABAP.
Puoi definire funzioni personalizzate e fornirle ai modelli Gemini utilizzando la funzionalità di chiamata di funzione. I modelli non invocano direttamente le funzioni personalizzate, ma generano un output di dati strutturati che specifica il nome della funzione e gli argomenti suggeriti. Questo output ti consente di scrivere applicazioni che acquisiscono l'output strutturato e chiamano API esterne. L'output dell'API risultante può quindi essere incorporato in un altro prompt del modello, consentendo risposte alle query più complete.
L'SDK Vertex AI per ABAP semplifica le chiamate di funzione per gli sviluppatori ABAP offrendo loro l'opportunità di richiamare la logica personalizzata scritta nei moduli di funzione SAP:
- Passare al modello il nome del modulo di funzione SAP o del servizio OData (Open Data Protocol) come dichiarazioni di funzione, descrivendo il nome della funzione o del servizio, la relativa finalità e i parametri correlati.
- Impostazione dell'invocazione automatica del modulo di funzione SAP o del servizio OData implicitamente durante l'invocazione del modello.
Prima di iniziare
Prima di utilizzare l'SDK Vertex AI per ABAP per le chiamate di funzione SAP con Gemini, assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:
- Hai attivato l'API Vertex AI nel tuo progetto Google Cloud.
- Installare l'SDK Vertex AI per ABAP nel tuo ambiente SAP.
- Configura l'autenticazione per accedere all'API Vertex AI.
- Configura i parametri di generazione del modello.
Arricchisci il contesto del modello di IA Gemini con i dati SAP chiamando un modulo di funzione SAP
Questa sezione spiega come arricchire il contesto del modello di IA Gemini con i dati SAP richiamando un modulo di funzione SAP.
Di seguito è riportato il percorso tipico di uno sviluppatore ABAP per richiamare un modulo di funzione SAP:
- L'utente fornisce un prompt di input.
- L'SDK passa il prompt di input e le dichiarazioni di funzione al modello.
- Il modello esamina il prompt e le funzioni dichiarate per dedurre la funzione da chiamare e suggerisce i valori dei parametri per chiamarla.
- Se l'invocazione automatica è impostata, l'SDK chiama il modulo di funzione SAP.
- L'SDK richiama quindi il modello con l'output della funzione chiamata.
- Il modello risponde con una risposta affidabile per il prompt finale arricchito con l'output della funzione chiamata.
- L'SDK restituisce la risposta all'utente.
Se scegli di non invocare automaticamente i moduli di funzione SAP, l'SDK ti consente di utilizzare la funzionalità di chiamata di funzione senza invocare alcun modulo di funzione SAP. In questo caso, puoi seguire il tipico flusso di lavoro di chiamate di funzione per utilizzare strumenti esterni come API e funzioni.
Crea un'istanza della classe di invocatore multimodale Gemini
Per invocare la chiamata di funzione in SAP, utilizza la classe /GOOG/CL_GENERATIVE_MODEL
.
Puoi creare un'istanza della classe
passando la chiave del modello configurata nei parametri di generazione del modello.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
Sostituisci MODEL_KEY
con il nome della chiave del modello, configurata
nei parametri di generazione del modello.
Crea un modulo funzione SAP
Per creare un modulo di funzione SAP per la chiamata automatica da parte dell'SDK, segui lo schema fornito:
Categoria | Nome parametro | Tipo associato |
---|---|---|
Importazione in corso | IT_FUNCTION_PARAMETERS |
/GOOG/T_FUNCTION_PARAMETERS |
In fase di esportazione | EV_FUNCTION_RESPONSE |
STRING |
Modifica in corso | CV_PROMPT |
STRING |
Eccezioni | /GOOG/CX_SDK |
Exception Class |
In base ai parametri di importazione, scrivi la logica personalizzata all'interno del modulo della funzione, che può recuperare i dati SAP tramite query SELECT
o chiamare un'API o un modulo esterno per recuperare le informazioni mancanti.
Imposta il parametro di esportazione EV_FUNCTION_RESPONSE
con le informazioni
per il feedback al contesto LLM. Puoi anche cambiare o modificare il testo del prompt
in CV_PROMPT
in base alla logica personalizzata e ai requisiti della tua attività per
istruire ulteriormente l'LLM in base a diversi scenari aziendali.
Aggiungi la dichiarazione di funzione
Per aggiungere una dichiarazione di funzione al contesto LLM, puoi utilizzare il metodo ADD_FUNCTION_DECLARATION
. Chiama il metodo ADD_FUNCTION_DECLARATION
ogni volta che devi aggiungere una funzione al contesto.
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 ).
Sostituisci quanto segue:
PARAMETER_NAME
: il nome del parametro.PARAMETER_TYPE
: il tipo di dati del parametro, comestring
,integer
oboolean
.PARAMETER_DESCRIPTION
: una spiegazione chiara dello scopo e del formato previsto del parametro.PARAMETER_IS_REQUIRED
: se questo parametro è obbligatorio per il funzionamento della funzione, imposta il valore suABAP_TRUE
.FUNCTION_MODULE_NAME
: nome del modulo di funzione SAP.FUNCTION_MODULE_DESCRIPTION
: descrizione del modulo della funzione SAP.
Puoi anche dichiarare una funzione senza parametri, che può fungere da funzione di riserva o di backup. Se una richiesta dell'utente non fornisce informazioni sufficienti per chiamare una funzione specifica, puoi chiedere a Gemini di selezionare questa funzione di riserva.
Impostare l'invocazione automatica del modulo di funzione SAP
Per impostare l'invocazione automatica della funzione SAP selezionata dal modello, puoi utilizzare il metodo SET_AUTO_INVOKE_SAP_FUNCTION
.
Se ABAP_TRUE
viene passato nel parametro di importazione IV_AUTO_INVOKE
, il modulo della funzione viene invocato dall'SDK e la relativa risposta viene inclusa nel contesto dell'LLM per generare la risposta finale.
Devi definire il modulo di funzione seguendo lo schema descritto nella sezione Creare il modulo di funzione SAP.
lo_model->set_auto_invoke_sap_function( abap_true ).
Generare contenuti con chiamate di funzione
Per passare il testo del prompt al
modello Gemini, puoi utilizzare il metodo GENERATE_CONTENT
.
Per ottenere la risposta
generata da Gemini con il contesto aggiuntivo
aggiunto dal modulo di funzione SAP tramite la chiamata di funzione, utilizza il metodo GET_TEXT
.
DATA(lv_response) = lo_model->generate_content( iv_prompt_text ='PROMPT'
)->get_text( ).
Sostituisci PROMPT
con il prompt di testo.
Ottenere il nome della funzione selezionata e i valori dei parametri
Per ottenere la funzione selezionata da Gemini
(tra le funzioni dichiarate) e i relativi parametri suggeriti,
utilizza il metodo GET_FUNCTION_CALL
.
DATA(lo_response) = lo_model_key->set_auto_invoke_sap_function( abap_true
)->generate_content( iv_prompt_text = 'PROMPT' ).
lo_response->get_function_call( IMPORTING ev_function_name = DATA(lv_function_name)
et_function_parameters = DATA(lt_function_parameters) ).
Sostituisci PROMPT
con il prompt di testo.
Puoi ottenere il nome della funzione selezionata di Gemini da
LV_FUNCTION_NAME
e i parametri suggeriti da LT_FUNCTION_PARAMETERS
.
Puoi utilizzare queste informazioni per convalidare, monitorare e registrare le azioni di Gemini in base alle linee guida per la gestione degli eventi e le informazioni sulla sicurezza della tua azienda.
Esempio di codice
Il seguente esempio di codice illustra come utilizzare le chiamate di funzioni SAP per ricevere una risposta finale dal modello.
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.
Sostituisci quanto segue:
MODEL_KEY
: il nome della chiave del modello, configurato nei parametri di generazione del modello.PARAMETER_NAME
: il nome del parametro.PARAMETER_TYPE
: il tipo di dati del parametro, comestring
,integer
oboolean
.PARAMETER_DESCRIPTION
: una spiegazione chiara dello scopo e del formato previsto del parametro.PARAMETER_IS_REQUIRED
: se questo parametro è obbligatorio per il funzionamento della funzione, imposta il valore suABAP_TRUE
.FUNCTION_MODULE_NAME
: nome del modulo di funzione SAP.FUNCTION_MODULE_DESCRIPTION
: descrizione del modulo della funzione SAP.PROMPT
: il prompt di testo.
Arricchisci il contesto del modello di IA di Gemini con i dati SAP chiamando un servizio OData
Questa sezione spiega come arricchire il contesto del modello di IA di Gemini con i dati SAP richiamando un servizio OData.
Di seguito è riportato il percorso tipico di uno sviluppatore ABAP per richiamare un servizio OData:
- L'utente fornisce un prompt di input.
- L'SDK passa il prompt di input e le dichiarazioni di funzione al modello.
- Il modello esamina il prompt e le funzioni dichiarate per dedurre la funzione da chiamare e suggerisce i valori dei parametri per chiamarla.
- Se l'invocazione automatica è impostata, l'SDK chiama il servizio OData.
- L'SDK invoca quindi il modello con l'output del servizio OData chiamato.
- Il modello risponde con una risposta affidabile per il prompt finale arricchito con l'output del servizio OData chiamato.
- L'SDK restituisce la risposta all'utente.
Se scegli di non invocare automaticamente i servizi OData, l'SDK ti consente di utilizzare la funzionalità di chiamata delle funzioni senza invocare alcun servizio OData. In questo caso, puoi seguire il tipico flusso di lavoro di chiamate di funzione per utilizzare strumenti esterni come API e funzioni.
Creare un servizio OData
Per creare un servizio OData per l'invocazione automatica da parte dell'SDK come funzione, utilizza lo schema seguente:
{
"UserRequest": "Input Prompt as user request",
"FunctionResponse": null,
"ModifiedUserRequest": null,
"ContextParameters": [
{
"ParameterName": "Parameter 1",
"ParameterValue": "Value 1"
},
{
"ParameterName": "Parameter 2",
"ParameterValue": "Value 2"
}
]
}
La tabella seguente fornisce informazioni sui campi utilizzati in questo schema:
Campo Schema | Tipo di campo | Modalità Input/Output | Descrizione |
---|---|---|---|
UserRequest |
String |
Solo input | Il prompt di input inserito dall'utente. |
FunctionResponse |
String |
Solo output | L'output del servizio OData. Può essere un singolo valore o una stringa JSON serializzata. |
ModifiedUserRequest |
String |
Solo output | Il UserRequest modificato, che viene fornito a Gemini come prompt. |
ContextParameters |
Table of parameters |
Solo input | La tabella dei parametri, che include i nomi e i valori dei parametri. |
ParameterName |
String |
Solo input | Nome del parametro della funzione. |
ParameterValue |
String |
Solo input | Valore del parametro della funzione, come suggerito da Gemini. |
Crea le entità di servizio OData
Crea un'entità utilizzando lo schema precedente.
Questa entità accetta la richiesta dell'utente come prompt, la inoltra a Gemini e viene dichiarata come funzione utilizzando l'SDK Vertex AI per ABAP. Questa entità restituisce anche la risposta della funzione OData dal sistema SAP di backend alla BTP, che viene poi integrata nel contesto del modello di IA Gemini.
- Imposta un nome appropriato per il nuovo elemento.
Imposta i valori per i seguenti attributi. Mantieni i valori predefiniti per tutti gli altri attributi.
Nome È una chiave? Tipo di nucleo EDM Nome del campo ABAP UserRequest
Sì Edm.String
USER_REQUEST FunctionResponse
No Edm.String
FUNCTION_RESPONSE ModifiedUserRequest
No Edm.String
MODIFIED_USER_REQUEST
Se vuoi inserire più entità nello stesso servizio OData, creale utilizzando lo stesso schema.
Crea un'altra entità denominata
ContextParameters
con i seguenti attributi. Mantieni i valori predefiniti per tutti gli altri attributi.Questa entità contiene i parametri della funzione e i relativi valori forniti dal modello Gemini.
Nome È una chiave? Tipo di nucleo EDM Nome del campo ABAP ParameterName
Sì Edm.String
PARAMETER_NAME ParameterValue
Sì Edm.String
PARAMETER_VALUE Crea insiemi di entità per tutte le entità che hai creato nei passaggi precedenti.
Crea un'associazione tra ogni entità creata nel passaggio 1 e l'entità
ContextParameters
creata nel passaggio 2 come segue:- Imposta un nome per l'associazione.
- Nel campo Principal Entity (Entità principale), imposta il nome dell'entità che hai creato nel passaggio 1.
- Nel campo Cardinalità dell'entità principale, imposta
M
. - Nel campo Entità dipendente, imposta
ContextParameters
. - Nel campo Cardinalità entità dipendente, imposta
M
. - Salva e genera gli artefatti di runtime OData.
Aggiungi il servizio OData creato in SAP Gateway e attiva il nodo ICF.
Genera il file EDMX per i metadati OData come segue:
- Vai a TCode /iwfnd/maint_services e recupera i metadati per il servizio OData.
- Formatta e salva il file XML generato con l'estensione
.edmx
.
Scrivi la logica della funzione OData
Nella classe
MPC_EXT
generata, aggiungi e attiva un tipo di entità approfondita:TYPES: BEGIN OF ts_function_deep_entity, user_request TYPE string, function_response TYPE string, modified_user_request TYPE string, context_parameters TYPE TABLE OF ts_contextparameters WITH DEFAULT KEY, END OF ts_function_deep_entity.
Ridefinisci il metodo
CREATE_DEEP_ENTITY
della classeDPC_EXT
generata completando i seguenti passaggi:- Se hai creato più di un'entità OData nella sezione Creare le entità di servizio OData, aggiungi un'istruzione
CASE
per ogni entità OData. - Scrivi la logica ABAP per
get
oprepare
la risposta per aumentare il contesto per Gemini nell'applicazione BTP. - Nel campo FUNCTION_RESPONSE, imposta la risposta.
- Nel campo MODIFIED_USER_REQUEST, imposta la richiesta modificata.
- Utilizzando il metodo OData
COPY_DATA_TO_REF
, associa la risposta complessiva al messaggio.
Il seguente snippet è un esempio di logica ABAP:
TRY. DATA: ls_request TYPE <z*_mpc_ext>=>ts_function_deep_entity. CASE io_tech_request_context->get_entity_type_name( ). WHEN <z*_mpc_ext>=>gc_ENTITY_NAME. CALL METHOD io_data_provider->read_entry_data IMPORTING es_data = ls_request. <ABAP logic to formulate OData function response> ls_request-modified_user_request = 'MODIFIED_GEMINI_PROMPT'. ls_request-function_response = 'ODATA_FUNCTION_RESPONSE'. CALL METHOD me->copy_data_to_ref EXPORTING is_data = ls_request CHANGING cr_data = er_deep_entity. ENDCASE. CATCH /iwbep/cx_mgw_busi_exception. CATCH /iwbep/cx_mgw_tech_exception. ENDTRY. ```
- Se hai creato più di un'entità OData nella sezione Creare le entità di servizio OData, aggiungi un'istruzione
Sostituisci quanto segue:
ENTITY_TYPE
: il nome dell'entità OData che hai creato nel passaggio 1 della sezione Creare le entità di servizio ODataMODIFIED_GEMINI_PROMPT
: il prompt modificato fornito da GeminiODATA_FUNCTION_RESPONSE
: la risposta fornita dal servizio OData
Se hai più di un campo o una struttura o una tabella nidificata da passare come risposta della funzione, puoi serializzare il tipo ABAP in una stringa utilizzando il metodo SERIALIZE_JSON
della classe /GOOG/CL_JSON_UTIL
dell'SDK.
Definire il servizio OData come modello di consumo del servizio su SAP BTP
Dopo aver creato il servizio OData, devi definirlo come modello di consumo di servizi nel tuo ambiente SAP BTP. A tal fine, crea un modello di consumo di servizi, un servizio in uscita HTTP, uno scenario di comunicazione e un arrangiamento di comunicazione.
Crea un modello di consumo del servizio
- Nel progetto ABAP, apri il menu contestuale e seleziona Nuovo > Altro oggetto del repository ABAP > Servizi aziendali > Modello di consumo del servizio.
- Nella finestra Nuovo modello di consumo del servizio, completa i seguenti passaggi:
- Nel campo Pacchetto, seleziona e carica il file EDMX generato in precedenza in una sezione precedente.
- Inserisci un nome e una descrizione.
- Nel campo Modalità di consumo remoto, seleziona OData.
- Fai clic su Fine.
Creare un servizio in uscita HTTP
- Nel progetto ABAP, apri il menu contestuale.
- Seleziona il pacchetto e fai clic su Nuovo > Altro oggetto del repository ABAP.
- Nel campo Tipo di servizio, seleziona Servizio HTTP.
Nel campo Prefisso percorso predefinito, inserisci il prefisso del percorso per il servizio OData nel sistema SAP di backend.
Per conoscere il prefisso del percorso OData, accedi a SAP Gateway Client. Il valore visualizzato nel campo URI richiesta è il prefisso del percorso per il servizio OData.
Fai clic su Avanti.
Crea uno scenario di comunicazione
Dopo aver creato un servizio in uscita HTTP, devi creare uno scenario di comunicazione e assegnargli il servizio in uscita. Per farlo, segui questa procedura:
- Nel progetto ABAP, seleziona Scenario di comunicazione e poi fai clic su Avanti.
- Nella finestra Nuovo scenario di comunicazione, completa i seguenti passaggi:
- Inserisci un nome e una descrizione.
- Fai clic su Avanti.
- Nel campo Tipo di scenario di comunicazione, seleziona Gestito dal cliente.
- Vai alla scheda In uscita.
- Nel campo Istanze consentite, seleziona Un'istanza per scenario e sistema di comunicazione.
- Nel campo Metodi di autenticazione supportati, seleziona le seguenti caselle di controllo: Di base, X.509 e OAuth 2.0.
- Nel campo OAuth 2.0 Grant Type (Tipo di concessione OAuth 2.0), seleziona SAML 2.0 Bearer Assertion (Affermazione con token SAML 2.0).
- Nella sezione Servizi in uscita, fai clic su Aggiungi e poi seleziona il servizio in uscita che hai creato nella sezione precedente.
- Nella sezione Servizio in uscita, assicurati che il Prefisso percorso predefinito sia corretto. In caso contrario, fai clic su Sincronizza.
- Salva lo scenario di comunicazione.
Creare un accordo di comunicazione
- Accedi al launchpad SAP Fiori del sistema ABAP BTP in cui è installato l'SDK ABAP per Google Cloud.
Apri l'app Accordo di comunicazione.
- Fai clic su New (Nuovo).
Nella finestra di dialogo Nuovo accordo di comunicazione visualizzata, inserisci un valore per i seguenti campi:
- Scenario: seleziona lo scenario di comunicazione che hai creato nella sezione Creare uno scenario di comunicazione.
- Nome organizzazione: inserisci un nome per l'organizzazione delle comunicazioni.
Fai clic su Crea.
Per l'organizzazione della comunicazione visualizzata, seleziona il sistema di comunicazione creato nel passaggio precedente nel campo Sistema di comunicazione.
Fai clic su Salva.
Crea un'istanza della classe di invocatore multimodale Gemini
Per invocare la chiamata di funzione in SAP, utilizza la classe /GOOG/CL_GENERATIVE_MODEL
.
Puoi creare un'istanza della classe passando la chiave del modello configurata nei
parametri di generazione del modello.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
Sostituisci MODEL_KEY
con il nome della chiave del modello, che è configurata nei parametri di generazione del modello.
Aggiungi la dichiarazione di funzione
Per aggiungere un servizio OData come dichiarazione di funzione al contesto LLM, puoi utilizzare il metodo ADD_FUNCTION_DECLARATION
. Chiama il metodo ADD_FUNCTION_DECLARATION
ogni volta che devi aggiungere un servizio OData come funzione al contesto.
DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
DATA ls_connection_parameters TYPE /goog/cl_generative_model=>ty_connection_parameters.
APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
type = 'PARAMETER_TYPE'
description = 'PARAMETER_DESCRIPTION'
is_required = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
ls_connection_parameters-connection_type = 'ODATA'.
ls_connection_parameters-comm_scenario = 'COMMUNICATION_SCENARIO'.
ls_connection_parameters-service_id = 'ODATA_SERVICE_ID'.
ls_connection_parameters-proxy_model_id = 'ODATA_SERVICE_CONSUMPTION_MODEL_ID'.
ls_connection_parameters-relative_service_root = 'ODATA_ROOT_URI'.
ls_connection_parameters-entity_set_name = 'ODATA_ENTITY_SET_NAME'.
lo_model->add_function_declaration( iv_name = 'FUNCTION_NAME'
iv_description = 'FUNCTION_DESCRIPTION'
it_parameters = lt_parameters
is_connection_parameters = ls_connection_parameters ).
Sostituisci quanto segue:
PARAMETER_NAME
: il nome del parametroPARAMETER_TYPE
: il tipo di dati del parametro, ad esempiostring
,integer
oboolean
PARAMETER_DESCRIPTION
: una spiegazione chiara dello scopo e del formato previsto del parametroPARAMETER_IS_REQUIRED
: imposta il valore suABAP_TRUE
se questo parametro è obbligatorio per il funzionamento della funzioneCOMMUNICATION_SCENARIO
: l'ID dello scenario di comunicazione che hai creatoODATA_SERVICE_ID
: l'ID del servizio in uscita che hai creato per il servizio ODataODATA_SERVICE_CONSUMPTION_MODEL_ID
: l'ID del modello di consumo del servizio che hai creato per il servizio ODataODATA_ROOT_URI
: l'URI principale del servizio OData nel sistema SAP di backendODATA_ENTITY_SET_NAME
: il nome dell'insieme di entità del servizio OData da dichiarare come funzioneFUNCTION_NAME
: il nome della funzione dichiarata per il servizio OData che vuoi utilizzareFUNCTION_DESCRIPTION
: la descrizione della funzione che hai dichiarato per il servizio OData che vuoi utilizzare
Impostare l'invocazione automatica del servizio OData
Per impostare l'invocazione automatica del servizio OData della funzione SAP selezionato dal
modello Gemini, puoi utilizzare il metodo SET_AUTO_INVOKE_SAP_FUNCTION
.
Se ABAP_TRUE
viene passato nel parametro di importazione IV_AUTO_INVOKE
, il modulo della funzione viene invocato dall'SDK e la relativa risposta viene inclusa nel contesto dell'LLM per generare la risposta finale.
Devi definire il modulo di funzione seguendo lo schema descritto nella sezione Creare il modulo di funzione SAP.
lo_model->set_auto_invoke_sap_function( abap_true ).
Generare contenuti con chiamate di funzione
Per passare il testo del prompt al
modello Gemini, puoi utilizzare il metodo GENERATE_CONTENT
.
Per ottenere la risposta
generata da Gemini con il contesto aggiuntivo
aggiunto dal modulo di funzione SAP tramite la chiamata di funzione, utilizza il metodo GET_TEXT
.
DATA(lv_response) = lo_model->generate_content( iv_prompt_text ='PROMPT'
)->get_text( ).
Sostituisci PROMPT
con il prompt di testo.
Ottenere il nome della funzione selezionata e i valori dei parametri
Per ottenere la funzione selezionata da Gemini
(tra le funzioni dichiarate) e i relativi parametri suggeriti,
utilizza il metodo GET_FUNCTION_CALL
.
DATA(lo_response) = lo_model_key->set_auto_invoke_sap_function( abap_true
)->generate_content( iv_prompt_text = 'PROMPT' ).
lo_response->get_function_call( IMPORTING ev_function_name = DATA(lv_function_name)
et_function_parameters = DATA(lt_function_parameters) ).
Esempio di codice
Il seguente esempio di codice illustra come utilizzare la chiamata di funzioni SAP con un servizio Odata per ricevere una risposta finale dal modello:
DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
DATA ls_connection_parameters TYPE /goog/cl_generative_model=>ty_connection_parameters.
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.
ls_connection_parameters-connection_type = 'ODATA'.
ls_connection_parameters-comm_scenario = 'COMMUNICATION_SCENARIO'.
ls_connection_parameters-service_id = 'ODATA_SERVICE_ID'.
ls_connection_parameters-proxy_model_id = 'ODATA_SERVICE_CONSUMPTION_MODEL_ID'.
ls_connection_parameters-relative_service_root = 'ODATA_ROOT_URI'.
ls_connection_parameters-entity_set_name = 'ODATA_ENTITY_SET_NAME'.
DATA(lv_response) = lo_model_key->add_function_declaration(
iv_name = 'FUNCTION_NAME'
iv_description = 'FUNCTION_DESCRIPTION'
it_parameters = lt_parameters
is_connection_parameters = ls_connection_parameters
)->set_auto_invoke_sap_function( abap_true
)->generate_content( iv_prompt_text ='PROMPT'
)->get_text( ).
IF lv_response IS NOT INITIAL.
out->write( lv_response ).
ENDIF.
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
out->write( lo_cx_sdk->get_text( ) ).
ENDTRY.
Passaggi successivi
- Scopri di più sullo sviluppo di applicazioni con l'edizione SAP BTP di ABAP SDK for Google Cloud.
- Poni le tue domande e discuti dell'SDK Vertex AI per ABAP con la community nei forum di Cloud.