Gemini API simgesini kullanarak birden fazla katılımcının yer aldığı serbest biçimli sohbetler oluşturabilirsiniz. Firebase AI Logic SDK'sı, sohbetin durumunu yöneterek süreci basitleştirir. Bu nedenle, generateContent()
(veya generateContentStream()
) ile karşılaştırıldığında sohbet geçmişini kendiniz saklamanıza gerek yoktur.
Başlamadan önce
Bu sayfada sağlayıcıya özgü içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Henüz yapmadıysanız Firebase projenizi oluşturma, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz Gemini API sağlayıcı için arka uç hizmetini başlatma ve GenerativeModel
örneği oluşturma hakkında bilgi veren başlangıç kılavuzunu tamamlayın.
İstemlerinizi test etmek ve üzerinde iterasyon yapmak, hatta oluşturulmuş bir kod snippet'i almak için Google AI Studio'i kullanmanızı öneririz.
Sohbet istemi isteği gönderme
Bu örneği denemeden önce, projenizi ve uygulamanızı oluşturmak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu sayfada sağlayıcıya özel içerikleri görmek için seçtiğiniz Gemini API sağlayıcının düğmesini de bu bölümde tıklayacaksınız. |
Çok turlu bir görüşme (sohbet gibi) oluşturmak için startChat()
işlevini çağırarak sohbeti başlatın. Ardından, yeni bir kullanıcı mesajı göndermek için sendMessage()
simgesini kullanın. Bu işlem, mesajı ve yanıtı sohbet geçmişine de ekler.
Sohbetteki içerikle ilişkili role
için iki olası seçenek vardır:
user
: İstemleri sağlayan rol. Bu değer,sendMessage()
çağrıları için varsayılan değerdir ve farklı bir rol iletilirse işlev bir istisna oluşturur.model
: Yanıtları sağlayan rol. Bu rol, mevcuthistory
ilestartChat()
'ü çağırırken kullanılabilir.
Swift
Yeni kullanıcı mesajı göndermek için startChat()
ve sendMessage()
numaralarını arayabilirsiniz:
import FirebaseAI
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
Kotlin
Yeni kullanıcı mesajı göndermek için startChat()
ve sendMessage()
numaralarını arayabilirsiniz:
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-2.0-flash")
// Initialize the chat
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?") }
)
)
val response = chat.sendMessage("How many paws are in my house?")
print(response.text)
Java
Yeni kullanıcı mesajı göndermek için startChat()
ve sendMessage()
numaralarını arayabilirsiniz:
ListenableFuture
döndürür.
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-2.0-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// (optional) Create previous chat history for context
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();
// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(message);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
Yeni kullanıcı mesajı göndermek için startChat()
ve sendMessage()
numaralarını arayabilirsiniz:
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessage(msg);
const response = await result.response;
const text = response.text();
console.log(text);
}
run();
Dart
Yeni kullanıcı mesajı göndermek için startChat()
ve sendMessage()
numaralarını arayabilirsiniz:
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessage(prompt);
print(response.text);
Unity
Yeni kullanıcı mesajı göndermek için startChat()
ve sendMessage()
numaralarını arayabilirsiniz:
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.0-flash");
// Optionally specify existing chat history
var history = new [] {
ModelContent.Text("Hello, I have 2 dogs in my house."),
new ModelContent("model", new ModelContent.TextPart("Great to meet you. What would you like to know?")),
};
// Initialize the chat with optional chat history
var chat = model.StartChat(history);
// To generate text output, call SendMessageAsync and pass in the message
var response = await chat.SendMessageAsync("How many paws are in my house?");
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
Kullanım alanınıza ve uygulamanıza uygun bir model nasıl seçeceğinizi öğrenin.
Yanıtı akış şeklinde gösterme
Bu örneği denemeden önce, projenizi ve uygulamanızı oluşturmak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu sayfada sağlayıcıya özel içerikleri görmek için seçtiğiniz Gemini API sağlayıcının düğmesini de bu bölümde tıklayacaksınız. |
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ıtı aktarmak için sendMessageStream()
numaralı telefonu arayın.
Başka neler yapabilirsiniz?
- Modele uzun istemler göndermeden önce jetonları nasıl sayacağınızı öğrenin.
- Çok modlu isteklerinize büyük dosyalar ekleyebilmeniz ve istemlerde dosya sağlamak için daha yönetilebilir bir çözüme sahip olabilmeniz amacıyla Cloud Storage for Firebase'i ayarlayın. Dosyalar resim, PDF, video ve ses içerebilir.
-
Üretime hazırlanmaya başlayın (üretim yapılacaklar listesine bakın). Örneğin:
- Gemini API'ı yetkisiz istemciler tarafından kötüye kullanıma karşı korumak için Firebase App Check'yi ayarlama
- Yeni bir uygulama sürümü yayınlamadan uygulamanızdaki değerleri (ör. model adı) güncellemek için Firebase Remote Config entegrasyonu
Diğer özellikleri deneyin
- Yalnızca metin istemlerinden metin oluşturma
- Resimler, PDF'ler, video ve ses gibi çeşitli dosya türleriyle istemde bulunarak metin oluşturun.
- Hem metin hem de çoklu modal istemlerden yapılandırılmış çıkış (JSON gibi) oluşturun.
- Metin istemlerinden resim oluşturma
- Üretken modelleri harici sistemlere ve bilgilere bağlamak için işlev çağırma özelliğini kullanın.
İçerik oluşturmayı nasıl kontrol edeceğinizi öğrenin
- En iyi uygulamalar, stratejiler ve örnek istemler dahil olmak üzere istem tasarımını anlama
- Sıcaklık ve maksimum çıkış jetonu (Gemini için) ya da en boy oranı ve kişi oluşturma (Imagen için) gibi model parametrelerini yapılandırın.
- Zararlı olarak değerlendirilebilecek yanıtlar alma olasılığını ayarlamak için güvenlik ayarlarını kullanın.
Desteklenen modeller hakkında daha fazla bilgi
Çeşitli kullanım alanları için kullanılabilen modeller, bunların kotaları ve fiyatlandırması hakkında bilgi edinin.Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirim verme