| Przykłady na tej stronie zakładają, że masz już za sobą sekcję Pierwsze kroki: dostęp do Gemini API za pomocą platformy Foundation Models firmy Apple. |
Z tego przewodnika dowiesz się, jak wysyłać różne typy żądań do Gemini API za pomocą platformy Foundation Models firmy Apple przy użyciu Firebase AI Logic SDK na platformy Apple.
Na tej stronie znajdziesz przykłady wysyłania tych typów żądań:
- Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst
- Generowanie tekstu podczas sesji wieloetapowej (czatu)
- Generowanie tekstu na podstawie danych wejściowych multimodalnych (np. obrazów)
- Generowanie obrazów na podstawie danych wejściowych zawierających tylko tekst
Generowanie tekstu
Gemini modele obsługują te funkcje generowania tekstu:
- Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst
- Generowanie tekstu podczas sesji wieloetapowej (czatu)
- Generowanie tekstu na podstawie danych wejściowych multimodalnych (np. obrazów)
Modele obsługujące tę funkcję
gemini-3.1-pro-previewgemini-3.6-flash(i starszygemini-3.5-flash)gemini-3.5-flash-lite(i starszygemini-3.1-flash-lite)
Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst
|
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
Możesz poprosić model Gemini o wygenerowanie tekstu, podając mu dane wejściowe zawierające tylko tekst.
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.6-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)
Przesyłanie strumieniowe odpowiedzi
Możesz przyspieszyć interakcje, nie czekając na cały wynik wygenerowany przez model, i zamiast tego użyć przesyłania strumieniowego do obsługi częściowych wyników. Aby przesyłać odpowiedź strumieniowo, użyj streamResponse(to:) zamiast respond(to:).
// 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
}
Generowanie tekstu podczas sesji wieloetapowej (czatu)
|
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
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.6-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"
Generowanie tekstu na podstawie danych wejściowych multimodalnych (np. obrazów)
|
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
Możesz poprosić model Gemini o wygenerowanie tekstu, podając mu dane wejściowe zawierające tekst i plik, np. obraz lub PDF.
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.6-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)
Przesyłanie strumieniowe odpowiedzi
Możesz przyspieszyć interakcje, nie czekając na cały wynik wygenerowany przez model, i zamiast tego użyć przesyłania strumieniowego do obsługi częściowych wyników. Aby przesyłać odpowiedź strumieniowo, użyj streamResponse zamiast respond.
// 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)
Generowanie obrazów (za pomocą modeli „Nano Banana”)
|
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
Modele obsługujące tę funkcję
gemini-3-pro-image(znany też jako „Nano Banana Pro”)gemini-3.1-flash-image(znany też jako „Nano Banana 2”)
Możesz poproszić model do generowania obrazów Gemini (np. model „Nano Banana” ) o wygenerowanie obrazu, podając mu dane wejściowe zawierające tylko tekst.
Poniższy przykład pokazuje, jak wygenerować tylko obraz, ale Gemini modele do generowania obrazów mogą generować zarówno obrazy, jak i tekst.
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 image output.
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
}
}
}
}
Generowanie uporządkowanych danych wyjściowych JSON
|
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
Modele obsługujące tę funkcję
gemini-3.1-pro-previewgemini-3.5-flashgemini-3.1-flash-litegemini-3-pro-image
Gemini modele domyślnie zwracają odpowiedzi w postaci nieustrukturyzowanego tekstu. W niektórych przypadkach wymagany jest jednak tekst uporządkowany, np. JSON. Możesz na przykład używać odpowiedzi do innych zadań, które wymagają ustalonego schematu danych.
Możesz skonfigurować model tak, aby formatował odpowiedź zgodnie z podanym przez Ciebie schematem JSON. Szczegółowe informacje, sprawdzone metody i przypadki użycia generowania uporządkowanych danych wyjściowych JSON znajdziesz w ogólnym przewodniku Generowanie uporządkowanych danych wyjściowych.
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_MODEL_NAME")
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