| Bu sayfadaki örneklerde, Başlarken: Apple'ın Foundation Models çerçevesi aracılığıyla Gemini API'a erişme başlıklı makaledeki adımları tamamladığınız varsayılmaktadır. |
Bu kılavuzda, Apple platformları için Gemini API SDK'sını kullanarak Apple'ın Foundation Models çerçevesi aracılığıyla Gemini API'ya çeşitli istek türlerinin nasıl gönderileceği gösterilmektedir.Firebase AI Logic
Bu sayfada, aşağıdaki istek türlerinin nasıl gönderileceğine dair örnekler gösterilmektedir:
- Yalnızca metin içeren girişlerden metin oluşturma
- Çok aşamalı etkileşim oturumu (sohbet) sırasında metin oluşturma
- Çok formatlı girişlerden (ör. resimler) metin oluşturma
- Yalnızca metin girişinden görüntü oluşturma
Metin oluşturun
Gemini modelleri, metin oluşturmayla ilgili aşağıdaki özellikleri destekler:
- Yalnızca metin içeren girişlerden metin oluşturma
- Çok aşamalı etkileşim oturumu (sohbet) sırasında metin oluşturma
- Çok formatlı girişlerden (ör. resimler) metin oluşturma
Bu özelliği destekleyen modeller
gemini-3.1-pro-previewgemini-3.5-flashgemini-3.1-flash-lite
Yalnızca metin içeren girişlerden metin oluşturma
|
Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Yalnızca metin içeren girişlerle istemde bulunarak Gemini modelinden metin oluşturmasını isteyebilirsiniz.
import FoundationModels
import FirebaseCore
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Initialize a `geminiLanguageModel` with a Gemini model that supports your use case.
let model = ai.geminiLanguageModel(name: "gemini-3.5-flash")
// Provide a prompt that contains text.
let prompt = "Write a story about a magic backpack."
// Create a session by injecting the model into Apple's `LanguageModelSession`.
// For a single-turn interaction, create a new session each time you call the model.
let session = LanguageModelSession(model: model)
// Generate a text response to the prompt.
let response = try await session.respond(to: prompt)
print(response.content)
Yanıtı akış şeklinde gösterme
Model oluşturma işleminden gelen sonucun tamamını beklemek yerine akış özelliğini kullanarak kısmi sonuçları işleyebilir ve daha hızlı etkileşimler elde edebilirsiniz. Yanıtı yayınlamak için respond(to:) yerine streamResponse(to:) kullanın.
// imports
// initialization of Gemini API backend service and a `geminiLanguageModel`
// Provide a prompt that contains text.
let prompt = "Write a story about a magic backpack."
// Create a session by injecting the model into Apple's `LanguageModelSession`.
// For a single-turn interaction, create a new session each time you call the model.
let session = LanguageModelSession(model: model)
// Generate a text response to the prompt.
// To stream the response, use `streamResponse(to:)` instead of `respond(to:)`
let stream = session.streamResponse(to: "Write a story about a magic backpack.")
var response = ""
for try await snapshot in stream {
// The snapshot contains *all* content generated so far.
response = snapshot.content
}
Çok aşamalı etkileşim (sohbet) sırasında metin oluşturma
|
Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
import FoundationModels
import FirebaseCore
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Initialize a `geminiLanguageModel` with a Gemini model that supports your use case.
let model = ai.geminiLanguageModel(name: "gemini-3.5-flash")
// Create a session by injecting the model into Apple's `LanguageModelSession`.
// The session maintains state between each request.
let session = LanguageModelSession(model: model)
// Generate a text response to an initial prompt.
let response = try await session.respond(to: "Hello! I'd like to learn more about Albert Einstein.")
print(response.content) // Example response from model: "What would you like to know?"
// Continue using the existing session. Each prompt and response is added to the transcript.
let response2 = try await session.respond(to: "When was he born?")
print(response2.content) // Example response from model: "March 14, 1879"
Çok formatlı girişlerden (ör. resimler) metin oluşturma
|
Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Bir Gemini modelinden metin ve görüntü ya da PDF gibi bir dosya ile istemde bulunarak metin oluşturmasını isteyebilirsiniz.
import FoundationModels
import FirebaseCore
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Initialize a `geminiLanguageModel` with a Gemini model that supports your use case.
let model = ai.geminiLanguageModel(name: "gemini-3.5-flash")
// Create a session by injecting the model into Apple's `LanguageModelSession`.
// For a single-turn interaction, create a new session each time you call the model.
let session = LanguageModelSession(model: model)
let cgImage: CGImage = // ... fetch CGImage from your datasource.
let response = try await session.respond {
"What are the dominant colors of this image, in order?"
Attachment(cgImage)
}
print(response.content)
Yanıtı akış şeklinde gösterme
Model oluşturma işleminden gelen sonucun tamamını beklemek yerine akış özelliğini kullanarak kısmi sonuçları işleyebilir ve daha hızlı etkileşimler elde edebilirsiniz. Yanıtı yayınlamak için respond yerine streamResponse kullanın.
// imports
// initialization of Gemini API backend service and a `geminiLanguageModel`
// Create a session by injecting the model into Apple's `LanguageModelSession`.
// For a single-turn interaction, create a new session each time you call the model.
let session = LanguageModelSession(model: model)
let cgImage: CGImage = // ... fetch CGImage from your datasource.
let stream = session.streamResponse {
"What are the dominant colors of this image, in order?"
Attachment(cgImage)
}
var response = ""
for try await snapshot in stream {
// The snapshot contains *all* content generated so far.
response = snapshot.content
}
print(response)
Görüntü oluşturma ("Nano Banana" modellerini kullanarak)
|
Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Bu özelliği destekleyen modeller
gemini-3-pro-image(diğer adıyla "Nano Banana Pro")gemini-3.1-flash-image(diğer adıyla "Nano Banana 2")
GeminiGörüntü üreten bir modelden ("Nano Banana" gibi) yalnızca metin girişiyle istemde bulunarak görüntü oluşturmasını isteyebilirsiniz.
Aşağıdaki örnekte yalnızca resim oluşturma gösterilmektedir ancak Geminiresim üreten modeller hem resim hem de metin oluşturabilir.
import FoundationModels
import FirebaseCore
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Initialize a `geminiLanguageModel` with a Gemini image-generating model that supports your use case.
let model = ai.geminiLanguageModel(name: "gemini-3.1-flash-image"
options:
GeminiGenerationOptions(responseModalities: .image)
)
let session = LanguageModelSession(model: model)
let response = try await session.respond(
to: "Generate an image of the Eiffel tower with fireworks in the background."
)
var generatedImage: CIImage?
// Find the image in the transcriptEntries.
for entry in response.transcriptEntries {
if case let .response(response) = entry {
for segment in response.segments {
if case let .attachment(attachment) = segment,
case let .image(image) = attachment.content {
generatedImage = image.ciImage
}
}
}
}
Yapılandırılmış JSON çıkışı oluşturma
|
Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Bu özelliği destekleyen modeller
gemini-3.1-pro-previewgemini-3.5-flashgemini-3.1-flash-litegemini-3-pro-image
Gemini modelleri, yanıtları varsayılan olarak yapılandırılmamış metin şeklinde döndürür. Ancak bazı kullanım alanları, JSON gibi yapılandırılmış metin gerektirir. Örneğin, yanıtı yerleşik bir veri şeması gerektiren diğer sonraki görevlerde kullanıyor olabilirsiniz.
Modeli, yanıtını sağladığınız bir JSON şemasına göre biçimlendirecek şekilde yapılandırabilirsiniz. Yapılandırılmış JSON çıkışı oluşturmayla ilgili ayrıntılar, en iyi uygulamalar ve kullanım alanları için genel Yapılandırılmış çıkış oluşturma kılavuzuna bakın.
import FoundationModels
import FirebaseCore
import FirebaseAILogic
@Generable(description: "Basic profile information about a cat")
struct CatProfile {
var name: String
@Guide(description: "The age of the cat", .range(0 ... 20))
var age: Int
@Guide(description: "A one sentence profile about the cat's personality")
var profile: String
}
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Initialize a `geminiLanguageModel` with a Gemini model that supports your use case.
let model = ai.geminiLanguageModel(name: "gemini-3.5-flash")
let session = LanguageModelSession(model: model)
let response = try await session.respond(
to: "Generate a cute rescue cat profile with an Elvish theme",
generating: CatProfile.self
)
let cat = response.content
Apple'ın Foundation Models çerçevesi aracılığıyla Gemini API'e erişim hakkında geri bildirimde bulunma