ABAP SDK에서 Gemini AI를 사용한 감정 분석

1. 소개

이 Codelab에서는 Gemini Pro 모델을 사용하여 Google Cloud용 ABAP SDK로 제품 리뷰에 대한 감정 분석을 수행합니다. SAP 시스템이 Compute Engine VM 인스턴스에서 호스팅되는 경우 토큰을 사용하여 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가 이미 시스템에 설치되어 있는 경우, VM 외부 IP 주소를 애플리케이션 서버 IP로 사용하여 SAP에 연결합니다. Mac을 사용하는 경우 이 링크에서 제공되는 Java용 SAP GUI도 설치할 수 있습니다.

3. 시작하기 전에

  • Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다 (예: abap-sdk-poc).).
  • Cloud 프로젝트에 결제가 사용 설정되어 있어야 하므로 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요. 90일 무료 평가판 계정을 사용하는 경우 이 단계를 건너뛰세요.
  • Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다. Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.
  • 6757b2fb50ddcc2d.png
  • 필요한 모든 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

4. 서비스 계정 만들기 및 Vertex AI 사용자 역할 설정

  1. 다음 명령어를 실행하여 서비스 계정을 만듭니다 (아직 만들지 않은 경우).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. 다음 명령어를 실행하여 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 플랫폼 체험판을 설치하고 ABAP SDK를 설치하세요'라는 메시지가 표시됩니다. 그런 다음 프로비저닝된 기본 사용자 이름과 비밀번호를 사용하여 로그인합니다.

  1. SAP GUI에서 트랜잭션 코드 SPRO를 입력합니다.
  2. SAP 참조 IMG를 클릭합니다.
  3. ABAP SDK for Google Cloud > 기본 설정 > 클라이언트 키 구성을 클릭합니다.
  4. 새 항목을 클릭합니다.
  5. 다음 필드에 값을 입력합니다.

필드

설명

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입니다.

다른 필드는 비워둡니다.

c72e71da6fd75b29.png

6. RFC 대상 만들기

트랜잭션 코드 SM59를 사용하여 IAM 사용자 인증 정보 및 Vertex AI API의 RFC 대상을 만듭니다. 필요한 경우 여기에서 RFC 대상을 만드는 자세한 단계를 참고하세요.

RFC 대상 이름

대상 호스트(API 엔드포인트)

참고

ZGOOG_IAMCREDENTIALS

  • 호스트: iamcredentials.googleapis.com
  • 경로: 프리픽스: /v1/
  • 포트: 443
  • SSL: 활성

이 RFC 대상은 IAM API를 타겟팅합니다.

ZGOOG_VERTEX_AI

  • 호스트: us-central1-aiplatform.googleapis.com
  • 포트: 443
  • SSL: 활성

이 RFC 대상은 Vertex AI API us-central1 엔드포인트를 타겟팅합니다.

  • 기술 설정 탭에서 ZGOOG_IAMCREDENTIALS 대상에 대해 다음 세부정보를 입력합니다.

e670c6a91acba40f.png

  • 기술 설정 탭에서 ZGOOG_VERTEX_AI 대상에 대해 다음 세부정보를 입력합니다.

5c584aaed5c110f2.png

  • SSL 인증서 입력란에서 두 RFC 대상에 대해 기본 SSL 클라이언트 (표준) 옵션이 선택되어 있는지 확인합니다.

b6370d12bd332318.png

7. 서비스 매핑 구성

IAM API 및 Vertex AI API의 서비스 매핑 테이블을 구성하려면 다음 단계를 수행합니다.

  1. SAP GUI에서 트랜잭션 코드 SPRO를 입력합니다.
  2. SAP 참조 IMG를 클릭합니다.
  3. ABAP SDK for Google Cloud > 기본 설정 > 서비스 매핑 구성을 클릭합니다.
  4. IAM 사용자 인증 정보 및 Vertex AI API의 새 항목을 클릭하고 아래와 같이 RFC 대상을 업데이트합니다.

e7cc1429a4fe3a04.png

8. 구성 확인

인증 구성을 검증하려면 다음 단계를 수행합니다.

  1. SAP GUI에서 트랜잭션 코드 SPRO를 입력합니다.
  2. SAP 참조 IMG를 클릭합니다.
  3. ABAP SDK for Google Cloud > 유틸리티 > 인증 구성 검증을 클릭합니다.
  4. 클라이언트 키 이름을 ABAP_SDK_DEMO로 입력합니다.
  5. 실행을 클릭하여 전체 흐름이 성공적으로 구성되었는지 확인합니다.
  6. 결과 열의 녹색 체크 표시는 모든 구성 단계가 성공적으로 완료되었음을 나타냅니다.

