| In den Beispielen auf dieser Seite wird davon ausgegangen, dass Sie die Schritte unter Erste Schritte: Zugriff auf die Gemini API über das Foundation Models-Framework von Apple ausgeführt haben. |
In dieser Anleitung wird beschrieben, wie Sie verschiedene Arten von Anfragen über das Foundation Models-Framework von Apple an die Gemini API senden. Dazu verwenden Sie das Firebase AI Logic SDK für Apple-Plattformen.
Auf dieser Seite finden Sie Beispiele für das Senden der folgenden Arten von Anfragen:
- Text aus reiner Texteingabe generieren
- Text während einer Mehrfachdialog-Sitzung (Chat) generieren
- Text aus multimodaler Eingabe (z. B. Bildern) generieren
- Bilder aus reiner Texteingabe generieren
Text generieren
Gemini Modelle unterstützen die folgenden Funktionen zum Generieren von Text:
- Text aus reiner Texteingabe generieren
- Text während einer Mehrfachdialog-Sitzung (Chat) generieren
- Text aus multimodaler Eingabe (z. B. Bildern) generieren
Modelle, die diese Funktion unterstützen
gemini-3.1-pro-previewgemini-3.6-flashund das älteregemini-3.5-flashgemini-3.5-flash-liteund das älteregemini-3.1-flash-lite
Text aus reiner Texteingabe generieren
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Sie können ein Gemini Modell bitten, Text zu generieren, indem Sie eine Anfrage mit reiner Texteingabe senden.
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)
Antwort streamen
Sie können schnellere Interaktionen erzielen, indem Sie nicht auf das gesamte Ergebnis der Modellgenerierung warten, sondern Streaming verwenden, um Teilergebnisse zu verarbeiten. Verwenden Sie streamResponse(to:) anstelle von respond(to:), um die Antwort zu streamen.
// 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
}
Text während einer Mehrfachdialog-Sitzung (Chat) generieren
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
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"
Text aus multimodaler Eingabe (z. B. Bildern) generieren
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Sie können ein Gemini Modell bitten, Text zu generieren, indem Sie eine Anfrage mit Text und einer Datei wie einem Bild oder einer PDF-Datei senden.
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)
Antwort streamen
Sie können schnellere Interaktionen erzielen, indem Sie nicht auf das gesamte Ergebnis der Modellgenerierung warten, sondern Streaming verwenden, um Teilergebnisse zu verarbeiten. Verwenden Sie streamResponse anstelle von respond, um die Antwort zu streamen.
// 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)
Bilder generieren (mit „Nano Banana“-Modellen)
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Modelle, die diese Funktion unterstützen
gemini-3-pro-image(auch bekannt als „Nano Banana Pro“)gemini-3.1-flash-image(auch bekannt als „Nano Banana 2“)
Sie können ein Gemini Modell zur Bildgenerierung (z. B. ein „Nano Banana“ Modell) bitten, ein Bild zu generieren, indem Sie eine Anfrage mit reiner Texteingabe senden.
Im folgenden Beispiel wird gezeigt, wie nur ein Bild generiert wird. Gemini Modelle zur Bildgenerierung können jedoch sowohl Bilder als auch Text generieren.
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
}
}
}
}
Strukturierte JSON-Ausgabe generieren
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Modelle, die diese Funktion unterstützen
gemini-3.1-pro-previewgemini-3.5-flashgemini-3.1-flash-litegemini-3-pro-image
Gemini Modelle geben Antworten standardmäßig als unstrukturierten Text zurück. Einige Anwendungsfälle erfordern jedoch strukturierten Text wie JSON. Möglicherweise verwenden Sie die Antwort beispielsweise für andere nachgelagerte Aufgaben, die ein festgelegtes Datenschema erfordern.
Sie können das Modell so konfigurieren, dass die Antwort gemäß einem von Ihnen bereitgestellten JSON-Schema formatiert wird. Weitere Informationen, Best Practices und Anwendungsfälle für das Generieren strukturierter JSON-Ausgaben finden Sie in der allgemeinen Anleitung Strukturierte Ausgaben generieren.
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
Feedback geben zum Zugriff auf Gemini API über das Foundation Models-Framework von Apple