1. はじめに
この Codelab では、Gemini Pro モデルを使用して、ABAP SDK for Google Cloud で商品レビューの感情分析を行います。SAP システムが Compute Engine VM インスタンスでホストされている場合に、トークンを使用して Google Cloud Vertex AI API の認証を行う手順について説明します。
使用されるサービスのリストは次のとおりです。
- Compute Engine
- ネットワーク サービス
- Cloud Shell
- Vertex AI
作成するアプリの概要
次の操作を行います。
- Google API に接続するように、SAP システムにインストールされている ABAP SDK を構成します。
- Gemini AI を呼び出して商品レビューの感情分析を行うサンプル レポート プログラムを作成します。
2. 要件
- ブラウザ(Chrome、Firefox など)
- 課金が有効になっている Google Cloud プロジェクト、または Google Cloud Platform の90 日間の無料トライアル アカウントを作成します。
- システムにインストールされている SAP GUI(Windows または Java)。SAP GUI がシステムにすでにインストールされている場合は、VM の外部 IP アドレスをアプリケーション サーバー IP として使用して SAP に接続します。Mac を使用している場合は、こちらのリンクから SAP GUI for Java をインストールすることもできます。
3. 始める前に
- Google Cloud コンソールのプロジェクト セレクタページで、Google Cloud プロジェクトを選択または作成します(例:
abap-sdk-poc).
- Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。90 日間の無料試用アカウントを使用している場合は、この手順をスキップしてください。
- Google Cloud 上で動作するコマンドライン環境の Cloud Shell を使用します。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 ユーザーロールを設定します。
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
--role=roles/aiplatform.user
5. クライアント キーを構成する
SAP システムにログインします。Codelab「Google Cloud Platform に ABAP Platform Trial をインストールして ABAP SDK をインストールする」でプロビジョニングされたシステムを使用している場合は、デフォルトでプロビジョニングされたユーザー名とパスワードを使用してログインします。
- SAP GUI で、トランザクション コード SPRO を入力します。
- [SAP 参照 IMG] をクリックします。
- [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Client Key] をクリックします。
- [New Entries] をクリックします。
- 次のフィールドに値を入力します。
フィールド | 説明 |
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 プロジェクト ID | 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 エンドポイントをターゲットとしています。 |
- [Technical Settings] タブで、ZGOOG_IAMCREDENTIALS の宛先に次の詳細を入力します。
- [Technical Settings] タブで、ZGOGOG_VERTEX_AI の宛先に次の詳細を入力します。
- [SSL Certificate] フィールドで、両方の RFC 宛先で [DEFAULT SSL Client (Standard)] オプションが選択されていることを確認します。
7. サービス マッピングを構成する
IAM API と Vertex AI API のサービス マッピング テーブルを構成する手順は次のとおりです。
- SAP GUI で、トランザクション コード SPRO を入力します。
- [SAP 参照 IMG] をクリックします。
- [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
- 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 Platform Trial には、デモとテスト用に SAP から提供されたエンドツーエンドのアプリケーションである SAP Enterprise Procurement Model(EPM)がプリインストールされています。感情分析に使用される商品レビューは、テーブル SNWD_REV_ITEM に保存されます。
テーブルデータは、Tcode: SE16 を使用して表示できます。ここでは、フィールド「RATING_TEXT」のサンプル テキストを使用します。
必要に応じて、Fiori Launchpad(TCode: /UI2/FLP)からアプリケーション「Manager Products」にアクセスしてデータを表示することもできます。
次のスクリーンショットは、商品のリストを示しています。
商品をクリックして、商品の評価とレビューの例を表示します。
次のセクションでは、これらの商品レビューのサンプルを使用して、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 に関連する追加の Codelabs を続行しない場合は、クリーンアップに進んでください。
プロジェクトの削除
- Google Cloud プロジェクトを削除します。
gcloud projects delete abap-sdk-poc
個々のリソースを削除する
- [IMG] > [Google Cloud] > [基本設定] > [クライアント キーを構成] に移動して、クライアント キーの構成エントリを削除します。
- [IMG] > [Google Cloud] > [Basic Settings] > [Configure Client Key] に移動して、Service Mapping 構成エントリを削除します。
- RFC 宛先 ZGOOG_IAMCREDENTIALS と ZGOOG_VERTEX_AI を削除します。
- レポート プログラムを削除
ZSENTIMENT_ANALYSIS
.
- サービス アカウントを削除します。
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com