Gemini-Modelle aufrufen

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:

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:

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 Nachricht
  • PRESENCE_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 auf application/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 auf application/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:

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:

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 auf application/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 auf application/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:

Nächste Schritte