1. 简介
在此 Codelab 中,您将使用 Gemini Pro 模型通过 ABAP SDK for Google Cloud 对商品评价进行情感分析。我们将介绍设置身份验证的步骤,以便在 SAP 系统托管在 Compute Engine 虚拟机实例上时使用令牌访问 Google Cloud Vertex AI API。
使用的服务列表如下:
- Compute Engine
- 网络服务
- Cloud Shell
- Vertex AI
构建内容
您将执行以下操作:
- 配置安装在 SAP 系统上的 ABAP SDK,以连接到 Google API。
- 创建一个示例报告程序,以调用 Gemini AI 并对商品评价执行情感分析。
2. 要求
- 一个浏览器,例如 Chrome 或 Firefox。
- 已启用结算功能的 Google Cloud 项目,或为 Google Cloud Platform 创建 90 天免费试用账号。
- 系统中安装了 SAP GUI(Windows 或 Java 版)。如果您的系统上已安装 SAP GUI,请使用虚拟机外部 IP 地址作为应用服务器 IP 地址连接到 SAP。如果您使用的是 Mac,则还可以安装 此链接中提供的 SAP GUI for Java。
3. 准备工作
- 在 Google Cloud 控制台的“项目选择器”页面上,选择或创建一个 Google Cloud 项目(例如:
abap-sdk-poc).
- 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。如果您使用的是90 天免费试用账号,请跳过此步骤。
- 您将使用 Cloud Shell,它是在 Google Cloud 中运行的命令行环境。在 Cloud 控制台中,点击右上角的激活 Cloud Shell:
- 确保已启用所有必要的 API(AM Service Account Credentials API、Vertex AI API)。
- 运行以下命令以对您的账号进行身份验证,并将默认项目设置为
abap-sdk-poc
。以区域us-west4-b
为例。如果需要,请根据您的偏好更改以下命令中的项目和可用区。
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
PROJECT_NAME=abap-sdk-poc
REGION=us-west4
ZONE=us-west4-b
- 确保您有权访问安装了 ABAP SDK for Google Cloud 且包含 SAP EPM 数据的 SAP 系统。
- 您可以参阅 Codelab“在 Google Cloud Platform 上安装 ABAP Platform Trial 并安装 ABAP SDK”来设置新系统。
4. 创建服务账号并设置 Vertex AI 用户角色
- 运行以下命令以创建服务账号(如果尚未创建)。
gcloud iam service-accounts create abap-sdk-dev \
--description="ABAP SDK Dev Account" \
--display-name="ABAP SDK Dev Account"
- 运行以下命令以设置 Vertex AI User 角色。
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
--role=roles/aiplatform.user
5. 配置客户端密钥
登录 SAP 系统。如果您使用的是“在 Google Cloud Platform 上安装 ABAP 平台试用版并安装 ABAP SDK”这项 Codelab 预配的系统,请使用预配的默认用户名和密码登录。
- 在 SAP GUI 中,输入事务代码 SPRO。
- 点击 SAP 参考 IMG。
- 点击 ABAP SDK for Google Cloud > 基本设置 > 配置客户端密钥。
- 点击新建条目。
- 输入以下字段的值:
字段 | 说明 |
Google Cloud 密钥名称 | ABAP_SDK_DEMO |
Google Cloud 服务账号名称 | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud 范围 | https://www.googleapis.com/auth/cloud-platform |
Google Cloud 项目标识符 | abap-sdk-poc |
授权类 | /GOOG/CL_AUTH_GOOGLE。 |
将其他字段留空
6. 创建 RFC 目标
使用事务代码 SM59 为 IAM 凭据和 Vertex AI API 创建 RFC 目标。如有需要,请参阅此处,了解有关创建 RFC 目标的详细步骤。
RFC 目标名称 | 目标主机(API 端点) | 备注 |
ZGOOG_IAMCREDENTIALS |
| 此 RFC 目标以 IAM API 为目标。 |
ZGOOG_VERTEX_AI |
| 此 RFC 目标以 Vertex AI API us-central1 端点为目标。 |
- 在技术设置标签页下,为 ZGOOG_IAMCREDENTIALS 目标输入以下详细信息。
- 在技术设置标签页下,为 ZGOOG_VERTEX_AI 目标平台输入以下详细信息。
- 对于 SSL Certificate(SSL 证书)字段,请确保为两个 RFC 目的地都选择了 DEFAULT SSL Client (Standard)(默认 SSL 客户端 [标准])选项。
7. 配置服务映射
如需为 IAM API 和 Vertex AI API 配置服务映射表,请执行以下步骤:
- 在 SAP GUI 中,输入事务代码 SPRO。
- 点击 SAP 参考 IMG。
- 点击 ABAP SDK for Google Cloud > 基本设置 > 配置服务映射。
- 针对 IAM 凭据和 Vertex AI API 点击新建条目,然后更新 RFC 目标,如下所示。
8. 验证配置
如需验证身份验证配置,请执行以下步骤:
- 在 SAP GUI 中,输入事务代码 SPRO。
- 点击 SAP 参考 IMG。
- 点击 ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration。
- 将客户端密钥名称输入为
ABAP_SDK_DEMO
。 - 点击 Execute 以检查整体流是否已成功配置。
- “结果”列中的绿色对勾标记表示所有配置步骤均已成功完成。
9. 研究商品评价数据
ABAP 平台试用版预安装了 SAP 企业采购模型 (EPM),这是 SAP 提供的用于演示和测试的端到端应用。用于情感分析的商品评价存储在表 SNWD_REV_ITEM 中。
您可以使用 Tcode:SE16 查看表数据。我们将使用“RATING_TEXT”字段中的示例文本。
您还可以通过以下方式查看数据:从 Fiori Launchpad 访问应用“Manager Products”(TCode:/UI2/FLP)。
以下屏幕截图显示了商品列表。
点击相应商品可查看商品评分和评价示例。
在下一部分中,我们将使用这些示例商品评价,通过 Google LLM 分析情感。
10. 使用 Vertex AI Studio 分析情感
- 打开 Vertex AI 信息中心,然后选择 Vertex AI Studio 下的语言。
- 创建新的文本提示。
- 确认选择 Gemini Pro 模型。
- 在编辑器中,输入以下提示,指示模型分析商品评价中的客户情绪。
- 点击提交以生成模型的回答。
提示:
What's the Customer sentiment in the below product review
Horrible! Unsatisfied in every way! The description is wrong. I sent it back. I want my money back! It is so horrible that I can't even believe it! Too expensive for what I received. I'd expect a little more durability. No instructions included for use or installation. I'm actually really surprised by the positive reviews, which I relied on when ordering. Called customer service..no answer. Looks better than it works. The Worst I have ever seen! Honestly I have no clue what you had in mind when choosing to offer this product. Not sure if I should even post one star.... It broke after 1 day. Poor Quality. Didn't work, that is why I cannot recommend this product.
您可以使用“SNWD_REV_ITEM”表中的评价数据,通过其他问题来测试模型。
11. 创建一个报告程序来调用 Gemini Pro 模型
在此步骤中,我们将从 ABAP 调用 Gemini Pro 模型,以对商品评价进行情感分析。出于演示目的,该程序最多会选择 10 条商品评价,并使用 ABAP SDK 调用 Gemini Pro 模型,以确定每条评价的情感。根据分析结果,该模型可以返回“正面”“负面”“中性”或“混合”等值。
- 登录您的 SAP 系统。
- 前往事务代码 SE38,然后创建一个名为 ZSENTIMENT_ANALYSIS 的报告程序。
- 在随即打开的弹出式窗口中,提供详细信息(如下所示),然后点击保存。
- 在下一个弹出式窗口中,选择本地对象或根据需要提供软件包名称。
REPORT zsentiment_analysis.
DATA lo_client TYPE REF TO /goog/cl_aiplatform_v1.
DATA lv_p_projects_id TYPE string.
DATA lv_p_locations_id TYPE string.
DATA lv_p_publishers_id TYPE string.
DATA lv_p_models_id TYPE string.
DATA ls_input TYPE /goog/cl_aiplatform_v1=>ty_726.
DATA ls_output TYPE /goog/cl_aiplatform_v1=>ty_727.
DATA lv_ret_code TYPE i.
DATA lv_err_text TYPE string.
DATA ls_err_resp TYPE /goog/err_resp.
DATA lv_msg TYPE string.
DATA lo_exception TYPE REF TO /goog/cx_sdk.
DATA es_raw TYPE string.
TYPES:
BEGIN OF t_reviews,
product_id TYPE snwd_product_id,
sentiment TYPE string,
rating_text TYPE snwd_rating_text,
END OF t_reviews.
DATA lt_reviews TYPE STANDARD TABLE OF t_reviews WITH DEFAULT KEY.
FIELD-SYMBOLS <fs_review> TYPE t_reviews.
TRY.
" Open HTTP Connection
lo_client = NEW #( iv_key_name = 'ABAP_SDK_DEMO' ).
" Populate relevant parameters
lv_p_projects_id = lo_client->gv_project_id.
lv_p_locations_id = 'us-central1'.
lv_p_publishers_id = 'google'.
lv_p_models_id = 'gemini-1.0-pro'.
SELECT a~product_id AS product_id c~rating_text
FROM ( ( snwd_pd AS a
INNER JOIN snwd_rev_head AS b ON a~node_key = b~entity_key )
INNER JOIN snwd_rev_item AS c ON b~node_key = c~parent_key )
INTO CORRESPONDING FIELDS OF TABLE lt_reviews UP TO 10 ROWS.
LOOP AT lt_reviews ASSIGNING <fs_review>.
" Construct the prompt
DATA(lv_prompt) = |DO NOT EXPLAIN and your response should not have more than one word.| &&
|Classify the overall sentiment of this product review as ONLY ONE of| &&
| the following: Positive, Negative, Neutral, or Mixed.| &&
cl_abap_char_utilities=>newline &&
<fs_review>-rating_text.
" Set the Model Parameters and Prompt
ls_input = VALUE #( generation_config = VALUE #( max_output_tokens = 10
temperature = '0.2'
top_p = '0.8'
top_k = '40' )
contents = VALUE #( ( role = 'user'
parts = VALUE #( ( text = lv_prompt ) ) ) ) ).
" Call Gemini Pro to identify sentiments.
lo_client->generate_content_models( EXPORTING iv_p_projects_id = lv_p_projects_id
iv_p_locations_id = lv_p_locations_id
iv_p_publishers_id = lv_p_publishers_id
iv_p_models_id = lv_p_models_id
is_input = ls_input
IMPORTING
es_output = ls_output
ev_ret_code = lv_ret_code
ev_err_text = lv_err_text
es_err_resp = ls_err_resp ).
IF lo_client->is_success( lv_ret_code ) = abap_true.
LOOP AT ls_output-candidates INTO DATA(ls_candidate).
LOOP AT ls_candidate-content-parts INTO DATA(ls_part).
<fs_review>-sentiment = ls_part-text.
EXIT.
ENDLOOP.
EXIT.
ENDLOOP.
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
ENDLOOP.
cl_demo_output=>display( lt_reviews ).
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO lo_exception.
lv_msg = lo_exception->get_text( ).
MESSAGE lv_msg TYPE 'E'.
ENDTRY.
- 执行该程序,查看评价文本的情感分析结果。
12. 恭喜
恭喜!您已成功开发了一个示例程序,该程序可使用 ABAP SDK for Google Cloud 搭配 Gemini Pro AI 执行情感分析。
13. 清理
如果您不想继续学习与 ABAP SDK for Google Cloud 相关的其他 Codelab,请继续进行清理。
删除项目
- 删除 Google Cloud 项目:
gcloud projects delete abap-sdk-poc
删除各个资源
- 依次前往 IMG > Google Cloud > 基本设置 > 配置客户端密钥,删除客户端密钥配置条目。
- 依次前往 IMG > Google Cloud > 基本设置 > 配置客户端密钥,删除服务映射配置条目。
- 删除 RFC 目标 ZGOOG_IAMCREDENTIALS 和 ZGOOG_VERTEX_AI。
- 删除报告计划
ZSENTIMENT_ANALYSIS
.
- 删除服务账号。
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com