Google ক্লাউডের জন্য ABAP SDK-এর সাথে আপনার ABAP পরিবেশ থেকে Vertex AI LLM-কে কল করুন

1. ভূমিকা

এই কোডল্যাবে, আমরা Google ক্লাউডের জন্য ABAP SDK ব্যবহার করে আপনার ABAP পরিবেশ থেকে Google Cloud Vertex AI-এর PaLM 2 টেক্সট (টেক্সট-বাইসন) ফাউন্ডেশন মডেলকে কীভাবে কল করতে হয় তার ধাপগুলি তালিকাভুক্ত করেছি।

নিম্নলিখিত Google ক্লাউড পরিষেবাগুলি এই কোডল্যাবে ব্যবহার করা হয়:

  • ভার্টেক্স এআই
  • মেঘের শেল

আপনি কি নির্মাণ করবেন

আপনি নিম্নলিখিত তৈরি করবেন:

  • একটি Google ক্লাউড প্রকল্পে Vertex AI API সক্ষম করুন৷
  • Vertex AI এর PaLM 2 টেক্সট মডেলে একটি প্রম্পট দিন এবং Google ক্লাউডের জন্য ABAP SDK ব্যবহার করে প্রতিক্রিয়া পান।

2. প্রয়োজনীয়তা

  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প বা Google ক্লাউড প্ল্যাটফর্মের জন্য একটি 90-দিনের বিনামূল্যে ট্রায়াল অ্যাকাউন্ট তৈরি করুন
  • আপনার সিস্টেমে ইনস্টল করা SAP GUI (উইন্ডোজ বা জাভা)। যদি আপনার ল্যাপটপে SAP GUI ইতিমধ্যেই ইনস্টল করা থাকে, তাহলে অ্যাপ্লিকেশন সার্ভার IP হিসাবে VM বাহ্যিক IP ঠিকানা ব্যবহার করে SAP-এর সাথে সংযোগ করুন। আপনি যদি ম্যাকে থাকেন, তাহলে আপনি এই লিঙ্কে উপলব্ধ জাভার জন্য SAP GUI ইনস্টল করতে পারেন।

3. আপনি শুরু করার আগে

6757b2fb50ddcc2d.png

  • আপনার অ্যাকাউন্টের জন্য প্রমাণীকরণ করতে নিম্নলিখিত কমান্ডগুলি চালান এবং ডিফল্ট প্রকল্পটিকে abap-sdk-poc এ সেট করুন। Zone us-west4-b উদাহরণ হিসেবে ব্যবহার করা হয়েছে। যদি প্রয়োজন হয়, অনুগ্রহ করে আপনার পছন্দের উপর ভিত্তি করে নিম্নলিখিত কমান্ডগুলিতে প্রকল্প এবং অঞ্চল পরিবর্তন করুন।
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. ওভারভিউ

এখানে Vertex AI এর কিছু সত্তার একটি দ্রুত ওভারভিউ রয়েছে যেগুলির সাথে আপনি এই কোডল্যাবে কাজ করবেন:

  • পাঠ্যের জন্য PaLM 2: পাঠ্যের জন্য PaLM 2 (টেক্সট-বাইসন, টেক্সট-ইউনিকর্ন) ফাউন্ডেশন মডেলগুলি বিভিন্ন প্রাকৃতিক ভাষার কাজ যেমন সেন্টিমেন্ট বিশ্লেষণ, সত্তা নিষ্কাশন এবং বিষয়বস্তু তৈরির জন্য অপ্টিমাইজ করা হয়েছে।
  • টেক্সট-বাইসন: টেক্সট-বাইসন হল একটি বড় ভাষা মডেল (LLM) যা Google AI দ্বারা তৈরি করা হয়েছে। এটি GenAI-এর জন্য একটি মৌলিক মডেল যা ভাষা বুঝতে এবং তৈরি করতে পারে।

5. আপনার Google ক্লাউড প্রকল্পে Vertex AI সক্ষম করুন৷

  1. আপনার Google ক্লাউড প্রজেক্টে যান এবং উপরের ডানদিকে কোণায় অ্যাক্টিভেট ক্লাউড শেল-এ ক্লিক করুন।

8d15f753321c53e6.png

  1. শেলটি সক্রিয় হয়ে গেলে, আপনার Google ক্লাউড প্রকল্পে ক্লাউড সিক্রেট ম্যানেজার এপিআই সক্ষম করতে নীচের কমান্ডটি চালান।
gcloud services enable aiplatform.googleapis.com

আপনার এখন আপনার Google ক্লাউড প্রকল্পে Vertex AI API সক্ষম করা উচিত।

