Die Generative Language API von Google ermöglicht das nahtlose Prototyping mit den Gemini-Modellen. Sie können die Funktionen von Gemini-Modellen testen und erkunden, ohne eine komplexe Infrastruktur einrichten oder eine Modellbereitstellung verwalten zu müssen. Das browserbasierte Prototyping-Tool Google AI Studio von Google nutzt die Generative Language API, um browserbasiertes Prototyping mit generativen Modellen zu ermöglichen.
Mit dem Vertex AI SDK für ABAP können Sie die Generative Language API – Gemini API verwenden, um das Prototyping direkt in Ihrer ABAP-Umgebung zu starten. Sie benötigen einen API-Schlüssel, der in Google AI Studio generiert wurde, um auf die Gemini-Modelle zuzugreifen. Sie müssen diesen API-Schlüssel nur einmal generieren.
API-Schlüssel generieren
Der API-Schlüssel, den Sie in Google AI Studio generieren, bietet eine praktische Möglichkeit, sich bei der Gemini API zu authentifizieren.
So generieren Sie einen API-Schlüssel:
Öffnen Sie in Google AI Studio die Seite API-Schlüssel.
Klicken Sie auf API-Schlüssel erstellen.
Wenn das Feld ausgefüllt ist, lesen Sie den rechtlichen Hinweis und bestätigen ihn. Klicken Sie dann auf Weiter.
Wenn ein Wert angegeben ist, lesen und bestätigen Sie die Erinnerung zu Sicherheitseinstellungen.
Wählen Sie im Dialogfeld API-Schlüssel erstellen eine der folgenden Optionen aus:
- API-Schlüssel in neuem Projekt erstellen
- API-Schlüssel in einem vorhandenen Projekt erstellen
Kopieren Sie den Schlüsselstring und bewahren Sie ihn sicher auf. Sie benötigen diesen API-Schlüssel, um die Authentifizierung bei der Gemini API zu konfigurieren.
Kopieren Sie die Projektnummer des Google Cloud-Projekts, in dem der API-Schlüssel generiert wird. Sie benötigen diese Informationen in einem späteren Schritt.
Authentifizierung einrichten
Verwenden Sie eine der folgenden Methoden, um sich mit einem API-Schlüssel bei der Gemini API zu authentifizieren:
- Mit einem API-Schlüssel über eine benutzerdefinierte Authentifizierungsklasse authentifizieren
- Mit einem in Secret Manager gespeicherten API-Schlüssel authentifizieren
Mit einem API-Schlüssel über eine benutzerdefinierte Authentifizierungsklasse authentifizieren
Sie können eine benutzerdefinierte Authentifizierungsklasse erstellen, um Ihren API-Schlüssel zu behalten, und einen Clientschlüssel mit der benutzerdefinierten Authentifizierungsklasse konfigurieren.
Erstellen Sie in Ihrer SAP BTP-ABAP-Umgebung eine neue Klasse, indem Sie die Klasse
/GOOG/CL_AUTH_BASE
erben, die mit dem ABAP SDK for Google Cloud geliefert wird:- Klicken Sie in der Eclipse-Plattform mit der rechten Maustaste auf das Paket, in dem Sie eine Klasse erstellen möchten, und dann auf Neu > ABAP-Klasse.
- Geben Sie im Feld Name
ZCL_TEST_GEMINI_API
ein. - Geben Sie im Feld Beschreibung den Wert
Authentication Class for testing Gemini API
ein. - Geben Sie im Feld Superclass (Superklasse) den Wert
/GOOG/CL_AUTH_BASE
ein. - Klicken Sie auf Weiter.
- Wählen Sie eine Transportanfrage aus oder erstellen Sie eine neue.
- Klicken Sie auf Beenden.
Ersetzen Sie im Editor den vorhandenen Code durch Folgendes:
CLASS zcl_test_gemini_api DEFINITION PUBLIC INHERITING FROM /goog/cl_auth_base FINAL CREATE PUBLIC. PUBLIC SECTION. CONSTANTS: BEGIN OF c_com_scn_sdk, wif TYPE /goog/comm_scenario VALUE '/GOOG/COM_SDK_WIF', apik_sm TYPE /goog/comm_scenario VALUE '/GOOG/COM_SDK_APIKSM', END OF c_com_scn_sdk. METHODS get_access_token REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_test_gemini_api IMPLEMENTATION. METHOD get_access_token. ev_auth_type = CONV #( apikey_sm ). ev_token = API_KEY. ENDMETHOD. ENDCLASS.
Ersetzen Sie
API_KEY
durch den API-Schlüssel, den Sie in Google AI Studio generiert haben.Aktiviere deinen
Z
-Kurs.Rufen Sie die Eigenschaften dieser Klasse auf, gehen Sie zum Tab API-Status und veröffentlichen Sie die API dann mit dem Vertragsstatus
C1
.Weitere Informationen zum API-Status finden Sie unter Entwicklungsobjekte veröffentlichen.
Rufen Sie das SAP Fiori-Start-Dashboard des BTP ABAP-Systems auf, in dem das ABAP SDK for Google Cloud installiert ist.
Rufen Sie die App Google SDK: Hauptkonfiguration auf und führen Sie die folgenden Schritte aus:
- Klicken Sie auf Erstellen.
Geben Sie im Dialogfeld Neuen Eintrag erstellen Werte für die folgenden Felder ein:
Feld Beschreibung Google Cloud-Schlüsselname Geben Sie einen Namen für die Konfiguration des Clientschlüssels an, z. B. GEMINI_QUICK_TEST
.Name des Google Cloud-Dienstkontos Lassen Sie dieses Feld leer. Google Cloud-Bereich Lassen Sie dieses Feld leer. Google Cloud-Projekt-ID Geben Sie die Projekt-ID des Google Cloud-Projekts an, in dem Sie den API-Schlüssel erstellt haben. Google Cloud-Projektnummer Geben Sie die Projektnummer des Google Cloud-Projekts an, in dem Sie den API-Schlüssel erstellt haben. Authentifizierungstyp Wählen Sie Z
aus.Authentifizierungsklasse Wählen Sie die Klasse ZCL_TEST_GEMINI_API
aus, die Sie in einem vorherigen Schritt erstellt haben.Speichern Sie den neuen Eintrag.
Notieren Sie sich den Clientschlüssel. Sie verwenden diesen Clientschlüssel für die Authentifizierung.
Beispielcode ausführen
Sie können die Funktionen der Gemini API ausprobieren, indem Sie den folgenden Beispielcode ausführen:
Klicken Sie in der Eclipse-Plattform mit der rechten Maustaste auf das Paket, in dem Sie eine Klasse erstellen möchten, und dann auf Neu > ABAP-Klasse.
Geben Sie im Feld Name
ZCL_INVOKE_LLM
ein.Geben Sie im Feld Beschreibung den Text
Sample class for testing Gemini API
ein.Klicken Sie auf Weiter.
Wählen Sie eine Transportanfrage aus oder erstellen Sie eine neue.
Klicken Sie auf Beenden.
Ersetzen Sie im Editor den vorhandenen Code durch den folgenden Code:
CLASS zcl_invoke_llm DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES if_oo_adt_classrun. ENDCLASS. CLASS zcl_invoke_llm IMPLEMENTATION. METHOD if_oo_adt_classrun~main. DATA lv_sys_instruction TYPE string. DATA lv_client_key TYPE /goog/keyname. DATA lv_model_id TYPE string. DATA lv_max_tokens TYPE int4. DATA lv_resp_mime_type TYPE string. DATA lv_prompt TYPE string. DATA lv_temperature TYPE /goog/num_float. DATA lv_top_k TYPE int4. DATA lv_top_p TYPE /goog/num_float. DATA ls_input TYPE /goog/cl_generativelang_v1beta=>ty_045. DATA ls_output TYPE /goog/cl_generativelang_v1beta=>ty_046. DATA ls_part TYPE /goog/cl_generativelang_v1beta=>ty_068. DATA lt_parts TYPE /goog/cl_generativelang_v1beta=>ty_t_068. DATA ls_content TYPE /goog/cl_generativelang_v1beta=>ty_018. DATA lv_msg TYPE string. DATA ls_raw TYPE string. DATA lv_err_msg TYPE string. DATA lo_cx_sdk TYPE REF TO /goog/cx_sdk. " TODO Developer: Set values for Mandatory Fields lv_model_id = 'gemini-1.5-flash'. " You can also change the Model ID of your choosing lv_client_key = 'GEMINI_QUICK_TEST'. " Client key configured " TODO Developer: Set values for Optional Fields, if required " lv_temperature = " lv_top_k = " lv_top_p = " lv_max_tokens = " TODO Developer: (Optional) Set the System Instruction lv_sys_instruction = 'You are an Italian Chef in a 5 Star Restaurant'. " TODO Developer: (Mandatory) Set the Prompt lv_prompt = 'Give me a recipe to make Margarita Pizza'. IF lv_temperature IS NOT INITIAL. ls_input-generation_config-temperature = lv_temperature. ENDIF. IF lv_top_k IS NOT INITIAL. ls_input-generation_config-top_k = lv_top_k. ENDIF. IF lv_top_p IS NOT INITIAL. ls_input-generation_config-top_p = lv_top_p. ENDIF. IF lv_max_tokens IS NOT INITIAL. ls_input-generation_config-max_output_tokens = lv_max_tokens. ENDIF. IF lv_sys_instruction IS NOT INITIAL. ls_input-system_instruction-role = 'system'. ls_part-text = lv_sys_instruction. APPEND ls_part TO ls_input-system_instruction-parts. CLEAR ls_part. ENDIF. ls_content-role = 'user'. IF lv_prompt IS NOT INITIAL. ls_part-text = lv_prompt. APPEND ls_part TO ls_content-parts. CLEAR ls_part. ENDIF. APPEND ls_content TO ls_input-contents. CLEAR ls_content. TRY. DATA(lo_llm_invoker) = NEW /goog/cl_generativelang_v1beta( iv_key_name = lv_client_key ). CATCH /goog/cx_sdk INTO lo_cx_sdk. lv_err_msg = lo_cx_sdk->get_text( ). out->write( |Exception occurred, reason: { lv_err_msg }| ). ENDTRY. TRY. lo_llm_invoker->generate_content_models( EXPORTING iv_p_models_id = lv_model_id is_input = ls_input IMPORTING es_raw = ls_raw es_output = ls_output ev_ret_code = DATA(lv_ret_code) ev_err_text = DATA(lv_err_text) es_err_resp = DATA(ls_err_resp) ). CATCH /goog/cx_sdk INTO lo_cx_sdk. lv_err_msg = lo_cx_sdk->get_text( ). out->write( |Exception occurred, reason: { lv_err_msg }| ). RETURN. ENDTRY. IF lo_llm_invoker->is_success( lv_ret_code ) = abap_true. ASSIGN ls_output-candidates[ 1 ] TO FIELD-SYMBOL(<ls_candidate>). IF sy-subrc = 0. lt_parts = <ls_candidate>-content-parts. ASSIGN lt_parts[ 1 ] TO FIELD-SYMBOL(<ls_part>). IF sy-subrc = 0. DATA(lv_response) = <ls_part>-text. out->write( lv_response ). ELSE. out->write( |Model stopped generating response due to finish reason: { <ls_candidate>-finish_reason }| ). out->write( |Read more about finish reason in the below link:| ). out->write( |https://cloud.google.com/vertex-ai/docs/reference/rest/v1/GenerateContentResponse#FinishReason| ). ENDIF. ENDIF. ELSE. out->write( |Error occurred, reason: { lv_ret_code }:{ lv_err_text }| ). ENDIF. ENDMETHOD. ENDCLASS.
Aktivieren Sie Ihren Kurs.
Führen Sie den ABAP-Code aus.
KI-Anwendungsfälle mit ABAP prototypisieren
Sie können SAP-Anwendungsprototypen mit den Klassen /GOOG/CL_GENERATIVELANGUAGE_V1
und /GOOG/CL_GENERATIVELANG_V1BETA
erstellen, die mit dem SDK geliefert wurden. Sie können diese Klassen über den Clientschlüssel aufrufen, den Sie im Abschnitt Authentifizierung einrichten erstellt haben.
Nächste Schritte
- Vertex AI SDK für ABAP installieren und konfigurieren.
- Generative AI in Vertex AI für SAP
- In den Cloud-Foren können Sie Ihre Fragen stellen und über das Vertex AI SDK für ABAP mit der Community sprechen.