Phân tích ý kiến bằng Gemini AI thông qua SDK ABAP

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ sử dụng mô hình Gemini Pro để phân tích quan điểm của người dùng đối với các bài đánh giá sản phẩm bằng ABAP SDK dành cho Google Cloud. Chúng ta sẽ hướng dẫn các bước thiết lập tính năng xác thực để truy cập vào Vertex AI API của Google Cloud bằng mã thông báo khi hệ thống SAP của bạn được lưu trữ trên một thực thể máy ảo Compute Engine.

Danh sách các dịch vụ được sử dụng là:

  • Compute Engine
  • Dịch vụ mạng
  • Cloud Shell
  • Vertex AI

Sản phẩm bạn sẽ tạo ra

Bạn sẽ thực hiện như sau:

  • Định cấu hình SDK ABAP được cài đặt trên hệ thống SAP để kết nối với các API của Google.
  • Tạo một chương trình báo cáo mẫu để gọi Gemini AI và tiến hành phân tích ý kiến của người dùng đối với các bài đánh giá sản phẩm.

2. Yêu cầu

  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox.
  • Một dự án Google Cloud đã bật tính năng thanh toán hoặc Tạo tài khoản dùng thử miễn phí 90 ngày cho Google Cloud Platform.
  • GUI SAP (Windows hoặc Java) được cài đặt trong hệ thống của bạn. Nếu GUI SAP đã được cài đặt trên hệ thống của bạn, hãy kết nối với SAP bằng địa chỉ IP bên ngoài của máy ảo làm IP của máy chủ ứng dụng. Nếu dùng máy Mac, bạn cũng có thể cài đặt GUI SAP cho Java qua đường liên kết này.

3. Trước khi bắt đầu

  • Trong Google Cloud Console, trên trang bộ chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud (Ví dụ: abap-sdk-poc).
  • Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Google Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không. Bỏ qua bước này nếu bạn đang sử dụng Tài khoản dùng thử miễn phí 90 ngày.
  • Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud. Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell ở góc trên cùng bên phải:
  • 6757b2fb50ddcc2d.png.
  • Đảm bảo rằng tất cả các API cần thiết (API Thông tin xác thực tài khoản dịch vụ AM, Vertex AI API) đều được bật.
  • Chạy các lệnh sau để xác thực tài khoản của bạn và đặt dự án mặc định thành abap-sdk-poc. Khu vực us-west4-b được dùng làm ví dụ. Nếu cần, vui lòng thay đổi dự án và vùng trong các lệnh sau dựa trên lựa chọn ưu tiên của bạn.
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. Tạo tài khoản dịch vụ và thiết lập vai trò của người dùng trong Vertex AI

  1. Chạy lệnh sau để tạo một tài khoản dịch vụ (nếu chưa tạo).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Chạy lệnh sau để đặt vai trò Người dùng 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. Định cấu hình khoá ứng dụng

Đăng nhập vào hệ thống SAP. Nếu bạn đang sử dụng hệ thống do lớp học lập trình cung cấp " Cài đặt Bản dùng thử ABAP Platform trên Google Cloud Platform và cài đặt ABAP SDK", sau đó sử dụng tên người dùng và mật khẩu được cấp phép mặc định để đăng nhập.

  1. Trong GUI SAP, hãy nhập mã giao dịch SPRO.
  2. Nhấp vào Ảnh đối chiếu của SAP.
  3. Nhấp vào ABAP SDK for Google Cloud > Cài đặt cơ bản > Định cấu hình khoá ứng dụng.
  4. Nhấp vào Mục nhập mới.
  5. Nhập giá trị cho các trường sau:

Trường

Mô tả

Tên khoá Google Cloud

ABAP_SDK_DEMO

Tên tài khoản dịch vụ Google Cloud

abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com

Phạm vi của Google Cloud

https://www.googleapis.com/auth/cloud-platform

Mã nhận dạng dự án trên Google Cloud

