1. Sebelum memulai
Gemini API memberi Anda akses ke model AI generatif dari rangkaian model Gemini. Gemini API akan memungkinkan Anda membuat pengalaman baru yang hingga saat ini belum tersedia.
Codelab ini memandu Anda melalui proses menambahkan kemampuan ringkasan ke aplikasi JetNews. JetNews adalah aplikasi baca berita yang dibangun dengan Jetpack Compose, bagian dari repositori compose-samples.
Dalam codelab ini, Anda akan:
- Membuat perintah untuk meringkas artikel berita di Vertex AI Studio.
- Mengintegrasikan Vertex AI in Firebase SDK ke JetNews.
- Menambahkan bagian "Ringkasan Gemini" di bagian atas tampilan artikel dan tombol "ringkasan" di panel bawah.
Aplikasi JetNews dengan fitur ringkasan yang didukung oleh Gemini API.
Prasyarat
- Pengetahuan Kotlin dasar
- Memahami cara menggunakan Android Studio dan menguji aplikasi di emulator atau perangkat fisik yang menjalankan Android level API 21 atau yang lebih tinggi
- Akun Google untuk mengakses Firebase
2. Membuat perintah
Perintah adalah pesan yang dikirim oleh aplikasi Anda ke model Gemini melalui Gemini API. Perintah ini dapat mencakup file teks, gambar, audio, dan video.
Membuat perintah yang ideal untuk kasus penggunaan tertentu bukan hanya sekedar membuat pesan, dan sering kali memerlukan beberapa iterasi. Vertex AI Studio adalah alat yang bagus untuk membuat perintah Anda.
Untuk contoh ini, Anda akan membuat perintah teks di Vertex AI Studio. Buka Vertex AI Studio, lalu klik "Freeform" di navigasi sebelah kiri.
Dalam codelab ini, Anda akan meringkas konten artikel teknis menjadi empat poin butir. Tujuan Anda membuat perintah ini adalah memastikan bahwa ringkasannya relevan dan dalam bentuk teks biasa tanpa pemformatan Markdown.
Setelah beberapa iterasi, Anda mungkin akan menemukan perintah yang berfungsi dengan sangat baik. Seperti perintah berikut ini:
Summarize the core findings of the following article in 4 concise bullet points. Ensure each bullet point is specific, informative and relevant. Return just the bullet points as plain text. Don't use markdown.
[article body]
Setelah merasa puas dengan outputnya, Anda kini dapat mengintegrasikan Gemini API ke aplikasi Android.
3. Melihat kode
Mulai dengan melihat kode sumber awal dari GitHub:
git clone https://github.com/android/codelab-gemini-summary
Aplikasi JetNews dirancang dari awal untuk mengikuti praktik terbaik arsitektur Android dan agar sesuai untuk digunakan di semua perangkat seluler, baik besar maupun kecil.
Baca selengkapnya tentang pendekatan penerapan JetNews untuk mendukung perangkat layar besar.
Jika kode sumber aplikasi JetNews terlalu banyak, jangan khawatir. Untuk menambahkan fitur ringkasan yang didukung oleh Gemini, Anda hanya akan mengubah kode di class GeminiRepositoryImpl
. Kode yang memicu ringkasan dan menampilkan ringkasan di aplikasi sudah diterapkan untuk Anda.
Penerapan akhir
Anda dapat langsung mengakses penerapan akhir kode sumber dengan memeriksa cabang ini:
git clone https://github.com/android/codelab-gemini-summary git switch final
Anda harus mengikuti petunjuk yang dijelaskan di langkah 4 codelab ini untuk membuat dan menyiapkan project Firebase.
4. Menyiapkan project Firebase Anda
Membuat project Firebase
Buat project Firebase di Firebase console. Buat project Firebase baru dengan memasukkan nama project baru di langkah pertama alur kerja "Create project". Project Google Cloud yang mendasarinya dibuat secara otomatis.
Di project Anda, buka halaman Build with Gemini untuk melakukan hal berikut:
- Mengupgrade project Anda untuk menggunakan paket harga Blaze yang dibayar sesuai penggunaan. Perhatikan bahwa jika Anda baru menggunakan Firebase dan Google Cloud, pastikan apakah Anda memenuhi syarat untuk mendapatkan kredit sebesar $300.
- Mengaktifkan API yang diperlukan di project Anda (Vertex AI API dan Vertex AI in Firebase API).
Menghubungkan aplikasi Anda ke Firebase
Setelah menyiapkan project Firebase, Anda perlu menghubungkan aplikasi Android ke project tersebut.
- Di Firebase console, pilih project Anda.
- Klik "Add app", lalu pilih "Android".
- Ikuti petunjuk di layar untuk mendaftarkan aplikasi Anda dengan memberikan nama paket aplikasi.
- Download file
google-services.json
, lalu tambahkan ke direktori root modul (level aplikasi) aplikasi Anda. - Lanjutkan mengikuti petunjuk di layar untuk menambahkan plugin Gradle layanan Google dan dependensi Gradle Firebase Bill of Materials (BoM) ke aplikasi Anda.
Alternatif: Gunakan Firebase Assistant di Android Studio untuk menghubungkan aplikasi Anda
Atau, Anda dapat menggunakan Firebase Assistant di Android Studio untuk menghubungkan aplikasi ke Firebase dengan beberapa klik tombol.
Firebase Assistant memungkinkan Anda mendaftarkan aplikasi ke project Firebase, menambahkan file, plugin, dan dependensi Firebase yang diperlukan ke project Android Anda, semuanya dari dalam Android Studio.
Lihat petunjuk mendetail di dokumentasi Firebase.
5. Memperbarui impor Gradle
Aplikasi JetNews menggunakan fitur katalog versi Gradle, yang membantu memusatkan versi dependensi.
- Untuk menambahkan impor Gradle untuk Vertex AI in Firebase SDK, tambahkan kode berikut ke
libs.versions.toml
:[versions] ... vertexai = "16.0.0" [libraries] ... firebase-vertexai = { module = "com.google.firebase:firebase-vertexai", version.ref = "vertexai"}
- Perbarui
build.gradle.kts
:implementation(libs.firebase.vertexai)
- Klik "Sync now" untuk mengambil artefak Gradle.
Jika tidak ingin menggunakan katalog versi Gradle, Anda dapat langsung menambahkan impor di build.gradle.kts
:
// Import the Firebase BoM
implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
implementation("com.google.firebase:firebase-vertexai")
6. Integrasi Kotlin
Setelah dependensi yang tepat ditambahkan, perbarui kode Kotlin.
Buka class GeminiRepositoryImpl
. Class ini akan menghosting semua kode yang berinteraksi dengan Gemini API.
Inisialisasi model Gemini
Buat instance GenerativeModel
:
private val generativeModel = Firebase.vertexAI.generativeModel(
"gemini-1.5-flash",
generationConfig = generationConfig {
temperature = 0f
},
safetySettings = listOf(
SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.DANGEROUS_CONTENT, HarmBlockThreshold.LOW_AND_ABOVE),
)
)
Dalam contoh ini, Anda mengakses model Gemini 1.5 Flash. Model ini dapat menangani kasus penggunaan ringkasan teks contoh ini, dan lebih hemat biaya daripada Gemini 1.5 Pro. Pelajari lebih lanjut model Gemini yang tersedia di dokumentasi Vertex AI in Firebase.
Contoh ini juga menetapkan nilai suhu ke 0, yang memastikan konsistensi dalam pembuatan ringkasan dengan lebih baik. Pelajari lebih lanjut parameter konfigurasi model di dokumentasi Vertex AI in Firebase.
Terakhir, contoh ini menentukan setelan keamanan untuk memastikan model menghasilkan respons dengan bahasa yang sesuai. Pelajari lebih lanjut fitur setelan keamanan di dokumentasi Vertex AI in Firebase.
Pembuatan ringkasan menggunakan Gemini
Selanjutnya, perbarui fungsi summarizePost()
untuk meringkas postingan yang diteruskan sebagai parameter.
Pertama, ekstrak teks dari postingan untuk meneruskannya ke model:
val postString = StringBuilder()
for (paragraph in post.paragraphs) {
postString.append(paragraph.text)
}
Buat prompt
berdasarkan perintah yang dibuat di langkah #2 codelab ini, lalu teruskan postingan:
val prompt =
"Summarize the following article in 4 concise bullet points. " +
"Ensure each bullet point is specific, informative and relevant. " +
"Return just the bullet points as plain text. " +
"Use plain text, don't use markdown. \n $postString"
Terakhir, teruskan perintah ke model dan tampilkan respons:
return generativeModel.generateContent(prompt).text
Menguji penerapan
Untuk menguji penerapan, klik "Run app" di Android Studio, lalu instal aplikasi JetNews di emulator atau perangkat fisik.
Buka artikel dari halaman beranda, lalu klik tombol ringkas di panel bawah:
Anda akan melihat bagian "Ringkasan Gemini" muncul di bagian atas artikel, di bawah ilustrasi artikel:
Arsitektur aplikasi JetNews
JetNews dibangun untuk menunjukkan kemampuan UI Jetpack Compose saat ini. Hal ini diimplementasikan untuk mendukung berbagai ukuran layar (untuk mengetahui detailnya, lihat postingan blog ini).
Tujuan codelab ini bukan untuk membahas detail arsitektur aplikasi JetNews. Integrasi Gemini sebagian besar terjadi di class GeminiRepositoryImpl
.
Namun, jika ingin melihat cara tombol memicu ringkasan, Anda dapat melihat SummaryButton()
di JetnewsIcons.kt
. Anda juga dapat meninjau penerapan UI dari UI ringkasan dalam fungsi SummarySection()
di PostContent.kt
.
7. Kesimpulan
Selama codelab ini, Anda telah mempelajari cara:
- Membuat dan menguji perintah di Vertex AI Studio.
- Menyiapkan project di Firebase untuk menggunakan Vertex AI in Firebase dan Gemini API.
- Mengonfigurasi dependensi Gradle untuk menggunakan Vertex AI in Firebase di aplikasi Android.
- Memanggil Gemini API untuk mengakses model Gemini 1.5 Flash dari kode Kotlin.
Jika ingin mempelajari lebih lanjut Vertex AI in Firebase untuk aplikasi Android, Anda dapat meninjau contoh kode Android dan meninjau dokumentasi.