6. ব্যবহারকারীর ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন৷

প্রয়োজনীয় ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gcloud iam service-accounts create abap-sdk-vertexai-tester \
--display-name="Service Account for Vertex AI"
  1. এখন API অ্যাক্সেস করতে উপরের ধাপে তৈরি পরিষেবা অ্যাকাউন্টে প্রয়োজনীয় ভূমিকা যোগ করুন।
gcloud endpoints services add-iam-policy-binding aiplatform.googleapis.com \ --member='serviceAccount:abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/aiplatform.endpoints.predict'

উপরের কমান্ডগুলি Google ক্লাউড প্রকল্পের টেমপ্লেট নাম হিসাবে abap-sdk-poc ব্যবহার করে। আপনার প্রকল্প আইডি দিয়ে এটি প্রতিস্থাপন করুন।

  1. যাচাই করতে, ভূমিকা যোগ করা হয়েছে, IAM পৃষ্ঠায় যান। আপনি যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছেন সেটিকে নির্ধারিত ভূমিকা সহ তালিকাভুক্ত করা উচিত।

7. SAP-এ SDK কনফিগারেশন তৈরি করুন

এখন যেহেতু আপনি Google ক্লাউড সাইডে প্রাক-প্রয়োজনীয়তা সেট আপ করেছেন, আমরা SAP সাইডে কনফিগারেশন নিয়ে এগিয়ে যেতে পারি। প্রমাণীকরণ এবং সংযোগ সম্পর্কিত কনফিগারেশনের জন্য, Google ক্লাউডের জন্য ABAP SDK টেবিল /GOOG/CLIENT_KEY এবং /GOOG/SERVIC_MAP ব্যবহার করে।

/GOOG/CLIENT_KEY টেবিলে কনফিগারেশন বজায় রাখতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. SAP GUI-তে, লেনদেন কোড SPRO লিখুন।
  2. SAP রেফারেন্স IMG এ ক্লিক করুন।
  3. Google ক্লাউড > বেসিক সেটিংস > কনফিগার ক্লায়েন্ট কী-এর জন্য ABAP SDK-এ ক্লিক করুন।
  4. ক্ষেত্রগুলির বিপরীতে নিম্নলিখিত মানগুলি বজায় রাখুন:

মাঠ

বর্ণনা

গুগল ক্লাউড কী নাম

VERTEX_AI_DEMO

Google ক্লাউড পরিষেবা অ্যাকাউন্টের নাম

abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com

গুগল ক্লাউড স্কোপ

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

Google ক্লাউড প্রকল্প শনাক্তকারী

abap-sdk-poc

অনুমোদন শ্রেণী

/GOOG/CL_AUTH_GOOGLE৷

অন্যান্য ক্ষেত্রগুলি ফাঁকা রাখুন

Vertex AI-এর অঞ্চল নির্দিষ্ট শেষ পয়েন্ট রয়েছে, আমাদের শেষ পয়েন্টের জন্য একটি RFC গন্তব্য তৈরি করতে হবে এবং ক্লায়েন্ট কী-এর বিপরীতে টেবিল /GOOG/SERVIC_MAP-এ API-এর জন্য ম্যাপিং তৈরি করতে হবে। (Vertex AI-এর জন্য অঞ্চল নির্দিষ্ট পরিষেবার শেষ পয়েন্টগুলির জন্য এই লিঙ্কটি পড়ুন)।

কোডল্যাবের জন্য একটি RFC তৈরির ধাপ নিচে দেওয়া হল।

  • লেনদেন কোড SM59 এ যান এবং একটি টাইপ "G" সংযোগ তৈরি করুন৷
  • "ZGOOG_VERTEXAI_V1" হিসাবে গন্তব্যের নাম দিন।
  • প্রয়োজনীয় বিবরণ এবং "443" হিসাবে পোর্ট দিন।
  • "হোস্ট" ঠিকানাটি " us-west4-aiplatform.googleapis.com " হিসাবে দিন কারণ আমরা কোডল্যাবে "us-west4-b" অবস্থানটি উল্লেখ করছি।

নীচে আপনার রেফারেন্সের জন্য RFC গন্তব্যের একটি স্ক্রিনশট রয়েছে।

54316c5de58624c7.png

টেবিল /GOOG/SERVIC_MAP টেবিলে কনফিগারেশন বজায় রাখতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. SAP GUI-তে, লেনদেন কোড SPRO লিখুন।
  2. SAP রেফারেন্স IMG এ ক্লিক করুন।
  3. Google ক্লাউড > বেসিক সেটিংস > কনফিগার সার্ভিস ম্যাপিং-এর জন্য ABAP SDK-এ ক্লিক করুন।
  4. ক্ষেত্রগুলির বিপরীতে নিম্নলিখিত মানগুলি বজায় রাখুন:

