Google 的 Generative Language API 可让您使用 Gemini 模型进行无缝原型设计。借助该模块,您无需设置复杂的基础架构或管理模型部署,即可测试和探索 Gemini 模型的功能。Google 的基于浏览器的原型设计工具 Google AI Studio 使用 Generative Language API 来支持使用生成模型进行基于浏览器的原型设计。
借助 Vertex AI SDK for ABAP,您可以直接在 ABAP 环境中使用 Generative Language API (Gemini API) 开始原型设计之旅。您需要使用 Google AI Studio 生成的 API 密钥才能访问 Gemini 模型。您只需生成一次此 API 密钥。
生成 API 密钥
您通过 Google AI Studio 生成的 API 密钥可让您轻松向 Gemini API 进行身份验证。
如需生成 API 密钥,请执行以下步骤:
在 Google AI 工作室中,打开 API 密钥页面。
点击创建 API 密钥。
如果已填充,请阅读并确认法律声明,然后点击继续。
如果已填充,请阅读并确认安全设置提醒。
在创建 API 密钥对话框中,根据需要选择以下选项之一:
- 在新项目中创建 API 密钥
- 在现有项目中创建 API 密钥
请复制您的密钥字符串,并确保其安全。您需要使用此 API 密钥来配置对 Gemini API 的身份验证。
复制生成 API 密钥的 Google Cloud 项目的项目编号。您将在后续步骤中用到它。
设置身份验证
如需使用 API 密钥向 Gemini API 进行身份验证,请使用以下方法之一:
- 对于本地版本或任何云版本的 ABAP SDK for Google Cloud:
- 对于 SAP BTP 版本的 ABAP SDK for Google Cloud:
使用存储在 SAP SSF 中的 API 密钥进行身份验证
为确保 API 密钥的安全,您可以将生成的 API 密钥存储在 SAP SSF 中,并使用 SSF 身份验证类配置客户端密钥。您可以使用此客户端密钥访问 Gemini API。如需了解详情,请参阅以下主题:
通过自定义身份验证类使用 API 密钥进行身份验证
或者,您也可以创建自定义身份验证类来保留 API 密钥,并使用自定义身份验证类配置客户端密钥。
本地版本或任何云版本
在 SAP 系统中,通过实现 ABAP SDK for Google Cloud 随附的接口
/GOOG/IF_AUTH
来创建Z
类:- 在 SAP GUI 中,执行事务代码
SE24
。 - 在对象类型字段中,输入一个名称(例如
Z_TEST_GEMINI_API
),然后点击创建。 - 确保对象类型为类,然后点击确定。
- 在说明字段中,提供类的说明(例如
Class for authentication to Google AI Studio
),然后将类另存为本地对象或传输请求。 - 打开接口标签页,添加接口
/GOOG/IF_AUTH
,然后按 Enter 键。 - 打开方法标签页。接口
/GOOG/IF_AUTH
的方法会自动实现到Z
类中。 - 双击方法
/GOOG/IF_AUTH~GET_ACCESS_TOKEN
。 在
/GOOG/IF_AUTH~GET_ACCESS_TOKEN
方法中,添加以下代码:ev_auth_type = /goog/if_auth=>c_auth_type_apik_ssf. cv_token = 'API_KEY'. GET TIME STAMP FIELD ev_logtime.
将
API_KEY
替换为您在 Google AI 工作室中生成的 API 密钥。激活
Z
类。
- 在 SAP GUI 中,执行事务代码
在 SAP 系统中,创建客户端密钥配置:
在 SAP GUI 中,执行事务代码
/GOOG/SDK_IMG
。或者,执行事务代码
SPRO
,然后点击 SAP Reference IMG。点击 ABAP SDK for Google Cloud > 基本设置 > 配置客户端密钥。
点击新建条目。
输入以下字段的值:
字段 说明 Google Cloud 密钥名称 指定客户端密钥配置的名称,例如 TEST_GEMINI_API
。Google Cloud 服务账号名称 将此字段留空。 Google Cloud 范围 将此字段留空。 Google Cloud 项目标识符 指定存储 API 密钥的 Google Cloud 项目的项目编号。 命令名称 将此字段留空。 授权类 指定您在上一步中创建的 Z
类,例如Z_TEST_GEMINI_API
。令牌缓存 将此字段留空。
令牌刷新秒数 将此字段留空。 授权参数 1 将此字段留空。 授权参数 2 将此字段留空。 - 保存新条目。
记下客户端密钥。您可以使用此客户端密钥进行身份验证。
SAP BTP 版本
在 SAP BTP、ABAP 环境中,通过继承 ABAP SDK for Google Cloud 随附的
/GOOG/CL_AUTH_BASE
类来创建新类:- 在 Eclipse 平台中,右键点击要创建类的软件包,然后依次点击新建 > ABAP 类。
- 在名称字段中,输入
ZCL_TEST_GEMINI_API
。 - 在说明字段中,输入
Authentication Class for testing Gemini API
。 - 在超类字段中,输入
/GOOG/CL_AUTH_BASE
。 - 点击下一步。
- 选择一个传输请求或创建一个新请求。
- 点击完成。
在编辑器中,将现有代码替换为以下代码:
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.
将
API_KEY
替换为您在 Google AI 工作室中生成的 API 密钥。激活
Z
类。前往此类的属性,然后前往 API 状态标签页,然后发布具有合约状态
C1
的 API。如需详细了解 API 状态,请参阅发布开发对象。
访问安装了 ABAP SDK for Google Cloud 的 BTP ABAP 系统的 SAP Fiori launchpad。
访问 Google SDK: Main Configuration 应用,然后执行以下步骤:
- 点击创建。
在创建新条目对话框中,为以下字段输入值:
字段 说明 Google Cloud 密钥名称 指定客户端密钥配置的名称,例如 GEMINI_QUICK_TEST
。Google Cloud 服务账号名称 将此字段留空。 Google Cloud 范围 将此字段留空。 Google Cloud 项目标识符 指定您创建 API 密钥的 Google Cloud 项目的项目 ID。 Google Cloud 项目编号 指定您创建 API 密钥的 Google Cloud 项目的项目编号。 身份验证类型 选择 Z
。Authentication Class 选择您在上一步中创建的 ZCL_TEST_GEMINI_API
类。保存新条目。
记下客户端密钥。您可以使用此客户端密钥进行身份验证。
运行示例代码
本地版本或任何云版本
您可以使用随附于 Vertex AI SDK for ABAP 的 AI Studio 演示版来探索 Gemini API 功能。
如需运行 AI Studio 演示版,请执行以下步骤:
在 SAP GUI 中,执行事务代码
/GOOG/SDK_IMG
。或者,执行事务代码
SPRO
,然后点击 SAP Reference IMG。转到 ABAP SDK for Google Cloud > 演示。
打开 Vertex AI SDK:演示:使用 Generative Language API 进行原型设计。
在客户端密钥字段中,输入您在设置身份验证部分中创建的客户端密钥。
在模型 ID 字段中,输入您要使用的 LLM 模型的 ID,例如
gemini-1.5-flash
。如需了解可用的模型,请参阅模型变体。酌情根据需要提供以下生成参数:
- 输出词元数上限
- 响应 MIME 类型
- 温度
- TopK
- TopP
如需了解这些模型生成参数,请参阅使用参数值进行实验。
在输入系统指令字段中,提供系统指令。
在输入提示字段中,提供您的输入提示。
运行此程序。来自 LLM 的响应区域显示生成的输出。
SAP BTP 版本
您可以通过运行以下示例代码来探索 Gemini API 功能:
在 Eclipse 平台中,右键点击要创建类的软件包,然后依次点击新建 > ABAP 类。
在名称字段中,输入
ZCL_INVOKE_LLM
。在说明字段中,输入
Sample class for testing Gemini API
。点击下一步。
选择一个传输请求或创建一个新请求。
点击完成。
在编辑器中,将现有代码替换为以下代码:
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.
激活您的课程。
运行 ABAP 代码。
使用 ABAP 的原型 AI 用例
您可以使用 SDK 随附的 /GOOG/CL_GENERATIVELANGUAGE_V1
和 /GOOG/CL_GENERATIVELANG_V1BETA
类构建 SAP 应用原型。您可以使用在设置身份验证部分中创建的客户端密钥从 ABAP 环境中调用这些类。
后续步骤
- 了解如何安装和配置 Vertex AI SDK for ABAP。
- 探索内置的适用于 SAP 的生成式 AI 演示程序。
- 了解 Vertex AI for SAP 上的生成式 AI。
- 在 Cloud 论坛上提出问题并与社区讨论 Vertex AI SDK for ABAP。