Untuk mengakses Gemini API dan serangkaian model Gemini langsung dari aplikasi Anda, sebaiknya gunakan Vertex AI di Firebase SDK untuk Android. SDK ini adalah bagian dari platform Firebase yang lebih besar yang membantu Anda mem-build dan menjalankan aplikasi full-stack.
Bermigrasi dari SDK klien Google AI
Vertex AI di Firebase SDK mirip dengan SDK klien Google AI, tetapi Vertex AI di Firebase SDK menawarkan opsi keamanan penting dan fitur lainnya untuk kasus penggunaan produksi. Misalnya, saat menggunakan Vertex AI di Firebase, Anda juga dapat menggunakan hal berikut:
Firebase App Check untuk melindungi Gemini API dari penyalahgunaan oleh klien yang tidak sah.
Firebase Remote Config untuk menetapkan dan mengubah nilai secara dinamis untuk aplikasi Anda di cloud (misalnya, nama model) tanpa perlu merilis versi baru aplikasi Anda.
Cloud Storage for Firebase untuk menyertakan file media berukuran besar dalam permintaan Anda ke Gemini API.
Jika sudah mengintegrasikan SDK klien Google AI ke dalam aplikasi, Anda dapat Bermigrasi ke Vertex AI di Firebase.
Memulai
Sebelum berinteraksi dengan Gemini API langsung dari aplikasi, Anda harus melakukan beberapa hal terlebih dahulu, termasuk memahami perintah serta menyiapkan Firebase dan aplikasi Anda untuk menggunakan SDK.
Bereksperimen dengan perintah
Anda dapat bereksperimen dengan perintah di Vertex AI Studio. Vertex AI Studio adalah IDE untuk desain dan pembuatan prototipe perintah. Dengan alat ini, Anda dapat mengupload file untuk menguji perintah dengan teks dan gambar serta menyimpan perintah untuk melihatnya lagi nanti.
Membuat perintah yang tepat untuk kasus penggunaan Anda lebih merupakan seni daripada sains, yang membuat eksperimen menjadi penting. Anda dapat mempelajari lebih lanjut perintah di dokumentasi Firebase.
Menyiapkan project Firebase dan menghubungkan aplikasi ke Firebase
Setelah Anda siap memanggil Gemini API dari aplikasi, ikuti petunjuk dalam panduan memulai Vertex AI di Firebase untuk menyiapkan Firebase dan SDK di aplikasi Anda. Panduan memulai akan membantu Anda melakukan semua tugas berikut dalam panduan ini.
Siapkan project Firebase baru atau yang sudah ada, termasuk menggunakan paket harga Blaze bayar sesuai penggunaan dan mengaktifkan API yang diperlukan.
Hubungkan aplikasi Anda ke Firebase, termasuk mendaftarkan aplikasi dan menambahkan file konfigurasi Firebase (
google-services.json
) ke aplikasi Anda.
Menambahkan dependensi Gradle
Tambahkan dependensi Gradle berikut ke modul aplikasi Anda:
Kotlin
dependencies { ... implementation("com.google.firebase:firebase-vertexai:16.0.2") }
Java
dependencies { [...] implementation("com.google.firebase:firebase-vertexai:16.0.2") // Required to use `ListenableFuture` from Guava Android for one-shot generation implementation("com.google.guava:guava:31.0.1-android") // Required to use `Publisher` from Reactive Streams for streaming operations implementation("org.reactivestreams:reactive-streams:1.0.4") }
Melakukan inisialisasi layanan Vertex AI dan model generatif
Mulai dengan membuat instance GenerativeModel
dan menentukan nama model:
Kotlin
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-flash")
Java
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel("gemini-1.5-flash");
Dalam dokumentasi Firebase, Anda dapat mempelajari lebih lanjut model yang tersedia untuk digunakan dengan Vertex AI di Firebase. Anda juga dapat mempelajari cara mengonfigurasi parameter model.
Berinteraksi dengan Gemini API dari aplikasi Anda
Setelah menyiapkan Firebase dan aplikasi untuk menggunakan SDK, Anda siap untuk berinteraksi dengan Gemini API dari aplikasi.
Membuat teks
Untuk membuat respons teks, panggil generateContent()
dengan perintah Anda.
Kotlin
// Note: `generateContent()` is a `suspend` function, which integrates well // with existing Kotlin code. scope.launch { val response = model.generateContent("Write a story about the green robot") }
Java
// In Java, create a `GenerativeModelFutures` from the `GenerativeModel`. // Note that `generateContent()` returns a `ListenableFuture`. Learn more: // https://developer.android.com/develop/background-work/background-tasks/asynchronous/listenablefuture GenerativeModelFutures model = GenerativeModelFutures.from(gm); Content prompt = new Content.Builder() .addText("Write a story about a green robot.") .build(); ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt); Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() { @Override public void onSuccess(GenerateContentResponse result) { String resultText = result.getText(); } @Override public void onFailure(Throwable t) { t.printStackTrace(); } }, executor);
Membuat teks dari gambar dan media lainnya
Anda juga dapat membuat teks dari perintah yang menyertakan teks plus gambar atau media
lainnya. Saat memanggil generateContent()
, Anda dapat meneruskan media sebagai data inline
(seperti yang ditunjukkan dalam contoh di bawah). Atau, Anda dapat
menyertakan file media berukuran besar dalam permintaan dengan menggunakan URL Cloud Storage untuk Firebase.
Kotlin
scope.launch { val response = model.generateContent( content { image(bitmap) text("what is the object in the picture?") } ) }
Java
GenerativeModelFutures model = GenerativeModelFutures.from(gm); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sparky); Content prompt = new Content.Builder() .addImage(bitmap) .addText("What developer tool is this mascot from?") .build(); ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt); Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() { @Override public void onSuccess(GenerateContentResponse result) { String resultText = result.getText(); } @Override public void onFailure(Throwable t) { t.printStackTrace(); } }, executor);
Chat multi-giliran
Anda juga dapat mendukung percakapan multi-giliran. Lakukan inisialisasi chat dengan
fungsi startChat()
. Anda dapat memberikan histori pesan secara opsional. Kemudian,
panggil fungsi sendMessage()
untuk mengirim pesan chat.
Kotlin
val chat = generativeModel.startChat( history = listOf( content(role = "user") { text("Hello, I have 2 dogs in my house.") }, content(role = "model") { text("Great to meet you. What would you like to know?") } ) ) scope.launch { val response = chat.sendMessage("How many paws are in my house?") }
Java
// (Optional) create message history Content.Builder userContentBuilder = new Content.Builder(); userContentBuilder.setRole("user"); userContentBuilder.addText("Hello, I have 2 dogs in my house."); Content userContent = userContentBuilder.build(); Content.Builder modelContentBuilder = new Content.Builder(); modelContentBuilder.setRole("model"); modelContentBuilder.addText("Great to meet you. What would you like to know?"); Content modelContent = userContentBuilder.build(); List<Content> history = Arrays.asList(userContent, modelContent); // Initialize the chat ChatFutures chat = model.startChat(history); // Create a new user message Content.Builder messageBuilder = new Content.Builder(); messageBuilder.setRole("user"); messageBuilder.addText("How many paws are in my house?"); Content message = messageBuilder.build(); Publisher<GenerateContentResponse> streamingResponse = chat.sendMessageStream(message); StringBuilder outputContent = new StringBuilder(); streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() { @Override public void onNext(GenerateContentResponse generateContentResponse) { String chunk = generateContentResponse.getText(); outputContent.append(chunk); } @Override public void onComplete() { // ... } @Override public void onError(Throwable t) { t.printStackTrace(); } @Override public void onSubscribe(Subscription s) { s.request(Long.MAX_VALUE); } });
Menampilkan respons secara bertahap
Anda dapat mencapai interaksi yang lebih cepat dengan tidak menunggu seluruh hasil dari
pembuatan model, dan sebagai gantinya menggunakan streaming untuk menangani hasil sebagian. Gunakan
generateContentStream()
untuk melakukan streaming respons.
Kotlin
scope.launch { var outputContent = "" generativeModel.generateContentStream(inputContent) .collect { response -> outputContent += response.text } }
Java
// Note that in Java the method `generateContentStream()` returns a // Publisher from the Reactive Streams library. // https://www.reactive-streams.org/ GenerativeModelFutures model = GenerativeModelFutures.from(gm); // Provide a prompt that contains text Content prompt = new Content.Builder() .addText("Write a story about a green robot.") .build(); Publisher<GenerateContentResponse> streamingResponse = model.generateContentStream(prompt); StringBuilder outputContent = new StringBuilder(); streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() { @Override public void onNext(GenerateContentResponse generateContentResponse) { String chunk = generateContentResponse.getText(); outputContent.append(chunk); } @Override public void onComplete() { // ... } @Override public void onError(Throwable t) { t.printStackTrace(); } @Override public void onSubscribe(Subscription s) { s.request(Long.MAX_VALUE); } });
Langkah berikutnya
- Tinjau aplikasi contoh Vertex AI di Firebase di GitHub.
- Mulailah memikirkan cara bersiap untuk produksi, termasuk menyiapkan Firebase App Check untuk melindungi Gemini API dari penyalahgunaan oleh klien yang tidak sah.
- Pelajari Vertex AI di Firebase lebih lanjut di dokumentasi Firebase.