Google AI istemci SDK'sı, Gemini API'yi çağırmanıza ve Gemini model ailesini doğrudan Android uygulamanızda kullanmanıza olanak tanır.
Ücretsiz katman, ücretsiz denemeler yapmanıza olanak tanır. Diğer fiyatlandırma ayrıntıları için fiyatlandırma kılavuzuna bakın.
Başlarken
Gemini API ile doğrudan uygulamanızdan etkileşime geçmeden önce istemlerle ilgili bilgi edinme, API anahtarı oluşturma ve uygulamanızı SDK'yı kullanacak şekilde ayarlama gibi birkaç işlem yapmanız gerekir.
İstemlerle deneme yapma
Google AI Studio'da isteminizi prototipleyerek başlayın.
Google AI Studio, istem tasarımı ve prototip oluşturma için bir IDE'dir. Metin ve resim içeren istemleri test etmek için dosya yüklemenize ve daha sonra tekrar ziyaret etmek üzere istemleri kaydetmenize olanak tanır.
Kullanım alanınız için doğru istemi oluşturmak bilimden çok sanattır. Bu nedenle deneme yapmak çok önemlidir. İstemler hakkında daha fazla bilgiyi resmi Google Yapay Zeka dokümanlarında bulabilirsiniz.
Google AI Studio'nun gelişmiş özellikleri hakkında daha fazla bilgi edinmek için Google AI Studio hızlı başlangıç kılavuzuna göz atın.
API anahtarınızı oluşturma
İsteminizle ilgili tüm koşulları karşıladığınızda Gemini API anahtarınızı oluşturmak için API anahtarı al'ı tıklayın. Anahtar, uygulamanızla birlikte paketlenir. Bu, deneme ve prototip oluşturma için uygundur ancak üretimde kullanım için önerilmez.
Ayrıca, API anahtarınızın kaynak kod deposunuza kaydetme işleminin yapılmasını önlemek için Gizli Bilgiler Gradle eklentisini kullanın.
Gradle bağımlılığını ekleme
Google AI istemci SDK'sının bağımlılığını uygulamanıza ekleyin:
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") }
GenerativeModel
oluşturma
Aşağıdakileri sağlayarak bir GenerativeModel
örneği oluşturarak başlayın:
- Model adı:
gemini-1.5-flash
,gemini-1.5-pro
veyagemini-1.0-pro
- Google AI Studio ile oluşturulan API anahtarınız.
İsteğe bağlı olarak model parametrelerini tanımlayabilir ve sıcaklık, en yüksek K, en yüksek P ve maksimum çıkış jetonları için değerler sağlayabilirsiniz.
Aşağıdaki konular için güvenlik özelliklerini de tanımlayabilirsiniz:
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 );
Uygulamanızda Google AI istemci SDK'sını kullanma
API anahtarınız olduğu ve uygulamanızı SDK'yı kullanacak şekilde ayarladığınız için Gemini API ile etkileşime geçmeye hazırsınız.
Metin oluşturma
Metin yanıtı oluşturmak için isteminizle birlikte generateContent()
'ü arayın.
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);
generateContent()
'ün, mevcut Kotlin koduyla iyi entegre olan bir suspend
işlevi olduğunu unutmayın.
Resimlerden ve diğer medyalardan metin oluşturma
Metin ve resim ya da diğer medya öğelerini içeren bir istemden de metin oluşturabilirsiniz. generateContent()
işlevini çağırırken medyayı satır içi veri olarak iletebilirsiniz (aşağıdaki örnekte gösterildiği gibi).
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);
Çoklu turlu sohbet
Birden fazla katılımcının yer aldığı sohbetleri de destekleyebilirsiniz. startChat()
işleviyle sohbet başlatın. İsterseniz bir mesaj geçmişi de sağlayabilirsiniz. Ardından sohbet mesajı göndermek için sendMessage()
işlevini çağırın.
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);
Yanıtı akış şeklinde gösterme
Model oluşturma işleminin sonucunun tamamını beklemek yerine kısmi sonuçları işlemek için akış özelliğini kullanarak daha hızlı etkileşimler elde edebilirsiniz. Yanıtları akış şeklinde yayınlamak için generateContentStream()
simgesini kullanın.
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, başlangıçta size yardımcı olacak ek araçlar sağlar.
- Gemini API başlangıç şablonu: Bu başlangıç şablonu, doğrudan Android Studio'dan API anahtarı oluşturmanıza yardımcı olur ve Gemini API'leri kullanmak için gerekli Android bağımlılıkları içeren bir proje oluşturur.
- Üretken yapay zeka örneği: Bu örnek, Android için Google AI istemci SDK'sını Android Studio'ya aktarmanıza olanak tanır.
Sonraki adımlar
- GitHub'da Android için Google AI istemci SDK'sı örnek uygulamasını inceleyin.