SDK klien Google AI memungkinkan Anda memanggil Gemini API dan menggunakan rangkaian model Gemini langsung dari aplikasi Android.
Paket gratis memungkinkan Anda bereksperimen tanpa biaya. Untuk detail harga lainnya, lihat panduan harga.
Memulai
Sebelum berinteraksi dengan Gemini API langsung dari aplikasi, Anda harus melakukan beberapa hal terlebih dahulu, termasuk memahami perintah serta membuat kunci API dan menyiapkan aplikasi untuk menggunakan SDK.
Bereksperimen dengan perintah
Mulailah dengan membuat prototipe perintah Anda di Google AI Studio.
Google 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 perintah lebih lanjut di dokumentasi Google AI resmi.
Untuk mempelajari lebih lanjut kemampuan lanjutan Google AI Studio, lihat panduan memulai Google AI Studio.
Membuat kunci API
Setelah puas dengan perintah Anda, klik Dapatkan kunci API untuk membuat kunci Gemini API Anda. Kunci akan dipaketkan dengan aplikasi Anda, yang tidak masalah untuk eksperimen dan pembuatan prototipe, tetapi tidak direkomendasikan untuk kasus penggunaan produksi.
Selain itu, untuk mencegah kunci API Anda di-commit ke repositori kode sumber, gunakan plugin gradle Secrets.
Menambahkan dependensi Gradle
Tambahkan dependensi untuk SDK klien Google AI ke aplikasi Anda:
Kotlin
dependencies { [...] implementation("com.google.ai.client.generativeai:generativeai:0.7.0") }
Java
dependencies { [...] implementation("com.google.ai.client.generativeai:generativeai:0.7.0") // 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") }
Membuat GenerativeModel
Mulailah dengan membuat instance GenerativeModel
dengan memberikan hal berikut:
- Nama model:
gemini-1.5-flash
,gemini-1.5-pro
, ataugemini-1.0-pro
- Kunci API yang dibuat dengan Google AI Studio.
Secara opsional, Anda dapat menentukan parameter model dan memberikan nilai untuk temperature, topK, topP, dan token output maksimum.
Anda juga dapat menentukan fitur keamanan untuk topik berikut:
HARASSMENT
HATE_SPEECH
SEXUALLY_EXPLICIT
DANGEROUS_CONTENT
Kotlin
val model = GenerativeModel( model = "gemini-1.5-flash-001", apiKey = BuildConfig.apikey, generationConfig = generationConfig { temperature = 0.15f topK = 32 topP = 1f maxOutputTokens = 4096 }, safetySettings = listOf( SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.MEDIUM_AND_ABOVE), SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE), SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, BlockThreshold.MEDIUM_AND_ABOVE), SafetySetting(HarmCategory.DANGEROUS_CONTENT, BlockThreshold.MEDIUM_AND_ABOVE), ) )
Java
GenerationConfig.Builder configBuilder = new GenerationConfig.Builder(); configBuilder.temperature = 0.15f; configBuilder.topK = 32; configBuilder.topP = 1f; configBuilder.maxOutputTokens = 4096; ArrayList<SafetySetting> safetySettings = new ArrayList(); safetySettings.add(new SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.MEDIUM_AND_ABOVE)); safetySettings.add(new SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE)); safetySettings.add(new SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, BlockThreshold.MEDIUM_AND_ABOVE)); safetySettings.add(new SafetySetting(HarmCategory.DANGEROUS_CONTENT, BlockThreshold.MEDIUM_AND_ABOVE)); GenerativeModel gm = new GenerativeModel( "gemini-1.5-flash-001", BuildConfig.apiKey, configBuilder.build(), safetySettings );
Menggunakan SDK klien Google AI di aplikasi
Setelah memiliki kunci API dan menyiapkan aplikasi untuk menggunakan SDK, Anda siap berinteraksi dengan Gemini API.
Membuat teks
Untuk membuat respons teks, panggil generateContent()
dengan perintah Anda.
Kotlin
scope.launch { val response = model.generateContent("Write a story about a green robot.") }
Java
// In Java, create a GenerativeModelFutures from the GenerativeModel. // generateContent() returns a ListenableFuture. // Learn more: // https://developer.android.com/develop/background-work/background-tasks/asynchronous/listenablefuture GenerativeModelFutures model = GenerativeModelFutures.from(gm); Content content = new Content.Builder() .addText("Write a story about a green robot.") .build(); Executor executor = // ... ListenableFuture<GenerateContentResponse> response = model.generateContent(content); 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);
Perhatikan bahwa generateContent()
adalah fungsi suspend
, yang terintegrasi
dengan baik dengan kode Kotlin yang ada.
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).
Kotlin
scope.launch { val response = model.generateContent( content { image(bitmap) text("What is the object in this picture?") } ) }
Java
Content content = new Content.Builder() .addImage(bitmap) .addText("What is the object in this picture?") .build(); Executor executor = // ... ListenableFuture<GenerateContentResponse> response = model.generateContent(content); 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 = model.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
Content.Builder userContentBuilder = new Content.Builder(); userContentBuilder.setRole("user"); userContentBuilder.addText("Hello, I have 2 dogs in my house."); Content userContent = userContentBuilder.build(); // (Optional) create message history 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); Content.Builder userMessageBuilder = new Content.Builder(); userMessageBuilder.setRole("user"); userMessageBuilder.addText("How many paws are in my house?"); Content userMessage = userMessageBuilder.build(); Executor executor = // ... ListenableFuture<GenerateContentResponse> response = chat.sendMessage(userMessage); 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);
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
someScope.launch { var outputContent = "" generativeModel.generateContentStream(inputContent) .collect { response -> outputContent += response.text } }
Java
// In Java, the method generateContentStream() returns a Publisher // from the Reactive Streams library. // https://www.reactive-streams.org/ Publisher<GenerateContentResponse> streamingResponse = model.generateContentStream(content); 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); // Request all messages } });
Android Studio
Android Studio menyediakan alat tambahan untuk membantu Anda memulai.
- Template awal Gemini API: Template awal ini membantu Anda membuat kunci API langsung dari Android Studio dan membuat project yang menyertakan dependensi Android yang diperlukan untuk menggunakan Gemini API.
- Contoh AI generatif: Contoh ini memungkinkan Anda mengimpor SDK klien Google AI untuk aplikasi contoh Android di Android Studio.
Langkah berikutnya
- Tinjau aplikasi contoh SDK klien Google AI untuk Android di GitHub.
- Pelajari lebih lanjut SDK klien Google AI di dokumentasi Google AI resmi.