abap-sdk-poc

Lớp uỷ quyền

/GOOG/CL_XÁC_GOOGLE.

Để trống các trường khác

c72e71da6fd75b29.png

6. Tạo đích đến RFC

Tạo đích đến RFC cho thông tin xác thực IAM và Vertex AI API bằng mã giao dịch SM59. Nếu cần, vui lòng tham khảo tại đây để biết các bước chi tiết về cách tạo đích đến RFC.

Tên đích đến RFC

Máy chủ đích (điểm cuối API)

Ghi chú

ZGOOG_IAMCREDENTIALS

  • Máy chủ lưu trữ: iamcredentials.googleapis.com
  • Đường dẫn: Tiền tố: /v1/
  • Cổng: 443
  • SSL: Đang hoạt động

Đích RFC này nhắm đến API IAM.

ZGOOG_VERTEX_AI

  • Máy chủ lưu trữ: us-central1-aiplatform.googleapis.com
  • Cổng: 443
  • SSL: HOẠT ĐỘNG

Đích đến RFC này nhắm đến điểm cuối us-central1 của Vertex AI API.

  • Trong thẻ Cài đặt kỹ thuật, hãy nhập các thông tin chi tiết sau cho đích đến ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • Trong thẻ Cài đặt kỹ thuật, hãy nhập các thông tin chi tiết sau cho đích đến ZGOOG_VERTEX_AI.

5c584aaed5c110f2.pngS

  • Đối với trường Chứng chỉ SSL, hãy đảm bảo rằng bạn chọn tùy chọn DEFAULT SSL Client (Chuẩn) cho cả hai đích đến RFC.

b6370d12bd332318.png

7. Định cấu hình liên kết dịch vụ

Để định cấu hình bảng liên kết dịch vụ cho IAM API và Vertex AI API, hãy thực hiện các bước sau:

  1. Trong GUI SAP, hãy nhập mã giao dịch SPRO.
  2. Nhấp vào Ảnh đối chiếu của SAP.
  3. Nhấp vào ABAP SDK for Google Cloud > Cài đặt cơ bản > Định cấu hình liên kết dịch vụ.
  4. Nhấp vào Mục nhập mới để xem thông tin xác thực IAM và Vertex AI API rồi cập nhật các đích đến RFC như minh hoạ dưới đây.

e7cc1429a4fe3a04.png

8. Xác thực cấu hình

Để xác thực cấu hình xác thực, hãy thực hiện các bước sau:

  1. Trong GUI SAP, hãy nhập mã giao dịch SPRO.
  2. Nhấp vào Ảnh đối chiếu của SAP.
  3. Nhấp vào ABAP SDK for Google Cloud > Tiện ích > Xác thực cấu hình xác thực.
  4. Nhập tên khoá ứng dụng khách là ABAP_SDK_DEMO.
  5. Nhấp vào Thực thi để kiểm tra xem quy trình tổng thể có được định cấu hình thành công hay không.
  6. Dấu kiểm màu xanh lục trong cột Kết quả cho biết rằng tất cả các bước định cấu hình đã hoàn tất thành công.

d7285e64e22c25b6.png

9. Nghiên cứu dữ liệu về các bài đánh giá sản phẩm

Bản dùng thử nền tảng ABAP được cài đặt sẵn với Mô hình mua sắm doanh nghiệp SAP (EPM), một ứng dụng toàn diện do SAP cung cấp cho mục đích minh hoạ và kiểm thử. Các bài đánh giá sản phẩm dùng để phân tích ý kiến được lưu trữ trong bảng SNWD_REV_ITEM.

Bạn có thể xem dữ liệu bảng bằng Tcode: SE16. Chúng tôi sẽ sử dụng văn bản mẫu từ trường "RATING_TEXT".

2bae72d437ea639.png.

Nếu muốn, bạn cũng có thể xem dữ liệu bằng cách truy cập ứng dụng "Manager Products" (Sản phẩm dành cho người quản lý) từ Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