মাঠ

বর্ণনা

গুগল ক্লাউড কী নাম

VERTEX_AI_DEMO

Google পরিষেবার নাম

aipplatform:v1

RFC গন্তব্য

ZGOOG_VERTEXAI_V1

8. SDK ব্যবহার করে PaLM 2 পাঠ্য আহ্বান করুন

  1. আপনার SAP সিস্টেমে লগ ইন করুন।
  2. লেনদেন কোড SE38 এ যান এবং "ZDEMO_VERTEX_AI" নামে একটি প্রতিবেদন তৈরি করুন।
  3. পপ-আপে যেটি খোলে, নীচে দেখানো হিসাবে বিশদ বিবরণ দিন এবং সংরক্ষণ করুন ক্লিক করুন।

b06fda1a879290f7.png

পরবর্তী পপ-আপে, হয় স্থানীয় অবজেক্ট নির্বাচন করুন বা উপযুক্ত হিসাবে একটি প্যাকেজ নাম দিন।

  1. ABAP সম্পাদকে, নিম্নলিখিত কোড স্নিপেট যোগ করুন:
  • এই স্নিপেটে, একটি প্রম্পট হিসাবে, আমরা গ্রাহকের নাম, কোম্পানির নাম, গ্রাহকের পদবী, আইটেমের নাম, অর্ডারের পরিমাণ, শিপিং ঠিকানা, এবং এর মতো অর্ডার বৈশিষ্ট্যগুলি বের করার জন্য এটিকে পার্স করার নির্দেশাবলী সহ একটি জরুরী অর্ডারের অনুরোধের জন্য ইমেল সামগ্রী প্রেরণ করছি। ডেলিভারি তারিখ।
  • ABAP প্রকারের ঘোষণাগুলি হল এখানে ডকুমেন্টেশন অনুসারে Vertex AI PaLM 2 টেক্সট মডেলের জন্য অনুরোধ প্রস্তুত করা এবং প্রতিক্রিয়া ক্যাপচার করা।
* Types declarations
TYPES:
  BEGIN OF ty_instances,
    content TYPE string,
  END OF ty_instances.

TYPES:
     tt_instances TYPE STANDARD TABLE OF ty_instances WITH DEFAULT KEY .

TYPES:
  BEGIN OF ty_parameters,
    max_output_tokens TYPE i,
    temperature       TYPE f,
    top_k             TYPE i,
    top_p             TYPE f,
  END OF ty_parameters.

TYPES ty_categories TYPE string .
TYPES:
  BEGIN OF ty_scores,
    scores TYPE string,
  END OF ty_scores .
TYPES:
  tt_categories TYPE STANDARD TABLE OF ty_categories WITH DEFAULT KEY .
TYPES:
  tt_scores TYPE STANDARD TABLE OF ty_scores WITH DEFAULT KEY .

TYPES:
  BEGIN OF ty_safety_attributes,
    blocked    TYPE abap_bool,
    categories TYPE tt_categories,
    scores     TYPE tt_scores,
  END OF ty_safety_attributes .

TYPES:
  BEGIN OF ty_predictions,
    content           TYPE string,
    safety_attributes TYPE ty_safety_attributes,
  END OF ty_predictions .
TYPES:
  tt_predictions TYPE STANDARD TABLE OF ty_predictions WITH DEFAULT KEY .

TYPES:
  BEGIN OF ty_output,
    deployed_model_id  TYPE string,
    metadata           TYPE REF TO data,
    model              TYPE string,
    model_display_name TYPE string,
    model_version_id   TYPE string,
    predictions        TYPE tt_predictions,
  END OF ty_output.

* Data declarations
DATA:
  lv_p_projects_id   TYPE string,
  lv_p_locations_id  TYPE string,
  lv_p_publishers_id TYPE string,
  lv_p_models_id     TYPE string,
  ls_input           TYPE /goog/cl_aiplatform_v1=>ty_001.

DATA:
      lv_email_text TYPE string.

CONSTANTS: lc_ob TYPE c VALUE '{',
           lc_cb TYPE c VALUE '}'.

* Email content having order request
lv_email_text = |'Hello, We are running low on Dark Chocolates, please ship 20 units of "Lindt 90% Dark Chocolates"'| &&
                |' and 10 units of "Toblerone Dark Bar 100g" to "Google Cloud, 1 East 2'| &&
                |'4th St, Kearney NE" by as early as possible. Thanks and Regards, John Doe, Procurement Manager, Google Cloud'|.