d7285e64e22c25b6.png

9. 제품 리뷰 데이터 연구

ABAP 플랫폼 체험판에는 SAP에서 데모 및 테스트 목적으로 제공하는 엔드 투 엔드 애플리케이션인 SAP Enterprise Procurement Model (EPM)이 사전 설치되어 있습니다. 감정 분석에 사용할 제품 리뷰는 SNWD_REV_ITEM 테이블에 저장됩니다.

테이블 데이터는 Tcode: SE16을 사용하여 볼 수 있습니다. 여기서는 'RATING_TEXT' 입력란의 샘플 텍스트를 사용합니다.

2bae72d437ea639.png

원하는 경우 '관리자 제품' 애플리케이션에 액세스하여 데이터를 볼 수도 있습니다. Fiori Launchpad (TCode: /UI2/FLP)에서 로드합니다.

f9792a91ef9f0736.png

다음 스크린샷은 제품 목록을 보여줍니다.

f822f9ab71d37a9.png

제품을 클릭하여 제품 평점과 리뷰 예시를 확인합니다.

69fe380d5ca7b276.png

다음 섹션에서는 이러한 샘플 제품 리뷰를 사용하여 Google LLM을 사용하여 감정을 분석합니다.

10. Vertex AI Studio를 사용한 감정 분석

  1. Vertex AI 대시보드를 열고 Vertex AI Studio에서 언어를 선택합니다.
  2. 새 텍스트 프롬프트를 만듭니다.

8ce4c928c75174d7.png

  1. Gemini Pro 모델 선택을 확인합니다.
  2. 편집기에서 다음 프롬프트를 입력하여 모델이 제품 리뷰에서 고객 감정을 분석하도록 지시합니다.
  3. 제출을 클릭하여 모델에서 응답을 생성합니다.

프롬프트:

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.

fd245c204144484.png

'SNWD_REV_ITEM' 표의 리뷰 데이터 추가 프롬프트로 모델을 테스트하는 데 활용할 수 있습니다.

11. Gemini Pro 모델을 호출할 보고서 프로그램 만들기

이 단계에서는 ABAP의 Gemini Pro 모델을 호출하여 제품 리뷰에 대한 감정 분석을 수행합니다. 데모를 위해 프로그램에서는 최대 10개의 제품 리뷰를 선택하고 ABAP SDK를 사용하여 Gemini Pro 모델을 호출하여 리뷰당 감정을 판단합니다. 분석 결과에 따라 모델은 '긍정적', '음수', '중립'과 같은 값을 반환할 수 있습니다. '혼합'으로 표시됩니다.

  1. SAP 시스템에 로그인합니다.
  2. 거래 코드 SE38로 이동하여 ZSENTIMENT_ANALYSIS라는 이름의 신고 프로그램을 만듭니다.
  3. 팝업이 열리면 아래와 같이 세부정보를 입력하고 저장을 클릭합니다.

a2158523ec8ef3c7.png

  1. 다음 팝업에서 로컬 객체를 선택하거나 패키지 이름을 적절하게 입력합니다.
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.

  1. 프로그램을 실행하여 리뷰 텍스트의 감정 분석을 확인합니다.

4d869f1b8436b9ca.png

12. 축하합니다

축하합니다. Google Cloud용 ABAP SDK와 함께 Gemini Pro AI를 사용하여 감정 분석을 수행하는 샘플 프로그램을 개발했습니다.

13. 삭제

Google Cloud용 ABAP SDK와 관련된 추가 Codelab을 계속 진행하지 않으려면 정리를 진행하세요.

프로젝트 삭제

  • Google Cloud 프로젝트를 삭제합니다.
gcloud projects delete abap-sdk-poc

개별 리소스 삭제하기

  1. IMG > Google Cloud > 기본 설정 > 클라이언트 키 구성을 참조하세요.
  2. 서비스 매핑 구성 항목을 삭제하려면 IMG > Google Cloud > 기본 설정 > 클라이언트 키 구성을 참조하세요.
  3. RFC 대상 ZGOOG_IAMCREDENTIALSZGOOG_VERTEX_AI를 삭제합니다.
  4. 신고 프로그램 삭제 ZSENTIMENT_ANALYSIS.
  5. 서비스 계정을 삭제합니다.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com