BigQuery AI dan ML SDK untuk ABAP memungkinkan Anda menggunakan kueri Gemini pada data perusahaan yang disimpan di BigQuery dan menampilkan hasilnya, dari agen atau aplikasi berbasis ABAP. Dengan SDK, Anda dapat menggunakan model Gemini untuk melakukan hal berikut:
- Menghasilkan insight dari data teks di BigQuery
- Menghasilkan insight dari data gambar atau video di BigQuery
Anda dapat menjalankan insight berbasis Gemini pada data perusahaan yang disimpan di set data BigQuery menggunakan fungsi BigQuery ML.GENERATE_TEXT
.
Anda dapat mengakses model Gemini di Vertex AI dengan membuat model jarak jauh di BigQuery ML yang mewakili endpoint model Vertex AI. Setelah membuat model jarak jauh melalui model Vertex AI yang ingin digunakan, Anda dapat mengakses kemampuan model tersebut dengan menjalankan fungsi BigQuery ML terhadap model jarak jauh.
Sebelum memulai
Sebelum menggunakan BigQuery AI dan ML SDK untuk ABAP dengan model Gemini, pastikan Anda atau administrator telah menyelesaikan prasyarat berikut:
- Mengaktifkan BigQuery API, BigQuery Connection API, dan Vertex AI API di project Google Cloud Anda. Untuk mengetahui informasi tentang cara mengaktifkan Google Cloud API, lihat Mengaktifkan API.
- Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
- Akun layanan yang dikonfigurasi di kunci klien untuk autentikasi harus memiliki izin yang diperlukan.
- Menginstal BigQuery AI dan ML SDK untuk ABAP di lingkungan SAP Anda.
- Membuat model jarak jauh untuk model Gemini yang didukung.
Harga
BigQuery AI dan ML SDK untuk ABAP ditawarkan tanpa biaya. Namun, Anda bertanggung jawab atas biaya di platform BigQuery dan Vertex AI sebagai berikut:
- BigQuery ML: Anda akan dikenai biaya untuk data yang diproses di BigQuery.
- Vertex AI: Anda dikenai biaya panggilan ke layanan Vertex AI yang direpresentasikan oleh model jarak jauh.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Untuk mengetahui informasi selengkapnya tentang harga BigQuery, lihat halaman harga BigQuery.
Untuk mengetahui informasi selengkapnya tentang harga Vertex AI, lihat halaman harga Vertex AI.
Menjalankan kueri Gemini di BigQuery
Bagian ini menjelaskan cara menghasilkan insight berbasis Gemini dari data perusahaan di BigQuery menggunakan BigQuery AI dan ML SDK untuk ABAP.
Class ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
yang dikirimkan dengan SDK memungkinkan Anda menjalankan kueri Gemini menggunakan fungsi BigQuery ML.GENERATE_TEXT
.
Menetapkan kueri Gemini
Anda dapat menggunakan SDK untuk menjalankan kueri Gemini dengan cara berikut:
Simpan kueri Anda untuk menjalankan Gemini di BigQuery. Gunakan class
/GOOG/CL_BQ_QUERY
dan berikan nama kueri yang disimpan saat Anda membuat instance class dari logika aplikasi.TRY. DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key = 'CLIENT_KEY' iv_location_id = 'QUERY_LOCATION_ID' iv_query_name = 'SAVED_QUERY_NAME' ). CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk). cl_demo_output=>display( lo_cx_sdk->get_text( ) ). ENDTRY.
Ganti kode berikut:
CLIENT_KEY
: Kunci klien yang telah Anda konfigurasikan untuk autentikasi ke Google Cloud selama penyiapan autentikasi.QUERY_LOCATION_ID
: Google Cloud Lokasi tempat kueri disimpan.SAVED_QUERY_NAME
: Nama kueri yang digunakan untuk menyimpan kueri di BigQuery.
Teruskan teks kueri untuk memanggil Gemini saat Anda membuat instance class
/GOOG/CL_BQ_QUERY
dari logika aplikasi.TRY. DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key = 'CLIENT_KEY' iv_location_id = 'QUERY_LOCATION_ID' iv_query_text = 'QUERY_TEXT' ). CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk). cl_demo_output=>display( lo_cx_sdk->get_text( ) ). ENDTRY.
Ganti kode berikut:
CLIENT_KEY
: Kunci klien yang telah Anda konfigurasikan untuk autentikasi ke Google Cloud selama penyiapan autentikasi.QUERY_LOCATION_ID
: Google Cloud Lokasi tempat kueri disimpan.QUERY_TEXT
: Teks kueri yang ingin Anda jalankan dengan Gemini.
Saat Anda membuat instance class /GOOG/CL_BQ_QUERY
dengan nama kueri tersimpan atau teks kueri langsung, class tersebut akan menetapkan kueri dalam class. Kemudian, Anda dapat meneruskan
referensi class sebagai input ke class ABAP
/GOOG/CL_BQ_GENERATIVE_MODEL
untuk memanggil kueri.
Membuat instance class pemanggil BigQuery Gemini
Untuk memanggil model teks dan multimodal Gemini pada set data BigQuery,
gunakan class /GOOG/CL_BQ_GENERATIVE_MODEL
.
TRY.
DATA(lo_bq_generative_model) = NEW /goog/cl_bq_generative_model( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
Ganti CLIENT_KEY
dengan kunci klien yang telah Anda konfigurasikan untuk autentikasi ke Google Cloud selama penyiapan autentikasi.
Menjalankan kueri Gemini
Untuk menjalankan kueri Gemini dengan fungsi BigQuery ML.GENERATE_TEXT
, gunakan metode EXECUTE_QUERY
dari class /GOOG/CL_BQ_GENERATIVE_MODEL
.
Objek class /GOOG/CL_BQ_QUERY
yang ditetapkan dengan kueri
diteruskan sebagai input ke metode.
lo_bq_generative_model->execute_query( io_query = lo_bq_query ).
LO_BQ_QUERY
adalah referensi class /GOOG/CL_BQ_QUERY
setelah
menetapkan kueri.
Mengganti parameter pembuatan model
Anda dapat menentukan parameter pembuatan model Gemini dalam kueri tersimpan di BigQuery atau teks kueri yang diteruskan. Namun, jika perlu mengganti
parameter untuk kueri yang sama dari logika aplikasi ABAP, Anda dapat menggunakan
metode SET_GENERATION_CONFIG
dari class /GOOG/CL_BQ_GENERATIVE_MODEL
.
Parameter pembuatan dalam kueri awal diganti dengan parameter
yang diteruskan melalui metode ini.
DATA lt_stop_sequences TYPE /goog/cl_bigquery_v2=>ty_t_string.
DATA lt_safety_settings TYPE /goog/cl_bq_generative_model=>ty_t_safety_settings.
DATA ls_safety_settings TYPE /goog/cl_bq_generative_model=>ty_safety_setting.
APPEND 'STOP_SEQUENCE' TO lt_stop_sequences.
ls_safety_settings-category = 'CATEGORY'.
ls_safety_settings-threshold = 'THRESHOLD'.
APPEND ls_safety_settings TO lt_safety_settings.
lo_bq_generative_model->set_generation_config( iv_temperature = 'TEMPERATURE'
iv_top_p = 'TOP_P'
iv_top_k = 'TOP_K'
iv_max_output_tokens = 'MAX_OUTPUT_TOKENS'
iv_flatten_json_output = 'IS_FLATTEN_JSON_OUTPUT'
iv_ground_with_google_search = 'IS_GROUND_WITH_GOOGLE_SEARCH'
it_stop_sequences = lt_stop_sequences
it_safety_settings = lt_safety_settings ).
Ganti kode berikut:
STOP_SEQUENCE
: Nilai yang menghapus string yang ditentukan jika disertakan dalam respons dari model.CATEGORY
: Kategori keamanan konten untuk memfilter respons, cari kemungkinan nilai dari argumen setelan keamanan di bagian sintaksis input untukML.GENERATE_TEXT
.THRESHOLD
: Nilai minimum pemblokiran yang sesuai untuk memfilter respons, cari kemungkinan nilai dari argumen setelan keamanan di bagian sintaksis input untukML.GENERATE_TEXT
.TEMPERATURE
: Nilai yang mengontrol tingkat keacakan dalam pemilihan token.TOP_P
: Nilai yang mengubah cara model memilih token untuk output.TOP_K
: Nilai yang mengubah cara model memilih token untuk output.MAX_OUTPUT_TOKENS
: Nilai yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons.IS_FLATTEN_JSON_OUTPUT
: Nilai boolean yang menentukan apakah konten JSON yang ditampilkan oleh fungsi diuraikan menjadi kolom terpisah.IS_GROUND_WITH_GOOGLE_SEARCH
: Nilai boolean yang menentukan apakah model Vertex AI menggunakan Pemrosesan dengan Google Penelusuran saat membuat respons.
Mendapatkan hasil kueri dari kueri Gemini
Untuk menerima respons yang diproses dari BigQuery ML untuk kueri Gemini dan menampilkannya dengan cara yang bermakna, gunakan class /GOOG/CL_BQ_MODEL_RESPONSE
.
Respons yang diambil oleh class /GOOG/CL_BQ_MODEL_RESPONSE
dirantai
ke permintaan yang dibuat melalui metode class /GOOG/CL_BQ_GENERATIVE_MODEL
, sehingga Anda dapat langsung mengakses respons dalam satu pernyataan
tanpa memerlukan variabel untuk menyimpan hasil perantara.
Mendapatkan respons teks
Untuk menerima respons teks dari model, gunakan metode GET_TEXT_RESPONSE
.
DATA(lt_bq_response) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_text_response( ).
Mendapatkan status tugas kueri
Setiap kueri di BigQuery dieksekusi sebagai tugas kueri.
Untuk mendapatkan status tugas kueri, gunakan metode GET_QUERY_JOB_STATUS
.
lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_query_job_status(
IMPORTING ev_job_complete = DATA(lv_job_complete)
ev_job_creation_reason = DATA(lv_job_creation_reason)
ev_job_id = DATA(lv_job_id)
ev_query_id = DATA(lv_query_id)
ev_total_bytes_processed = DATA(lv_total_bytes_processed)
ev_total_rows = DATA(lv_total_rows) ).
Metode ini menampilkan metrik status tugas berikut:
- Apakah kueri telah selesai atau belum
- Alasan Tugas dibuat
- Referensi ke Tugas yang dibuat untuk menjalankan kueri
- ID yang dibuat secara otomatis untuk kueri
- Jumlah total byte yang diproses untuk kueri ini
- Jumlah total baris dalam kumpulan hasil kueri lengkap
Mendapatkan error tugas kueri
Untuk mengambil error (jika ada), gunakan metode GET_QUERY_JOB_ERRORS
.
DATA(lt_query_job_errors) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_query_job_errors( ).
Mendapatkan alasan selesai
Untuk mendapatkan alasan mengapa
model berhenti membuat token untuk setiap baris, gunakan metode GET_FINISH_REASON
.
DATA(lt_finish_reason) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_finish_reason( ).
Mendapatkan metadata penggunaan
Untuk mendapatkan metadata penggunaan tentang respons yang dihasilkan untuk setiap baris, gunakan metode GET_USAGE_METADATA
.
DATA(lt_usage_metadata) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_usage_metadata( ).
Metadata penggunaan terdiri dari metrik berikut:
- Total jumlah token dalam respons untuk baris
- Jumlah token dalam perintah input
- Total jumlah token
Mendapatkan rating keselamatan
Untuk mendapatkan rating keamanan respons, gunakan metode GET_SAFETY_RATING
.
Rating keamanan harus ditetapkan sebagai parameter pembuatan model dalam kueri input
untuk mendapatkan rating keamanan respons.
DATA(lt_safety_ratings) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_safety_rating( ).
Mendapatkan tabel respons keseluruhan
Untuk mendapatkan tabel respons keseluruhan untuk kueri Gemini yang Anda jalankan, gunakan metode GET_RESPONSE_TABLE
.
lo_bq_model_response->get_response_table(
IMPORTING et_bqml_response = DATA(lt_bqml_response)
et_bqml_response_flatten_json = DATA(lt_bqml_response_flatten_json)
et_bqml_response_grounding = DATA(lt_bqml_response_grounding) ).
Hanya satu tabel respons yang diisi berdasarkan parameter pembuatan yang ditetapkan dalam kueri:
ET_BQML_RESPONSE
diisi saat parameterFLATTEN_JSON_OUTPUT
tidak disetel keTRUE
dalam kueri input.ET_BQML_RESPONSE_FLATTEN_JSON
diisi saat parameterFLATTEN_JSON_OUTPUT
ditetapkan keTRUE
dalam kueri input.ET_BQML_RESPONSE_GROUNDING
diisi saat parameterFLATTEN_JSON_OUTPUT
ditetapkan keTRUE
dalam kueri input dan parameterGROUNDING_WITH_GOOGLE_SEARCH
juga ditetapkan keTRUE
dalam kueri input.
Mendapatkan sumber grounding
Untuk mencantumkan sumber dasar yang digunakan model untuk menghasilkan respons,
gunakan metode GET_GROUNDING_SOURCE
.
DATA(lt_query_grounding_sources) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_grounding_source( ).