Diposting oleh Thomas Ezan, Insinyur Hubungan Pengembang Senior
Ribuan pengembang di seluruh dunia memanfaatkan kecanggihan model Flash Gemini 1.5 Pro dan Gemini 1.5 untuk menghadirkan fitur AI generatif canggih pada aplikasi mereka. Tak terkecuali para pengembang Android, dan dengan rilis stabil VertekAI di Firebase yang akan datang dalam beberapa minggu lagi (tersedia dalam versi beta sejak Google I/O), ini adalah waktu yang tepat untuk mengeksplorasi bagaimana aplikasi Anda dapat memanfaatkannya. Kami baru saja merilis lab kode untuk membantu Anda memulai.
Mari selami lebih dalam beberapa kemampuan Gemini API tingkat lanjut yang lebih dari sekadar mengirim pesan teks dan temukan kasus penggunaan menarik yang dapat dibuka di aplikasi Android Anda.
Membentuk perilaku kecerdasan buatan menggunakan instruksi sistem
Perintah sistem berfungsi sebagai “pembukaan” yang Anda sisipkan sebelum permintaan pengguna. Hal ini memungkinkan pembentukan perilaku model sesuai dengan kebutuhan dan skenario spesifik Anda. Anda menetapkan instruksi saat Anda menginisialisasi model, dan kemudian instruksi tersebut tetap ada melalui semua interaksi dengan model, di beberapa iterasi pengguna dan model.
Misalnya, Anda dapat menggunakan instruksi sistem untuk:
Tentukan persona atau peran untuk chatbot (misalnya “jelaskan seperti saya berusia 5 tahun”) Tentukan format keluaran respons (misalnya Markdown, IAML, dll.) Tetapkan gaya dan nada keluaran (misalnya verbositas, formalitas, dll. … ) Tentukan tujuan atau aturan untuk tugas tersebut (misalnya “mengembalikan cuplikan kode tanpa penjelasan lebih lanjut”) Memberikan konteks tambahan untuk kueri (misalnya tanggal akhir pengetahuan)
Untuk menggunakan arahan sistem di aplikasi Android Anda, teruskan arahan tersebut sebagai parameter saat Anda menginisialisasi model:
val generativeModel = Firebase.vertekAI.generativeModel( modelName = “gemini-1.5-flash”, … systemInstruction = content { text(“Anda adalah seorang guru yang berpendidikan. Jawablah pertanyaan menggunakan metode pengajaran Socrates.”) })
Anda dapat mempelajari lebih lanjut petunjuk sistem di dokumentasi Vertek AI di dokumentasi Firebase.
Anda juga dapat dengan mudah menguji kueri Anda menggunakan berbagai instruksi sistem di Vertek AI Studio, alat konsol Google Cloud untuk pembuatan prototipe cepat dan pengujian kueri dengan model Gemini.
Vertek AI Studio memungkinkan Anda menguji instruksi sistem dengan pertanyaan Anda
Saat Anda siap untuk memasuki produksi, disarankan agar Anda menargetkan versi model tertentu (misalnya gemini-1.5-flash-002). Namun karena versi model baru telah dirilis dan model sebelumnya tidak digunakan lagi, disarankan untuk menggunakan Firebase Remote Config agar dapat mengupdate versi model Gemini tanpa merilis versi baru aplikasi Anda.
Selain chatbot: memanfaatkan kecerdasan buatan generatif untuk kasus penggunaan tingkat lanjut
Meskipun chatbot adalah aplikasi kecerdasan buatan generatif yang populer, kemampuan API Gemini lebih dari sekadar antarmuka percakapan dan Anda dapat mengintegrasikan fitur multimodal berkemampuan GenAI ke dalam berbagai aspek aplikasi Android Anda.
Banyak tugas yang sebelumnya memerlukan campur tangan manusia (seperti menganalisis konten teks, gambar atau video, mensintesis data ke dalam format yang dapat dibaca manusia, terlibat dalam proses kreatif untuk menghasilkan konten baru, dll…) berpotensi dapat diotomatisasi dengan GenAI.
Dukungan Gemini JSON
Aplikasi Android tidak berinteraksi dengan baik dengan keluaran bahasa alami. Sebaliknya, JSON ada di mana-mana dalam pengembangan Android dan menyediakan cara yang lebih terstruktur bagi aplikasi Android untuk menggunakan input. Namun, memastikan pemformatan kunci/nilai yang tepat saat bekerja dengan model generatif dapat menjadi sebuah tantangan.
Dengan ketersediaan umum Vertek AI di Firebase, solusi diterapkan untuk menyederhanakan pembuatan JSON dengan format kunci/nilai yang sesuai:
Pengidentifikasi tipe respons MIME
Jika Anda mencoba membuat JSON dengan model AI generatif, Anda mungkin menemukan teks tambahan yang tidak diinginkan yang membuat penguraian JSON menjadi lebih menantang.
misalnya:
Benar saja, inilah JSON Anda: “` { “someKey”: “someValue”, … } “`
Saat menggunakan Gemini 1.5 Pro atau Gemini 1.5 Flash, dalam konfigurasi pembuatan, Anda dapat secara eksplisit menentukan respons model mime/type sebagai application/json dan menginstruksikan model untuk menghasilkan output JSON yang terstruktur dengan baik.
val generativeModel = Firebase.vertekAI.generativeModel( modelName = “gemini-1.5-flash”, … generationConfig = generationConfig { responMimeType = “application/json” } )
Harap tinjau referensi API untuk detail lebih lanjut.
Nantinya, Android SDK untuk Vertek AI di Firebase akan memungkinkan Anda menentukan skema JSON yang diharapkan dalam respons.
Kemampuan multimoda
Baik Gemini 1.5 Flash dan Gemini 1.5 Pro adalah model multimodal. Artinya mereka dapat menangani masukan dari berbagai format, termasuk teks, gambar, audio, video. Selain itu, keduanya memiliki jendela konteks yang panjang, mampu memproses hingga 1 juta token untuk Gemini 1.5 Flash dan 2 juta token untuk Gemini 1.5 Pro.
Fitur-fitur ini membuka pintu bagi fungsionalitas inovatif yang sebelumnya tidak tersedia, seperti secara otomatis menghasilkan teks deskriptif untuk gambar, mengidentifikasi topik percakapan dan menghasilkan bab dari file audio atau mendeskripsikan adegan dan tindakan dalam file video.
Anda dapat meneruskan gambar ke model seperti yang ditunjukkan dalam contoh ini:
val contentResolver = applicationContekt.contentResolver contentResolver.openInputStream(imageUri).use { stream -> stream?.let { val bitmap = BitmapFactori.decodeStream(stream) // Berikan prompt yang menyertakan gambar yang ditentukan di atas dan teks val prompt = content { image( bitmap) text(“Ada berapa orang di gambar ini?”) } } val respon = generativeModel.generateContent(prompt)}
Anda juga dapat meneruskan video ke model:
val contentResolver = applicationContekt.contentResolver contentResolver.openInputStream(videoUri).use { stream -> stream?.let { val bites = stream.readBites() // Berikan prompt yang menyertakan video dan teks di atas val prompt = content { blob ( ” video/mp4″, bytes) text(“Apa isi videonya?”) } val fullResponse = generativeModel.generateContent(prompt) } }
Anda dapat mempelajari lebih lanjut perintah multimodal di dokumentasi VertekAI untuk Firebase.
Catatan: Cara ini memungkinkan Anda mengunggah file hingga 20 MB. Untuk file yang lebih besar, gunakan Cloud Storage for Firebase dan sertakan URL file dalam permintaan multimodal Anda. Baca dokumentasi untuk informasi lebih lanjut. Pemanggilan Fungsi: Memperluas Kemampuan Model
Panggilan fungsi memungkinkan Anda memperluas kemampuan model generatif. Misalnya, Anda bisa mengaktifkan model untuk mengambil informasi dalam database SQL Anda dan mengembalikannya ke konteks kueri. Anda juga dapat mengizinkan model untuk memicu tindakan dengan memanggil fungsi dalam kode sumber aplikasi. Pada dasarnya, pemanggilan fungsi menjembatani kesenjangan antara model Gemini dan kode Kotlin Anda.
Ambil contoh aplikasi pesan-antar makanan yang tertarik mengimplementasikan antarmuka percakapan dengan Gemini 1.5 Flash. Misalkan aplikasi ini memiliki fungsi getFoodOrder(cuisine: String) yang mengembalikan daftar pesanan dari pengguna untuk jenis masakan tertentu:
getFoodOrder yang menyenangkan(masakan: String) : JSONObject { // implementasi… }
Perhatikan bahwa fungsi tersebut, agar dapat digunakan oleh model, harus mengembalikan respons dalam bentuk JSONObject.
Agar respons tersedia untuk Gemini 1.5 Flash, buat definisi fungsi Anda yang dapat dipahami model menggunakan defineFunction:
val getOrderListFunction = defineFunction( name = “getOrderList”, Description = “Dapatkan daftar pesanan makanan dari pengguna untuk jenis masakan yang ditentukan.”, Schema.str(name = “cuisineType”, Description = “jenis masakan untuk pesanan”) ) { Tipe Masakan -> getFoodOrder(Tipe Masakan)}
Kemudian, saat Anda membuat instance model, bagikan definisi fungsi ini dengan model menggunakan parameter alat:
val generativeModel = Firebase.vertekAI.generativeModel( modelName = “gemini-1.5-flash”, … alat = listOf(Tool(listOf(getExchangeRate)))
Terakhir, saat Anda menerima respons dari model, periksa respons tersebut untuk melihat apakah model benar-benar meminta untuk menjalankan fungsi tersebut:
// Kirim pesan ke model generatif var respon = chat.sendMessage(prompt) // Periksa apakah model merespons dengan memanggil fungsi respon.functionCall?.let { functionCall -> // Coba ambil lambda yang disimpan dari alat model dan // memberikan pengecualian jika fungsi yang dikembalikan tidak dideklarasikan val matchedFunction = generativeModel.tools?.flatMap { it.functionDeclarations } ?.first { it.name == functionCall.name } ?: throv InvalidStateException(“Fungsi tidak ditemukan : ${functionCall.name}”) // Panggil lambda yang diambil di atas val apiResponse: JSONObject = matchedFunction.ekecute(functionCall) // Kirim respons API kembali ke model generatif // sehingga menghasilkan respons teks yang dapat ditampilkan kepada pengguna respon = chat.sendMessage( content(role = “function “) { part(FunctionResponsePart(functionCall.name, apiResponse)) } ) } // Jika model merespons dengan teks, tampilkan di UI respon.tekt ?.biarkan { modelResponse -> println(modelResponse)}
Ringkasnya, Anda akan menyediakan fungsi (atau alat model) pada inisialisasi:
Dan bila diperlukan, model akan meminta untuk menjalankan fungsi yang sesuai dan memberikan hasilnya:
Membuka potensi API Gemini di aplikasi Anda
Gemini API menawarkan banyak fitur canggih yang memberdayakan pengembang Android untuk menciptakan aplikasi yang benar-benar inovatif dan menarik. Dengan melampaui kueri teks dasar dan mengeksplorasi kemungkinan yang disorot dalam postingan blog ini, Anda dapat menciptakan pengalaman bertenaga AI yang menyenangkan pengguna dan membedakan aplikasi Anda dalam lanskap Android yang kompetitif.
Untuk mempelajari lebih lanjut tentang AI di Android, lihat sumber daya lain yang kami miliki selama AI di Android Spotlight Week.
Gunakan hashtag #AndroidAI untuk membagikan kreasi atau masukan Anda di media sosial dan bergabunglah dengan kami di garis depan revolusi AI!
Cuplikan kode dalam postingan blog ini dilisensikan dengan lisensi berikut:
// Hak Cipta 2024. Google LLC. // Pengenal-Lisensi SPDKS: Apache-2.0