Ảnh chụp màn hình sau đây cho thấy danh sách sản phẩm.

f822f9ab71d37a9.png

Nhấp vào sản phẩm để xem điểm xếp hạng sản phẩm và các bài đánh giá mẫu.

69fe380d5ca7b276.png.

Trong phần tiếp theo, chúng ta sẽ sử dụng các bài đánh giá sản phẩm mẫu này để phân tích quan điểm bằng cách sử dụng LLM (mô hình ngôn ngữ lớn) của Google.

10. Phân tích quan điểm bằng Vertex AI Studio

  1. Mở trang tổng quan Vertex AI, chọn Language (Ngôn ngữ) trong Vertex AI Studio.
  2. Tạo một câu lệnh dạng văn bản mới.

8ce4c928c75174d7.png.

  1. Xác nhận việc chọn mô hình Gemini Pro.
  2. Trong trình chỉnh sửa, hãy nhập câu lệnh sau đây để hướng dẫn mô hình phân tích ý kiến của khách hàng trong bài đánh giá sản phẩm.
  3. Nhấp vào Submit (Gửi) để tạo phản hồi từ mô hình.

Câu lệnh:

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

Dữ liệu đánh giá từ bảng "SNWD_REV_ITEM" có thể được sử dụng để kiểm thử mô hình với các câu lệnh bổ sung.

11. Tạo một chương trình báo cáo để gọi cho mô hình Gemini Pro

Ở bước này, chúng ta sẽ gọi mô hình Gemini Pro của ABAP để tiến hành phân tích ý kiến của các bài đánh giá sản phẩm. Để minh hoạ, chương trình này sẽ chọn tối đa 10 bài đánh giá sản phẩm và sử dụng ABAP SDK để gọi mô hình Gemini Pro nhằm xác định ý kiến của mỗi bài đánh giá. Dựa trên kết quả phân tích, mô hình có thể trả về các giá trị như "Tích cực", "Âm", "Trung tính" hoặc "Kết hợp".

  1. Đăng nhập vào hệ thống SAP của bạn.
  2. Truy cập vào mã giao dịch SE38 rồi tạo một Chương trình báo cáo có tên ZSENTIMENT_ANALYSIS.
  3. Trong cửa sổ bật lên mới mở ra, hãy cung cấp thông tin chi tiết như bên dưới rồi nhấp vào Lưu.

a2158523ec8ef3c7.png

  1. Trong cửa sổ bật lên tiếp theo, hãy chọn Local Object (Đối tượng cục bộ) hoặc cung cấp tên gói phù hợp.
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. Thực thi chương trình để xem phân tích quan điểm đối với nội dung bài đánh giá.

4d869f1b8436b9ca.pngS

12. Xin chúc mừng

Xin chúc mừng! Bạn đã phát triển thành công một chương trình mẫu giúp phân tích quan điểm bằng Gemini Pro AI có ABAP SDK cho Google Cloud.

13. Dọn dẹp

Nếu bạn không muốn tiếp tục các lớp học lập trình khác liên quan đến ABAP SDK dành cho Google Cloud, vui lòng tiến hành dọn dẹp.

Xoá dự án

  • Xoá dự án trên Google Cloud:
gcloud projects delete abap-sdk-poc

Xoá từng tài nguyên

  1. Xóa các mục cấu hình khóa ứng dụng khách bằng cách truy cập vào IMG > Google Cloud > Cài đặt cơ bản > Định cấu hình khoá ứng dụng.
  2. Xóa các mục cấu hình ánh xạ dịch vụ bằng cách chuyển đến IMG > Google Cloud > Cài đặt cơ bản > Định cấu hình khoá ứng dụng.
  3. Xoá các đích đến RFC ZGOOG_IAMCREDENTIALSZGOOG_VERTEX_AI.
  4. Xoá chương trình báo cáo ZSENTIMENT_ANALYSIS.
  5. Xoá tài khoản dịch vụ.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com