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.
- AI Summarization Engine: Google Cloud Functions, yang dilengkapi dengan model bahasa Gemini 1.0 Pro, akan menghasilkan ringkasan informatif 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 mem-build 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 ";" 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 dan menulis 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 mem-build 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 untuk Google Cloud dan API yang diperlukan
Mengaktifkan Gemini
- Buka Gemini untuk Google Cloud Marketplace guna 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 di lab ini. Mari kita tanya Gemini cara membuat set data BigQuery. Anda seharusnya sudah membuka chat 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 ini.
Berikut perintah saya:
How to create a BigQuery dataset?
Berikut adalah responsnya:
Mari kita ikuti langkah-langkah yang diuraikan dalam respons untuk membuat {i>dataset<i} bernama "{i>bookshelf<i}" dalam proyek aktif Anda.
Untuk membuat set data BigQuery, ikuti langkah-langkah berikut:
- Buka halaman BigQuery di konsol Google Cloud.
- Di panel Penjelajah, klik project ID Anda.
- Klik Create dataset (harus ada dalam opsi yang tercantum saat Anda mengklik 3 titik di sebelah project id)
- 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 akan muncul di panel Penjelajah. Set data "rak buku" dapat dilihat sebagai berikut:
7. Membuat 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 untuk buku, dari daftar kata kunci untuk setiap buku dalam set data.
Mari kita tanyakan pertanyaan ini kepada Gemini. Untuk melakukannya, buka tab tempat Anda membuka konsol chat Gemini dan 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 menyertakan informasi yang akurat, seperti langkah-langkah yang mencakup penggunaan pernyataan CREATE MODEL, penggunaan koneksi BigQuery, dan penentuan endpoint. Pernyataan kueri akurat untuk 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 saya terima, silakan ajukan chat dengan pertanyaan lanjutan. Misalnya: Berikan detail selengkapnya tentang cara membuat resource koneksi, alasan atribut koneksi tidak ada, atau Bagaimana cara menghubungkan dari BigQuery ke Vertex AI, dll.
Berikut adalah contoh perintah tindak lanjut (gunakan ini hanya jika Anda memerlukan tindak lanjut, jika respons pertama yang Anda terima sudah memadai, lanjutkan):
What about the connection? How will I connect from BigQuery to Vertex AI?
Berikut adalah responsnya:
Mari kita 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 ENABLE 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 (ini 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 Service Account ID karena kita akan menggunakan ID ini pada langkah berikutnya.
- Setelah koneksi dibuat, mari kita tetapkan izin ke ID akun layanan ini yang kita salin agar dapat menggunakan Vertex AI.
- Dari halaman Konsol Google Cloud, buka Google Cloud IAM atau buka linknya.
- Klik Grant Access di bagian Lihat menurut Principals.
- Di kotak dialog Grant Access, masukkan ID Akun Layanan yang telah kita catat sebelumnya di dalam kotak teks New principles.
- Tetapkan peran ke "Vertex AI User".
Koneksi yang diperlukan telah dibuat. Izin yang diperlukan diberikan kepada akun utama (akun layanan koneksi) untuk menggunakan Vertex AI dari BigQuery.
Jalankan pernyataan DDL(Data Definition Language) berikut yang mewakili 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 langkah di atas, Anda dapat meminta Gemini untuk menyarankan kueri guna membuat model untuk 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 dalam set data, "bookshelf", yang telah kita buat sebelumnya.
8. Membuat 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 melewatkan 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 Functions 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 Editor Kueri baru. Di Editor Kueri BigQuery, tempel 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 dihasilkan 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 BigQuery Editor 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.
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 digunakan dalam pembuatan ringkasan.
Hasil kueri 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 sebenarnya 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 adalah 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 BigQuery Editor, hasilnya adalah sebagai berikut:
Sekarang, mari kita minta Gemini untuk 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 chat Gemini adalah sebagai berikut:
Berikut adalah kueri 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 BigQuery Editor, hasilnya adalah sebagai berikut:
Selesai. Sekarang, buat kueri tabel dan coba gunakan data untuk mendapatkan insight selengkapnya.
12. Selamat
Selamat! Kami telah berhasil menyelesaikan hal berikut dan juga menggunakan Gemini dalam beberapa langkah proses:
- 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 ";" 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 meringkas buku dalam 5 baris.
- Menggunakan model dan fungsi jarak jauh untuk meringkas tema dan teks buku dengan kueri SQL dan 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. Kalimat ini akan membahas langkah pembersihan.