TRY.
    DATA(lv_raw) = VALUE string( ).
* Open HTTP Connection
    DATA(lo_client) = NEW /goog/cl_aiplatform_v1( iv_key_name = 'VERTEX_AI_DEMO' ).

* Populate relevant parameters
    lv_p_projects_id = lo_client->gv_project_id.
    lv_p_locations_id = 'us-west4-b'.
    lv_p_publishers_id = 'google'.
    lv_p_models_id = 'text-bison'.

* Call API method: aiplatform.projects.locations.publishers.models.predict
    CALL METHOD lo_client->predict_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           = VALUE #(
     parameters = NEW ty_parameters(
           max_output_tokens  = 256
           temperature = '0.2'
           top_k = '40'
           top_p  = '0.8' )
* Pass the prompt with email content and instructions to get order attributes
     instances = NEW tt_instances( ( content =
      |'Give me the Customer Name, Company Name, Customer Designation, Item Name, Order Quantity, Shipping address, Delivery Date'| &&
      |'from an email context. Structure the response in JSON camelcase format with fields corresponding to each entities. Place the ordered items in a JSON nest'| &&
      |'Default the delivery date to a future date in DD.MM.YYYY format. Here is the email content:'| && lv_email_text ) ) )
      IMPORTING
        es_raw             = lv_raw
        ev_ret_code        = DATA(lv_ret_code)
        ev_err_text        = DATA(lv_err_text)
        es_err_resp        = DATA(ls_err_resp).

    IF lo_client->is_success( lv_ret_code ).
      DATA(ls_output_llm) = VALUE ty_output( ).
* Deserializing API response to get model response
      /goog/cl_json_util=>deserialize_json( EXPORTING iv_json        = lv_raw
                                                      iv_pretty_name = /ui2/cl_json=>pretty_mode-extended
                                            IMPORTING es_data        = ls_output_llm ).
      cl_demo_output=>new(
        )->begin_section( 'API Call Successful:'
        )->write_text( 'Respose from model:'
        )->write_text( ls_output_llm-predictions[ 1 ]-content
        )->display( ).
    ELSE.
      cl_demo_output=>new(
        )->begin_section( 'API Call Unsuccessful:'
        )->write_text( 'Error Message:'
        )->write_text( lv_err_text
        )->display( ).

    ENDIF.

* Close HTTP Connection
    lo_client->close( ).

  CATCH /goog/cx_sdk INTO DATA(lo_exception).
    DATA(lv_error) = lo_exception->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).

ENDTRY.
  1. রিপোর্ট প্রোগ্রাম সংরক্ষণ এবং সক্রিয়.
  2. রিপোর্ট চালান (F8)।

সফলভাবে সঞ্চালন হলে আপনাকে প্রম্পটে নির্দেশিত এক্সট্রাক্টেড অর্ডার অ্যাট্রিবিউটের সাথে নীচে দেখানো হিসাবে রিপোর্ট আউটপুট দেখতে হবে।

c40839b43b8ac44f.png

9. অভিনন্দন

অভিনন্দন! আপনি Google ক্লাউডের জন্য ABAP SDK ব্যবহার করে একটি অর্ডার অনুরোধ পার্স করতে আপনার ABAP প্রোগ্রাম থেকে Vertex AI PaLM 2 টেক্সট মডেলকে সফলভাবে কল করেছেন।

হার্ড কোডিংয়ের পরিবর্তে, আপনি Google ক্লাউডের জন্য ABAP SDK ব্যবহার করে আপনার Gmail ইনবক্স থেকে ইমেল সামগ্রী পাওয়ার কথাও ভাবতে পারেন, এবং তারপর এই কোডল্যাবে বর্ণিত বিষয়বস্তুটিকে Vertex AI-তে পাঠানোর কথাও ভাবতে পারেন৷

10. পরিষ্কার করুন

আপনি যদি Google ক্লাউডের জন্য ABAP SDK-এর সাথে সম্পর্কিত অতিরিক্ত কোডল্যাবগুলি চালিয়ে যেতে না চান, তাহলে অনুগ্রহ করে পরিষ্কারের সাথে এগিয়ে যান৷

প্রকল্পটি মুছুন

  • Google ক্লাউড প্রকল্প মুছুন:
gcloud projects delete abap-sdk-poc

পৃথক সম্পদ মুছুন

  1. গণনা উদাহরণ মুছুন:
gcloud compute instances delete abap-trial-docker
  1. ফায়ারওয়াল-নিয়ম মুছুন:
gcloud compute firewall-rules delete sapmachine
  1. পরিষেবা অ্যাকাউন্ট মুছুন:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com