Questo documento descrive come invocare i modelli Gemini per generare una risposta per input di testo e multimodali utilizzando l'SDK Vertex AI per ABAP. I modelli Gemini possono accettare più modalità di input, tra cui testo, immagini, video, audio e documenti. Puoi utilizzare i modelli Gemini per casi d'uso come i seguenti:
- Riassumere un testo in formato libero
- Descrizione o interpretazione degli asset multimediali
- Traduzione da una lingua all'altra
L'utilizzo di modelli generativi per creare funzionalità incentrate sull'AI non richiede alcuna esperienza nel machine learning (ML). Non è necessario raccogliere un set di dati di grandi dimensioni o addestrare un modello. Per avviare il tuo primo programma, è sufficiente descrivere cosa vuoi che faccia il modello in poche frasi. L'SDK Vertex AI per ABAP fornisce classi e metodi ABAP per accedere ai modelli Gemini dal tuo ambiente SAP. Per iniziare, consulta questi esempi di codice.
Prima di iniziare
Prima di utilizzare l'SDK Vertex AI per ABAP con Gemini personalizzati, accertati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:
- Abilitare l'API Vertex AI nel tuo progetto Google Cloud.
- Hai installato l'SDK Vertex AI per ABAP nel tuo ambiente SAP.
- Configura l'autenticazione per accedere all'API Vertex AI.
- Configurato i parametri di generazione del modello.
Invia richiesta a Gemini
Questa sezione spiega come inviare richieste ai modelli Gemini tramite l'API Vertex AI utilizzando l'SDK Vertex AI per ABAP.
Creare un'istanza per la classe callback multimodale Gemini
Per richiamare i modelli di testo e multimodali di Gemini utilizzando prompt di testo o multimodali, puoi utilizzare 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.
Genera contenuti con un prompt
Generare contenuti fornendo
un prompt di testo al modello, puoi utilizzare
GENERATE_CONTENT
.
lo_model->generate_content( 'PROMPT' ).
Sostituisci PROMPT
con il prompt di testo.
Fornisci istruzioni di sistema al modello
Per passare al modello istruzioni di sistema basate su testo,
puoi utilizzare il metodo SET_SYSTEM_INSTRUCTIONS
.
lo_model->set_system_instructions( 'SYSTEM_INSTRUCTIONS' ).
Sostituisci SYSTEM_INSTRUCTIONS
con le istruzioni di sistema del modello.
Aggiungi impostazioni di sicurezza
Per aggiungere impostazioni di sicurezza per consentire al modello di generare risposte, puoi utilizzare il metodo
ADD_SAFETY_SETTINGS
.
Questa funzionalità viene utilizzata per imporre linee guida di sicurezza al modello per bloccare i contenuti non sicuri.
lo_model->add_safety_settings( iv_harm_category = 'HARM_CATEGORY'
iv_harm_block_threshold = 'HARM_BLOCK_THRESHOLD'
iv_harm_block_method = 'HARM_BLOCK_METHOD' ).
Sostituisci quanto segue:
HARM_CATEGORY
: la categoria di Contenuti dannosi che vuoi applicare.HARM_BLOCK_THRESHOLD
: il livello di soglia basato sulla probabilità che vuoi applicare.HARM_BLOCK_METHOD
: il metodo di blocco dei contenuti dannosi che vuoi applicare.
A ogni chiamata del metodo, il metodo ADD_SAFETY_SETTINGS
aggiunge le impostazioni di sicurezza specificate all'input del modello.
Imposta la configurazione di generazione per il modello
Gestisci la configurazione di generazione per i modelli nella tabella /GOOG/AI_CONFIG
.
Per sostituire la configurazione di generazione per una determinata chiamata, puoi utilizzare il metodo SET_GENERATION_CONFIG
.
Se è impostato il parametro di importazione per una proprietà di generazione, viene restituito
viene attivato.
lo_model->set_generation_config( iv_response_mime_type = 'RESPONSE_MIME_TYPE'
iv_temperature = 'TEMPERATURE'
iv_top_p = 'TOP_P'
iv_top_k = 'TOP_K'
iv_candidate_count = 'CANDIDATE_COUNT'
iv_max_output_tokens = 'MAX_OUTPUT_TOKENS'
iv_presence_penalty = 'PRESENCE_PENALTY'
iv_frequency_penalty = 'FREQUENCY_PENALTY' ).
Sostituisci quanto segue:
RESPONSE_MIME_TYPE
: tipo MIME di risposta per il modello.TEMPERATURE
: temperatura di casualità.TOP_P
: campionamento Top-P.TOP_K
: campionamento Top-K.CANDIDATE_COUNT
: numero di candidati da generare.MAX_OUTPUT_TOKENS
: numero massimo di token di output per messaggioPRESENCE_PENALTY
: penalità positive.FREQUENCY_PENALTY
: penalizzazioni per frequenza.
Per ulteriori informazioni su questi parametri, consulta Configurare i parametri di generazione del modello.
Passare l'input multimodale al modello
Puoi richiamare i modelli Gemini utilizzando input multimodali, che possono essere testo, immagini, video, documenti o una combinazione di questi. Puoi passare l'input come dati non elaborati o fornendo l'URI Cloud Storage degli oggetti file.
Impostare i dati non elaborati
Per fornire i dati non elaborati di un file come input al modello, insieme al relativo tipo MIME, puoi utilizzare il metodo SET_INLINE_DATA
.
Per gli input video, considera solo una parte specifica di un video:
puoi impostare l'ora di inizio e l'ora di fine utilizzando il menu facoltativo
rispettivamente IV_VIDEO_START_OFFSET
e IV_VIDEO_END_OFFSET
.
lo_model->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'RAW_DATA' ).
Sostituisci quanto segue:
MIME_TYPE
: il tipo MIME standard IANA dei dati non elaborati. Per impostazione predefinita, il tipo MIME è impostato suapplication/pdf
.RAW_DATA
: i dati non elaborati codificati in Base64 dell'immagine, del PDF o del video da includere in linea nel prompt.
Per cancellare i dati non elaborati dei file dall'input del modello con la stessa istanza della classe /GOOG/CL_GENERATIVE_MODEL
, puoi utilizzare il metodo CLEAR_INLINE_DATA
.
lo_model->clear_inline_data( ).
Imposta oggetti da Cloud Storage
Per fornire l'URI di un oggetto file archiviato in un
come input del modello, insieme al tipo MIME,
puoi usare il metodo SET_FILE_DATA
.
Per gli input video, considera solo una parte specifica di un video:
puoi impostare l'ora di inizio e l'ora di fine utilizzando il menu facoltativo
rispettivamente IV_VIDEO_START_OFFSET
e IV_VIDEO_END_OFFSET
.
lo_model->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI' ).
Sostituisci quanto segue:
MIME_TYPE
: il tipo MIME standard IANA dei dati del file. Per impostazione predefinita, il tipo MIME è impostato suapplication/pdf
.FILE_URI
: l'URI del file archiviato in un bucket Cloud Storage.
Se vuoi passare tutti i file presenti in un
bucket Cloud Storage come input al modello, utilizza il metodo SET_FILES_FROM_GCS
per specificare il nome del bucket Cloud Storage di destinazione.
lo_model->set_files_from_gcs( iv_storage_bucket_name = 'STORAGE_BUCKET_NAME').
Sostituisci STORAGE_BUCKET_NAME
con il nome del bucket Cloud Storage che contiene i file.
Se hai una chiave client separata per chiamare l'API Cloud Storage tramite l'ABAP SDK for Google Cloud, passa il nome della chiave client nel parametro di importazione IV_KEY_NAME
.
Per cancellare gli oggetti impostati tramite gli URI di Cloud Storage dall'input del modello con la stessa istanza della classe /GOOG/CL_GENERATIVE_MODEL
, puoi utilizzare il metodo CLEAR_FILE_DATA
.
lo_model->clear_file_data( ).
Imposta tipo MIME della risposta
Per impostare il tipo MIME della risposta
con cui il modello risponde, puoi usare il metodo SET_RESPONSE_MIME_TYPE
.
Se non è impostato, per impostazione predefinita il modello prende text/plain
come tipo MIME di risposta.
lo_model->set_response_mime_type( iv_mime_type = 'RESPONSE_MIME_TYPE' ).
Sostituisci RESPONSE_MIME_TYPE
con il tipo MIME di risposta dei contenuti generati.
Conta il numero di token in un prompt di testo
a contare il numero di token in un prompt di testo prima di richiamare il metodo
modello con il prompt, puoi usare il metodo COUNT_TOKENS
.
DATA(lv_total_tokens) = lo_model->count_tokens( iv_prompt_text = 'PROMPT'
iv_system_instructions = 'SYSTEM_INSTRUCTIONS'
)->get_total_tokens( ).
DATA(lv_total_billable_characters) = lo_model->count_tokens(
iv_prompt_text = 'PROMPT'
iv_system_instructions = 'SYSTEM_INSTRUCTIONS'
)->get_total_billable_characters( ).
Sostituisci quanto segue:
PROMPT
: il tuo prompt di testo.SYSTEM_INSTRUCTIONS
: l'istruzione di sistema per il modello.
Ricevi risposta da Gemini
Per ricevere le risposte elaborate dal modello e presentarle in modo significativo per gli sviluppatori ABAP, l'SDK fornisce la classe/GOOG/CL_MODEL_RESPONSE
.
La risposta acquisita dalla classe /GOOG/CL_MODEL_RESPONSE
è collegata alle richieste effettuate tramite i metodi della classe /GOOG/CL_MODEL_RESPONSE
, in modo da poter accedere direttamente alla risposta in un'unica istruzione senza dover utilizzare variabili per memorizzare i risultati intermedi.
Ricevere una risposta via SMS
Per ricevere una risposta di testo dal modello, puoi utilizzare il metodo GET_TEXT
.
DATA(lv_response_text) = lo_model->generate_content( 'PROMPT'
)->get_text( ).
Sostituisci PROMPT
con il tuo prompt di testo.
Ottenere la valutazione di sicurezza
Per ricevere un elenco di valutazioni per la sicurezza della risposta del modello,
puoi utilizzare il metodo GET_SAFETY_RATING
.
DATA(lt_safety_ratings) = lo_model->generate_content( 'PROMPT'
)->get_safety_rating( ).
Sostituisci PROMPT
con il prompt di testo.
Ottenere il numero di token nel prompt della richiesta
Per ricevere il numero di token nel prompt di input al modello,
puoi usare il metodo GET_PROMPT_TOKEN_COUNT
.
DATA(lv_prompt_token_count) = lo_model->generate_content( 'PROMPT'
)->get_prompt_token_count( ).
Sostituisci PROMPT
con il prompt di testo.
Ottenere il numero di token nella risposta del modello
Per ricevere il numero di token nella risposta del modello,
puoi utilizzare il metodo GET_CANDIDATES_TOKEN_COUNT
.
DATA(lv_candidates_token_count) = lo_model->generate_content( 'PROMPT'
)->get_candidates_token_count( ).
Sostituisci PROMPT
con il tuo prompt di testo.
Ottenere il motivo del blocco
Per ricevere il motivo per cui il modello ha bloccato la generazione della risposta,
puoi utilizzare il metodo GET_BLOCK_REASON
.
DATA(lv_block_reason) = lo_model->generate_content( 'PROMPT'
)->get_block_reason( ).
Sostituisci PROMPT
con il prompt di testo.
Ricevi messaggio del motivo del blocco
Per ricevere un messaggio di motivazione leggibile per il blocco della generazione di risposte da parte del modello,
puoi usare il metodo GET_BLOCK_REASON_MESSAGE
.
DATA(lv_block_reason_message) = lo_model->generate_content( 'PROMPT'
)->get_block_reason_message( ).
Sostituisci PROMPT
con il tuo prompt di testo.
Esempi di codice
I seguenti esempi di codice mostrano come richiamare il metodo Modelli Gemini per generare risposte per tipi diversi di input.
Generazione basata su testo
Il seguente esempio di codice mostra come generare una risposta da un prompt di testo insieme con un'istruzione di sistema. L'istruzione di sistema è facoltativa e può essere passata insieme al prompt per indicare al modello di comportarsi in un determinato modo.
Esempio di codice
DATA:
lv_instruction TYPE string,
lv_prompt TYPE string.
lv_instruction = 'SYSTEM_INSTRUCTIONS'.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->generate_content( lv_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, che è configurato nei parametri di generazione del modello.PROMPT
: il prompt di testo.SYSTEM_INSTRUCTIONS
: le istruzioni di sistema per il modello.
Generazione multimodale
Il seguente esempio di codice mostra come generare una risposta da un input multimodale, ad esempio testo e un'immagine. Puoi menzionare l'URI Cloud Storage o i dati non elaborati di un'immagine, un video o un documento insieme a un prompt di testo. L'istruzione di sistema è facoltativa e può essere trasmesso insieme al prompt per indicare al modello di comportarsi in un modo specifico.
Esempio di codice
DATA:
lv_instruction TYPE string,
lv_prompt TYPE string.
lv_instruction = 'SYSTEM_INSTRUCTIONS'.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI'
)->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'INLINE_DATA'
)->generate_content( lv_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, che è configurato nei parametri di generazione del modello.PROMPT
: il prompt di testo.SYSTEM_INSTRUCTIONS
: l'istruzione di sistema per il modello.MIME_TYPE
: il tipo MIME standard IANA dei dati del file. Per impostazione predefinita, il tipo MIME è impostato suapplication/pdf
.FILE_URI
: l'URI del file archiviato in un bucket Cloud Storage.INLINE_DATA
: i dati non elaborati codificati in Base64 dell'immagine, del PDF o del video da includere in linea nel prompt.
Aggiungere le impostazioni di sicurezza per il modello
Il seguente esempio di codice mostra come aggiungere impostazioni di sicurezza affinché il modello generi una risposta.
Esempio di codice
DATA:
lv_instruction TYPE string,
lv_prompt TYPE string.
lv_instruction = 'SYSTEM_INSTRUCTIONS'.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI'
)->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'INLINE_DATA'
)->add_safety_settings( iv_harm_category = 'HARM_CATEGORY'
iv_harm_block_threshold = 'HARM_BLOCK_THRESHOLD'
iv_harm_block_method = 'HARM_BLOCK_METHOD'
)->generate_content( lv_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, che è configurato nei parametri di generazione del modello.PROMPT
: il tuo prompt di testo.SYSTEM_INSTRUCTIONS
: l'istruzione di sistema per il modello.MIME_TYPE
: il tipo MIME standard IANA dei dati del file. Per impostazione predefinita, il tipo MIME è impostato suapplication/pdf
.FILE_URI
: l'URI del file archiviato in un bucket Cloud Storage.INLINE_DATA
: i dati non elaborati codificati in Base64 dell'immagine, del PDF o del video da includere in linea nel prompt.HARM_CATEGORY
: la Categoria di danno che vuoi applicare.HARM_BLOCK_THRESHOLD
: il livello delle soglie basato sulla probabilità che vuoi applicare.HARM_BLOCK_METHOD
: il metodo di blocco dei contenuti dannosi che vuoi applicare.
Trovare il numero di token e caratteri fatturabili in un prompt
Prima di richiamare il modello con un prompt, ti consigliamo di controllare il numero di token nel prompt e il numero di caratteri fatturabili presenti nel token per pianificare la fatturazione del progetto Google Cloud. La l'esempio di codice riportato di seguito come trovare questi numeri e valutare la fatturazione per una chiamata modello simile.
Esempio di codice
DATA:
lv_prompt TYPE string.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_total_tokens) = lo_model->count_tokens( lv_prompt
)->get_total_tokens( ).
DATA(lv_total_billable_characters) = lo_model->count_tokens( lv_prompt
)->get_total_billable_characters( ).
IF lv_total_tokens IS NOT INITIAL.
cl_demo_output=>display( 'Total Tokens -' && lv_total_tokens ).
ENDIF.
IF lv_total_billable_characters IS NOT INITIAL.
cl_demo_output=>display( 'Total Billable Characters -' && lv_total_billable_characters ).
ENDIF.
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
Sostituisci quanto segue:
PROMPT
: il tuo prompt di testo.MODEL_KEY
: il nome della chiave del modello, configurato nei parametri di generazione del modello.
Passaggi successivi
Scopri di più sullo sviluppo di applicazioni con la versione on-premise o qualsiasi versione cloud di ABAP SDK for Google Cloud.
Poni le tue domande e discuti dell'SDK Vertex AI per ABAP con la community attivo Forum di Cloud.