1. Pengantar
Apakah Anda suka membaca buku tetapi kewalahan dengan banyaknya pilihan? Bayangkan Anda memiliki aplikasi berteknologi AI yang tidak hanya merekomendasikan bacaan terbaik, tetapi juga menawarkan ringkasan singkat berdasarkan genre pilihan Anda, sehingga Anda dapat melihat sekilas esensi buku tersebut. Dalam codelab ini, saya akan memandu Anda membangun aplikasi semacam itu dengan BigQuery, Gemini, dan Cloud Functions yang didukung oleh Gemini.
Ringkasan Project
Kasus penggunaan kami berpusat pada 4 komponen utama berikut:
- Database Buku: Set data publik BigQuery yang luas untuk buku arsip internet akan berfungsi sebagai katalog buku komprehensif kami.
- Mesin Peringkasan AI: Google Cloud Functions, yang dilengkapi dengan model bahasa Gemini 1.0 Pro, akan menghasilkan ringkasan bermanfaat yang disesuaikan dengan permintaan pengguna.
- Integrasi BigQuery: Fungsi jarak jauh dalam BigQuery yang memanggil Cloud Function kami untuk memberikan tema dan ringkasan buku on-demand.
- Antarmuka Pengguna: Aplikasi web yang dihosting di Cloud Run dan akan menawarkan aplikasi web agar pengguna dapat melihat hasilnya.
Kita akan membagi implementasi menjadi 3 codelab:
Codelab 1: Menggunakan Gemini untuk membangun Java Cloud Function untuk aplikasi Gemini.
Codelab 2: Menggunakan Gemini untuk membangun aplikasi SQL dengan BigQuery dan AI Generatif.
Codelab 3: Menggunakan Gemini untuk membuat aplikasi web Java Spring Boot yang berinteraksi dengan BigQuery.
2. Menggunakan Gemini untuk membangun aplikasi SQL dengan BigQuery dan AI Generatif
Yang akan Anda build
Anda akan membuat
- Model jarak jauh di BigQuery yang memanggil endpoint text-bison-32k Vertex AI untuk mengidentifikasi genre (atau tema) buku dari daftar kata kunci yang dipisahkan dengan ";" dalam tabel.
- Fungsi jarak jauh di BigQuery yang akan memanggil Cloud Function AI generatif yang di-deploy dari jarak jauh.
- Gunakan model dan fungsi jarak jauh untuk meringkas tema dan teks buku dengan kueri SQL, lalu tulis hasilnya ke tabel baru dalam set data rak buku.
- Anda akan menerapkan langkah-langkah ini dengan bantuan Gemini
3. Persyaratan
- Browser, seperti Chrome atau Firefox
- Project Google Cloud yang mengaktifkan penagihan
- Akan sangat membantu jika Anda telah men-deploy Cloud Function sebagai bagian dari codelab bagian 1 yang berjudul Menggunakan Gemini untuk membangun Java Cloud Function untuk aplikasi Gemini.
- Bersyarat: Jika saat ini Anda memiliki akses ke link Kredit Google Cloud gratis (yang mungkin telah disediakan oleh penyelenggara workshop), gunakan petunjuk di bagian bawah halaman untuk menyelesaikan langkah AKTIVASI KREDIT dan PEMBUATAN PROJECT terlebih dahulu. Jika Anda tidak memiliki link ini, lanjutkan dengan langkah-langkah prasyarat penagihan dan project di bawah:
Buat project Anda
Anda dapat melewati langkah-langkah di bawah jika sudah mengaktifkan akun penagihan dan membuat project menggunakan link yang disebutkan pada langkah bersyarat di atas.
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
Aktifkan Cloud Shell
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq:
Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas: 
- Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
- Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.
4. Mengaktifkan Gemini for Google Cloud dan API yang diperlukan
Mengaktifkan Gemini
- Buka Marketplace Gemini for Google Cloud untuk mengaktifkan API. Anda juga dapat menggunakan perintah berikut:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- Buka halaman Gemini, lalu klik "Start chatting".
Aktifkan API lain yang diperlukan
Bagaimana cara melakukannya? Mari kita tanyakan pada Gemini. Tetapi sebelum itu, ingatlah:
Catatan: LLM bersifat non-deterministik. Sehingga, saat Anda mencoba perintah ini, respons yang Anda terima mungkin terlihat berbeda dengan yang ada di screenshot saya.
Buka konsol percakapan Gemini dengan mengklik ikon "Open Gemini" di sudut kanan atas di samping kotak penelusuran di konsol Google Cloud.
Ketik pertanyaan ini di bagian "Enter a prompt here":
Bagaimana cara mengaktifkan API BigQuery dan Vertex AI menggunakan perintah gcloud?
Anda akan mendapatkan respons seperti yang terlihat dalam gambar berikut:

