In diesem Dokument wird beschrieben, wie Sie die Gemini-Modelle aufrufen, um mit dem Vertex AI SDK für ABAP eine Antwort auf Text- und multimodale Eingaben zu generieren. Gemini-Modelle akzeptieren mehrere Eingabemodi, darunter Text, Bild, Video, Audio und Dokumente. Sie können die Gemini-Modelle für Anwendungsfälle wie die folgenden verwenden:
- Text in freiem Format zusammenfassen
- Media-Assets beschreiben oder interpretieren
- Zwischen Sprachen übersetzen
Die Verwendung generativer Modelle zum Erstellen von KI-zentrierten Features erfordert keine Kenntnisse im Bereich maschinelles Lernen (ML). Sie müssen keinen großen Datensatz erfassen oder ein Modell trainieren. Zum Starten Ihres ersten Programms müssen Sie lediglich in einigen Sätzen beschreiben, was das Modell tun soll. Das Vertex AI SDK für ABAP bietet ABAP-Klassen und -Methoden für den Zugriff auf die Gemini-Modelle aus Ihrer SAP-Umgebung. Sehen Sie sich zuerst diese Codebeispiele an.
Hinweise
Bevor Sie das Vertex AI SDK für ABAP mit den Gemini-Modellen verwenden, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllen:
- Sie haben die Vertex AI API in Ihrem Google Cloud-Projekt aktiviert.
- Sie haben das Vertex AI SDK für ABAP in Ihrer SAP-Umgebung installiert.
- Sie haben die Authentifizierung eingerichtet, um auf die Vertex AI API zuzugreifen.
- Konfigurierte Parameter zur Modellgenerierung
Anfrage an Gemini senden
In diesem Abschnitt wird beschrieben, wie Sie mithilfe des Vertex AI SDK for ABAP Anfragen über die Vertex AI API an Gemini-Modelle senden.
Multimodale Aufrufer-Klasse von Gemini instanziieren
Zum Aufrufen des Textes und multimodaler Modelle von Gemini mithilfe von Text- oder multimodalen Prompts können Sie die Klasse /GOOG/CL_GENERATIVE_MODEL
verwenden.
Sie instanziieren die Klasse, indem Sie den in den Parametern für die Modellgenerierung konfigurierten Modellschlüssel übergeben.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
Ersetzen Sie MODEL_KEY
durch den Namen des Modellschlüssels, der in den Parametern für die Modellgenerierung konfiguriert ist.
Inhalte mit einem Prompt erstellen
Wenn Sie Inhalte generieren möchten, indem Sie dem Modell einen Text-Prompt zur Verfügung stellen, können Sie die Methode GENERATE_CONTENT
verwenden.
lo_model->generate_content( 'PROMPT' ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Systemanweisungen für das Modell bereitstellen
Zum Übergeben von textbasierten Systemanweisungen an das Modell können Sie die Methode SET_SYSTEM_INSTRUCTIONS
verwenden.
lo_model->set_system_instructions( 'SYSTEM_INSTRUCTIONS' ).
Ersetzen Sie SYSTEM_INSTRUCTIONS
durch Ihre Systemanleitung für das Modell.
Sicherheitseinstellungen hinzufügen
Mit der Methode ADD_SAFETY_SETTINGS
können Sie dem Modell Sicherheitseinstellungen hinzufügen, um Antworten zu generieren.
Mit diesem Feature werden Sicherheitsrichtlinien für das Modell festgelegt, um unsichere Inhalte zu blockieren.
lo_model->add_safety_settings( iv_harm_category = 'HARM_CATEGORY'
iv_harm_block_threshold = 'HARM_BLOCK_THRESHOLD'
iv_harm_block_method = 'HARM_BLOCK_METHOD' ).
Ersetzen Sie Folgendes:
HARM_CATEGORY
: Die Harm-Kategorie, die Sie anwenden möchten.HARM_BLOCK_THRESHOLD
: Die Schwellenwertebene, die Sie anwenden möchten.HARM_BLOCK_METHOD
: Die Methode zur Schadenssperre, die Sie anwenden möchten.
Bei jedem Methodenaufruf fügt die Methode ADD_SAFETY_SETTINGS
die angegebenen Sicherheitseinstellungen zur Modelleingabe hinzu.
Generierungskonfiguration für das Modell festlegen
Sie verwalten die Generierungskonfiguration für die Modelle in der Tabelle /GOOG/AI_CONFIG
.
Mit der Methode SET_GENERATION_CONFIG
können Sie die Generierungskonfiguration für einen bestimmten Aufruf überschreiben.
Wenn der Importparameter für ein generiertes Attribut festgelegt ist, wird der übergebene Parameterwert berücksichtigt.
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' ).
Ersetzen Sie Folgendes:
RESPONSE_MIME_TYPE
: MIME-Typ der Antwort für das Modell.TEMPERATURE
: Zufallstemperatur.TOP_P
: Top-P-Stichprobenerhebung.TOP_K
: Top-K-Stichprobenerhebung.CANDIDATE_COUNT
: Anzahl der zu generierenden Kandidaten.MAX_OUTPUT_TOKENS
: Maximale Anzahl an Ausgabetokens pro NachrichtPRESENCE_PENALTY
: Positive Strafen.FREQUENCY_PENALTY
: Strafen für die Häufigkeit.
Weitere Informationen zu diesen Parametern finden Sie unter Parameter für die Modellgenerierung konfigurieren.
Multimodale Eingabe an das Modell übergeben
Sie können die Gemini-Modelle mit multimodaler Eingabe aufrufen. Diese kann entweder aus Text, Bildern, Videos, Dokumenten oder einer Kombination dieser Elemente bestehen. Sie können die Eingabe entweder in Rohdatenform oder durch Angabe des Cloud Storage-URIs der Dateiobjekte übergeben.
Rohdaten festlegen
Wenn Sie die Rohdaten einer Datei zusammen mit dem MIME-Typ als Eingabe für das Modell bereitstellen möchten, können Sie die Methode SET_INLINE_DATA
verwenden.
Wenn Sie bei Videoeingaben nur einen bestimmten Teil eines Videos berücksichtigen möchten, können Sie die Start- und Endzeit mithilfe der optionalen Importparameter IV_VIDEO_START_OFFSET
und IV_VIDEO_END_OFFSET
festlegen.
lo_model->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'RAW_DATA' ).
Ersetzen Sie Folgendes:
MIME_TYPE
: Der IANA-Standard-MIME-Typ der Rohdaten. Standardmäßig ist der MIME-Typ aufapplication/pdf
festgelegt.RAW_DATA
: Base64-codierte Rohdaten des Bildes oder Videos, die inline in den Prompt aufgenommen werden sollen.
Wenn Sie die Rohdaten von Dateien mit derselben Instanz der Klasse /GOOG/CL_GENERATIVE_MODEL
aus der Eingabe des Modells entfernen möchten, können Sie die Methode CLEAR_INLINE_DATA
verwenden.
lo_model->clear_inline_data( ).
Objekte aus Cloud Storage festlegen
Wenn Sie den URI eines Dateiobjekts, das in einem Cloud Storage-Bucket gespeichert ist, zusammen mit dem MIME-Typ als Eingabe für das Modell angeben möchten, können Sie die Methode SET_FILE_DATA
verwenden.
Wenn Sie bei Videoeingaben nur einen bestimmten Teil eines Videos berücksichtigen möchten, können Sie die Start- und Endzeit mithilfe der optionalen Importparameter IV_VIDEO_START_OFFSET
und IV_VIDEO_END_OFFSET
festlegen.
lo_model->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI' ).
Ersetzen Sie Folgendes:
MIME_TYPE
: Der IANA-Standard-MIME-Typ der Dateidaten. Standardmäßig ist der MIME-Typ aufapplication/pdf
festgelegt.FILE_URI
: Der URI einer Datei, die in einem Cloud Storage-Bucket gespeichert ist.
Wenn Sie alle Dateien in einem Cloud Storage-Bucket als Eingabe an das Modell übergeben möchten, verwenden Sie die Methode SET_FILES_FROM_GCS
, um den Namen des Ziel-Cloud Storage-Buckets anzugeben.
lo_model->set_files_from_gcs( iv_storage_bucket_name = 'STORAGE_BUCKET_NAME').
Ersetzen Sie STORAGE_BUCKET_NAME
durch den Namen des Cloud Storage-Buckets, der die Dateien enthält.
Wenn Sie einen separaten Clientschlüssel zum Aufrufen der Cloud Storage API über das ABAP SDK for Google Cloud haben, übergeben Sie den Namen des Clientschlüssels im Importparameter IV_KEY_NAME
.
Um die über Cloud Storage-URIs festgelegten Objekte aus der Eingabe des Modells mit derselben Instanz der Klasse /GOOG/CL_GENERATIVE_MODEL
zu löschen, können Sie die Methode CLEAR_FILE_DATA
verwenden.
lo_model->clear_file_data( ).
MIME-Typ der Antwort festlegen
Mit der Methode SET_RESPONSE_MIME_TYPE
können Sie den MIME-Typ der Antwort festlegen, mit der das Modell antwortet.
Wenn dieser Wert nicht festgelegt ist, verwendet das Modell standardmäßig text/plain
als MIME-Typ der Antwort.
lo_model->set_response_mime_type( iv_mime_type = 'RESPONSE_MIME_TYPE' ).
Ersetzen Sie RESPONSE_MIME_TYPE
durch den Antwort-MIME-Typ des generierten Inhalts.
Anzahl der Tokens in einem Text-Prompt zählen
Wenn Sie die Anzahl der Tokens in einer Text-Prompt zählen möchten, bevor Sie das Modell mit dem Prompt aufrufen, können Sie die Methode COUNT_TOKENS
verwenden.
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( ).
Ersetzen Sie Folgendes:
PROMPT
: Ihr Text-Prompt.SYSTEM_INSTRUCTIONS
: Ihre Systemanweisung an das Modell.
Antwort von Gemini erhalten
Das SDK bietet die Klasse /GOOG/CL_MODEL_RESPONSE
, um verarbeitete Antworten vom Modell zu erhalten und für ABAP-Entwickler auf sinnvolle Weise zu präsentieren.
Die von der Klasse /GOOG/CL_MODEL_RESPONSE
erfasste Antwort wird mit den Anfragen verkettet, die über die Methoden der Klasse /GOOG/CL_GENERATIVE_MODEL
gestellt werden. Sie können also ohne direkte Anweisung auf die Antwort in einer einzigen Anweisung zugreifen. Variablen zum Speichern der Zwischenergebnisse.
Textantwort abrufen
Wenn Sie eine Textantwort vom Modell erhalten möchten, können Sie die Methode GET_TEXT
verwenden.
DATA(lv_response_text) = lo_model->generate_content( 'PROMPT'
)->get_text( ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Sicherheitsbewertung erhalten
Mit der Methode GET_SAFETY_RATING
können Sie eine Liste der Bewertungen für die Sicherheit der Antwort des Modells abrufen.
DATA(lt_safety_ratings) = lo_model->generate_content( 'PROMPT'
)->get_safety_rating( ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Anzahl der Tokens im Anfrage-Prompt abrufen
Um die Anzahl der Tokens in der Eingabeaufforderung an das Modell zu erhalten, können Sie die Methode GET_PROMPT_TOKEN_COUNT
verwenden.
DATA(lv_prompt_token_count) = lo_model->generate_content( 'PROMPT'
)->get_prompt_token_count( ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Anzahl der Tokens in der Antwort des Modells abrufen
Mit der Methode GET_CANDIDATES_TOKEN_COUNT
können Sie die Anzahl der Tokens in der Antwort vom Modell erhalten.
DATA(lv_candidates_token_count) = lo_model->generate_content( 'PROMPT'
)->get_candidates_token_count( ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Grund für die Blockierung abrufen
Mit der Methode GET_BLOCK_REASON
können Sie den Grund erhalten, für den das Modell die Antwortgenerierung blockiert hat.
DATA(lv_block_reason) = lo_model->generate_content( 'PROMPT'
)->get_block_reason( ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Mitteilung zum Grund für die Blockierung erhalten
Wenn Sie eine lesbare Begründung für das Blockieren der Antwortgenerierung durch das Modell erhalten möchten, können Sie die Methode GET_BLOCK_REASON_MESSAGE
verwenden.
DATA(lv_block_reason_message) = lo_model->generate_content( 'PROMPT'
)->get_block_reason_message( ).
Ersetzen Sie PROMPT
durch Ihren Text-Prompt.
Codebeispiele
Die folgenden Codebeispiele zeigen, wie die Gemini-Modelle aufgerufen werden, um Antworten für verschiedene Arten von Eingaben zu generieren.
Textbasierte Generierung
Das folgende Codebeispiel zeigt, wie Sie eine Antwort von einem Text-Prompt zusammen mit einer Systemanweisung generieren. Die Systemanweisung ist optional und kann zusammen mit der Eingabeaufforderung übergeben werden, um das Modell anzuweisen, sich auf eine bestimmte Weise zu verhalten.
Codebeispiel
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.
Ersetzen Sie Folgendes:
MODEL_KEY
: Der Name des Modellschlüssels, der in den Modellgenerierungsparametern konfiguriert ist.PROMPT
: Ihr Text-Prompt.SYSTEM_INSTRUCTIONS
: Ihre Systemanweisungen für das Modell.
Multimodale Generierung
Das folgende Codebeispiel zeigt, wie eine Antwort aus einer multimodalen Eingabe wie Text und einem Bild generiert wird. Sie können den Cloud Storage-URI oder die Rohdaten einer Datei eines Bildes, Videos oder Dokuments zusammen mit einem Text-Prompt erwähnen. Die Systemanweisung ist optional und kann zusammen mit der Eingabeaufforderung übergeben werden, um das Modell anzuweisen, sich auf eine bestimmte Weise zu verhalten.
Codebeispiel
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.
Ersetzen Sie Folgendes:
MODEL_KEY
: Der Name des Modellschlüssels, der in den Modellgenerierungsparametern konfiguriert ist.PROMPT
: Ihr Text-Prompt.SYSTEM_INSTRUCTIONS
: Ihre Systemanweisung an das Modell.MIME_TYPE
: Der IANA-Standard-MIME-Typ der Dateidaten. Standardmäßig ist der MIME-Typ aufapplication/pdf
festgelegt.FILE_URI
: Der URI einer Datei, die in einem Cloud Storage-Bucket gespeichert ist.INLINE_DATA
: Base64-codierte Rohdaten des Bildes oder Videos, die inline in den Prompt aufgenommen werden sollen.
Sicherheitseinstellungen für das Modell hinzufügen
Das folgende Codebeispiel zeigt, wie Sie dem Modell Sicherheitseinstellungen hinzufügen, damit es eine Antwort generieren kann.
Codebeispiel
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.
Ersetzen Sie Folgendes:
MODEL_KEY
: Der Name des Modellschlüssels, der in den Modellgenerierungsparametern konfiguriert ist.PROMPT
: Ihr Text-Prompt.SYSTEM_INSTRUCTIONS
: Ihre Systemanweisung an das Modell.MIME_TYPE
: Der IANA-Standard-MIME-Typ der Dateidaten. Standardmäßig ist der MIME-Typ aufapplication/pdf
festgelegt.FILE_URI
: Der URI einer Datei, die in einem Cloud Storage-Bucket gespeichert ist.INLINE_DATA
: Base64-codierte Rohdaten des Bildes oder Videos, die inline in den Prompt aufgenommen werden sollen.HARM_CATEGORY
: Die Harm-Kategorie, die Sie anwenden möchten.HARM_BLOCK_THRESHOLD
: Die Schwellenwertebene, die Sie anwenden möchten.HARM_BLOCK_METHOD
: Die Methode zur Schadenssperre, die Sie anwenden möchten.
Anzahl der Tokens und abrechenbaren Zeichen in einem Prompt ermitteln
Bevor Sie das Modell mit einem Prompt aufrufen, sollten Sie die Anzahl der Tokens in Ihrem Prompt und die Anzahl der abrechenbaren Zeichen in Ihrem Token prüfen, um die Abrechnung Ihres Google Cloud-Projekts zu planen. Im folgenden Codebeispiel wird gezeigt, wie Sie diese Nummern ermitteln und Ihre Abrechnung für einen ähnlichen Modellaufruf bewerten.
Codebeispiel
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.
Ersetzen Sie Folgendes:
PROMPT
: Ihr Text-Prompt.MODEL_KEY
: Der Name des Modellschlüssels, der in den Modellgenerierungsparametern konfiguriert ist.
Nächste Schritte
In den Cloud-Foren können Sie Ihre Fragen stellen und mit der Community über das Vertex AI SDK sprechen.