Salin perintah tersebut (Anda dapat menggunakan ikon salin di bagian atas cuplikan perintah) dan jalankan di Terminal Cloud Shell untuk mengaktifkan layanan masing-masing:
- bigquery.googleapis.com
- aiplatform.googleapis.com
5. Mengeksplorasi set data publik BigQuery untuk data buku
Mulailah dengan memahami set data publik BigQuery yang berisi informasi dari banyak buku arsip internet.
Anda dapat menemukan set data publik ini di panel explorer BigQuery. Anda dapat menemukannya di sisi kiri saat membuka konsol BigQuery.

Ketik "gdelt-bq" atau "internetarchivebooks" di kotak penelusuran, lalu klik SEARCH ALL PROJECTS. Luaskan hasil dan bintangi buku arsip internet seperti yang ditunjukkan pada gambar di bawah:
.
Perluas set data, klik gdelt-bq.internetarchivebooks, lalu lihat pratinjau data pada tabel 1920. Tabel ini berisi buku dari tahun 1920 yang diarsipkan.
Untuk melihat skema yang akan kita gunakan di bagian berikutnya, jalankan kueri berikut:
select * from `gdelt-bq.internetarchivebooks.1920` limit 5;
Kita akan menggunakan tiga kolom berikut untuk codelab ini:
- BookMeta_Title (judul)
- Themes (tema yang dipisahkan oleh ‘;')
- BookMeta_FullText (teks buku lengkap)
6. Buat set data BigQuery baru bernama bookshelf
Kita ingin membuat set data dalam project untuk menyimpan semua objek database dan analisis yang akan kita buat dalam lab ini. Mari kita tanya Gemini cara membuat set data BigQuery. Anda sebaiknya sudah membuka percakapan Gemini di tab lain di browser dari langkah mengaktifkan API. Jika belum, Anda dapat melakukannya sekarang. Buka Konsol Google Cloud dengan membuka https://console.cloud.google.com dan Anda akan melihat ikon Gemini tepat di samping kotak penelusuran di bagian atas. Klik tombol tersebut dan chat akan terbuka.

Masukkan perintah seperti yang ditunjukkan di bawah.
Berikut perintah saya:
How to create a BigQuery dataset?
Berikut responsnya:

Ikuti langkah-langkah yang diuraikan dalam respons untuk membuat set data bernama "bookshelf" di project aktif Anda.
Untuk membuat set data BigQuery, ikuti langkah-langkah berikut:
- Buka halaman BigQuery di konsol Google Cloud.
- Di panel Explorer, klik project ID Anda.
- Klik Create dataset (opsi ini akan muncul saat Anda mengklik 3 titik di samping project ID Anda)
- Masukkan nama set data sebagai "bookshelf".
- Tetapkan lokasi sebagai "US(Multi-region)".
- Untuk langkah 3, 4, 5, dan 6 dari respons, biarkan opsi default.
- Klik CREATE DATASET.
Set data Anda akan dibuat dan muncul di panel Explorer. Set data "rak buku" dapat dilihat sebagai berikut:
7. Buat model jarak jauh untuk memanggil LLM Vertex AI (text-bison-32k)
Selanjutnya, kita perlu membuat model di BigQuery yang memanggil model Vertex AI "text-bison-32k". Model ini akan membantu mengidentifikasi tema umum, konteks buku, dari daftar kata kunci untuk setiap buku dalam set data.
Mari kita ajukan pertanyaan ini kepada Gemini. Untuk melakukannya, buka tab tempat Anda membuka konsol percakapan Gemini, lalu ketik perintah di bawah:
Bagaimana Anda akan menghubungkan BigQuery dan Vertex AI untuk memanggil endpoint LLM (text-bison-32k) di BigQuery?
Respons-nya adalah sebagai berikut:

Respons mencakup informasi yang akurat, seperti langkah-langkah yang mencakup penggunaan pernyataan CREATE MODEL, penggunaan koneksi BigQuery, dan penentuan endpoint. Pernyataan kueri akurat bagi saya, tetapi bukan berarti Anda akan menerima output yang sama persis karena ini adalah model bahasa besar, Anda mungkin mendapatkan respons dalam format, volume, dan kedalaman yang berbeda. Jika Anda tidak melihat semua detail yang telah saya terima, jangan ragu untuk mengajukan pertanyaan lanjutan dalam percakapan ini. Misalnya: Berikan detail selengkapnya tentang cara membuat resource koneksi atau alasan atribut koneksi tidak ada atau Bagaimana cara menghubungkan dari BigQuery ke Vertex AI, dll.
Berikut adalah contoh perintah lanjutan (gunakan ini hanya jika Anda memerlukan tindak lanjut, jika respons pertama yang Anda terima sudah cukup, lanjutkan dengan respons tersebut):
What about the connection? How will I connect from BigQuery to Vertex AI?
Berikut responsnya:

Ikuti langkah-langkah dari respons untuk membuat koneksi BigQuery:
- Buka konsol BigQuery.
- Di panel BigQuery Explorer, klik tombol "+ADD" dan klik "Connections to external data sources".
- Pada tahap ini, Anda akan diminta untuk Mengaktifkan BigQuery Connection API. Klik AKTIFKAN API:

- Klik "Koneksi ke sumber data eksternal" dan Anda akan melihat slide Sumber data eksternal seperti yang terlihat di bawah . Dari daftar sumber eksternal, pilih sumber "Vertex AI".

- Ketik ID koneksi (dapat berupa ID pilihan Anda, tetapi untuk saat ini, tetapkan sebagai "bq-vx" dan region (multi-region "US").
- Klik "Buat Koneksi".

- Setelah membuat koneksi, klik "Buka koneksi".
- Di halaman info koneksi, salin ID Akun Layanan karena kita akan menggunakan ID ini pada langkah-langkah berikutnya.
- Setelah koneksi dibuat, mari kita tetapkan izin ke ID akun layanan yang kita salin agar dapat menggunakan Vertex AI.
- Dari halaman Konsol Google Cloud, buka Google Cloud IAM atau buka link.
- Klik Grant Access di bagian View by Principals.

- Di kotak dialog Grant Access, masukkan ID Akun Layanan yang kita catat sebelumnya di dalam kotak teks New principals.
- Tetapkan peran ke "Vertex AI User".

Koneksi yang diperlukan telah dibuat. Izin yang diperlukan diberikan untuk pokok (akun layanan koneksi) guna menggunakan Vertex AI dari BigQuery.
Jalankan pernyataan DDL(Data Definition Language) berikut yang merepresentasikan pembuatan objek DB, dalam hal ini, MODEL di editor kueri BigQuery.
CREATE OR REPLACE MODEL bookshelf.llm_model
REMOTE WITH CONNECTION `us.bq-vx`
OPTIONS (ENDPOINT = 'text-bison-32k');
Sebagai alternatif untuk langkah di atas, Anda dapat meminta Gemini menyarankan kueri untuk membuat model guna memanggil model "text-bison-32k".
Catatan: Jika Anda menggunakan nama yang berbeda untuk koneksi, ganti " us.bq-vx" dengan nama tersebut dalam pernyataan DDL sebelumnya. Kueri ini membuat model jarak jauh di set data, "bookshelf", yang kita buat sebelumnya.
8. Buat fungsi jarak jauh yang memanggil Java Cloud Function
Sekarang kita akan membuat fungsi jarak jauh di BigQuery menggunakan Java Cloud Function yang kita buat di codelab 1 dari seri ini untuk menerapkan model Gemini. Fungsi jarak jauh ini akan digunakan untuk meringkas konten buku.
Catatan: Jika Anda belum menyelesaikan codelab ini atau belum men-deploy Cloud Function ini, Anda dapat melewati langkah ini dan melanjutkan ke topik berikutnya (yaitu, Merangkum tema buku menggunakan model jarak jauh).
Buka konsol BigQuery dan tempel pernyataan DDL berikut di Editor Kueri (Anda dapat membuat Tab Editor Kueri baru dengan mengklik tombol +)

Berikut adalah DDL yang dapat Anda salin. Jangan lupa untuk mengganti endpoint dengan endpoint Cloud Function yang di-deploy (dibuat dari codelab 1). Jika tidak memiliki endpoint, Anda dapat mengganti karakter yang disamarkan dalam DDL di bawah dengan "abis-345004" untuk tujuan demo.
CREATE OR REPLACE FUNCTION
`bookshelf.GEMINI_REMOTE_CALL` (context STRING) RETURNS STRING
REMOTE WITH CONNECTION `us.bq-vx`
OPTIONS (
endpoint = 'https://us-central1-****-******.cloudfunctions.net/remote-gemini-call' );
Buka konsol BigQuery di platform Google Cloud dan buka tab Query Editor baru. Di Editor Kueri BigQuery, tempelkan pernyataan DDL di atas. Anda dapat melihat respons berikut setelah menjalankan kueri:

Setelah model dan fungsi dibuat, mari kita uji kedua objek BigQuery ini dengan menjalankannya dalam kueri SELECT.
9. Meringkas tema menggunakan model jarak jauh
Mari kita gunakan model jarak jauh yang kita buat, "bookshelf.llm_model", untuk membuat kata kunci gabungan untuk buku dari daftar tema yang diberikan:
SELECT * FROM ML.GENERATE_TEXT(MODEL `bookshelf.llm_model`,
(
SELECT
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920` LIMIT 1
));
Langkah Opsional: Hasil untuk kolom hasil yang dibuat LLM disusun bertingkat. Mari tambahkan beberapa parameter LLM dan atribut "flatten_json_output" ke kueri. Menggunakan atribut "flatten_json_output" membantu menghapus struktur bertingkat dari kolom hasil yang dihasilkan LLM.
SELECT * FROM ML.GENERATE_TEXT ( MODEL `bookshelf.llm_model`, (
SELECT CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt FROM `gdelt-bq.internetarchivebooks.1920` limit 1),
STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));
Sekarang, jalankan kueri SELECT di Editor BigQuery dan verifikasi hasilnya. Kami telah membatasi hasil kueri menjadi 1 untuk pengujian. Hasilnya ditampilkan sebagai berikut:

10. Meringkas teks lengkap buku menggunakan fungsi jarak jauh
Sekarang kita akan mencoba meringkas buku dengan menjalankan Fungsi Cloud bookshelf.GEMINI_REMOTE_CALL yang kita buat sebelumnya.
Catatan: Jika Anda telah melewati pembuatan FUNCTION jarak jauh (topik sebelumnya dalam codelab ini), jangan lupa untuk melewati panggilan fungsi bookshelf.GEMINI_REMOTE_CALL dalam kueri SELECT juga.
Gunakan kueri SELECT yang memanggil fungsi jarak jauh (GEMINI_REMOTE_CALL) yang kita buat sebelumnya. Panggilan ke fungsi ini, GEMINI_REMOTE_CALL, menyertakan perintah yang meminta ringkasan teks buku:
select BookMeta_Title, `bookshelf.GEMINI_REMOTE_CALL` (
CONCAT('This is about a book. The title of the book is this: ', BookMeta_Title, ' . The theme of the book is as follows: ', Themes, 'The following text contains an excerpt from the book. Summarize it in less than 5 lines to create the gist. If you do not have a summary, use the title and themes to make up a short summary. DO NOT RETURN EMPTY RESPONSE. ', SUBSTR(BookMeta_FullText, 5000, 10000))) Summary
from `gdelt-bq.internetarchivebooks.1920` where Themes like '%EDUCATION%' limit 1;
Perhatikan bahwa kami telah mengambil substring dari teks lengkap buku untuk membuat ringkasan.
Hasil kuerinya adalah sebagai berikut:

11. Menyimpan data buku dalam tabel
Setelah menguji panggilan LLM (model dan fungsi jarak jauh) dari BigQuery hanya menggunakan kueri SQL, mari kita buat tabel BigQuery untuk menyimpan data "rak buku" dengan insight tema, dalam set data yang sama dengan model dan fungsi jarak jauh.
Kita dapat menyertakan panggilan model LLM dan panggilan fungsi jarak jauh dalam langkah ini. Namun, karena kita telah menandai panggilan fungsi jarak jauh (yang memanggil Cloud Function) sebagai langkah opsional, kita hanya akan menggunakan insight dari model jarak jauh.
Berikut kueri yang akan kita gunakan:
SELECT
BookMeta_Title, Themes, ml_generate_text_llm_result Context
FROM
ML.GENERATE_TEXT (
MODEL `bookshelf.llm_model`,
(
SELECT
BookMeta_Title,
Themes,BookMeta_FullText,
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
Saat Anda menjalankan kueri di Editor BigQuery, hasilnya adalah sebagai berikut:

Sekarang, mari minta Gemini membuat tabel bernama "bookshelf.books" dari kueri di atas. Buka konsol chat Gemini di Konsol Google Cloud dan masukkan perintah berikut.
Berikut perintah yang akan kita gunakan:
Create a BigQuery table named bookshelf.books from this SELECT query:
SELECT
BookMeta_Title, Themes, ml_generate_text_llm_result Context
FROM
ML.GENERATE_TEXT (
MODEL `bookshelf.llm_model`,
(
SELECT
BookMeta_Title,
Themes,BookMeta_FullText,
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
Respons percakapan Gemini adalah sebagai berikut:

Berikut kuerinya jika Anda ingin menyalinnya langsung dari sini:
CREATE TABLE bookshelf.books (
BookMeta_Title STRING,
Themes STRING,
ml_generate_text_llm_result STRING
) AS (
SELECT
BookMeta_Title,
Themes,
ml_generate_text_llm_result Context
FROM
ML.GENERATE_TEXT (
MODEL `bookshelf.llm_model`,
(
SELECT
BookMeta_Title,
Themes,
BookMeta_FullText,
CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
FROM `gdelt-bq.internetarchivebooks.1920`
LIMIT 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output
)
)
);
Setelah menjalankan kueri di Editor BigQuery, hasilnya adalah sebagai berikut:

Selesai! Sekarang, kueri tabel dan bereksperimenlah dengan data untuk mendapatkan lebih banyak insight.
12. Selamat
Selamat! Kami telah berhasil menyelesaikan hal berikut dan menggunakan Gemini di beberapa langkah prosesnya:
- Membuat model jarak jauh di BigQuery yang memanggil endpoint "text-bison-32k" Vertex AI untuk mengidentifikasi genre (atau tema) buku dari daftar kata kunci yang dipisahkan dengan ";" dalam tabel.
- Membuat fungsi jarak jauh di BigQuery yang akan memanggil Cloud Function AI generatif yang di-deploy ini dari jarak jauh. Fungsi ini akan menggunakan perintah sebagai input dan menghasilkan string yang merangkum buku dalam 5 baris.
- Menggunakan model dan fungsi jarak jauh untuk meringkas tema dan teks buku dengan kueri SQL serta menulis hasilnya ke tabel baru dalam set data rak buku.
- Sebagai tugas lanjutan, coba gunakan Gemini untuk mendapatkan SQL guna menghapus objek yang dibuat di BigQuery. Bagian ini akan mencakup langkah pembersihan.