Verfügbare Funktionen beim Zugriff auf die Gemini API über das Foundation Models-Framework von Apple


Bei den Beispielen auf dieser Seite wird davon ausgegangen, dass Sie die Anleitung Erste Schritte: Über das Foundation Models-Framework von Apple auf Gemini API zugreifen durchgearbeitet haben.


In dieser Anleitung wird gezeigt, wie Sie verschiedene Arten von Anfragen über das Foundation Models-Framework von Apple mit dem Firebase AI Logic SDK für Apple-Plattformen an das Gemini API senden.

Auf dieser Seite finden Sie Beispiele für das Senden der folgenden Arten von Anfragen:



Text generieren

Gemini-Modelle unterstützen die folgenden Funktionen zum Generieren von Text:

Modelle, die diese Funktion unterstützen

  • gemini-3.1-pro-preview
  • gemini-3.5-flash
  • gemini-3.1-flash-lite

Text aus reinen Texteingaben 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 nur Text als Eingabe verwenden.

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)

Antwort streamen

Sie können schnellere Interaktionen erzielen, indem Sie nicht auf das gesamte Ergebnis der Modellgenerierung warten, sondern stattdessen 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 Multi-Turn-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.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"

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 einen Text-Prompt und eine Datei wie ein Bild oder eine PDF-Datei eingeben.

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)

Antwort streamen

Sie können schnellere Interaktionen erzielen, indem Sie nicht auf das gesamte Ergebnis der Modellgenerierung warten, sondern stattdessen 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 „Nano Banana Pro“ genannt)
  • gemini-3.1-flash-image (auch „Nano Banana 2“)

Sie können ein Gemini-Modell zur Bildgenerierung (z. B. „Nano Banana“) bitten, ein Bild zu generieren, indem Sie nur Text als Eingabe verwenden.

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 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
      }
    }
  }
}



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-preview
  • gemini-3.5-flash
  • gemini-3.1-flash-lite
  • gemini-3-pro-image

Gemini-Modelle geben Antworten standardmäßig als unstrukturierten Text zurück. Für einige Anwendungsfälle ist jedoch strukturierter Text wie JSON erforderlich. Möglicherweise verwenden Sie die Antwort für andere nachgelagerte Aufgaben, für die ein etabliertes Datenschema erforderlich ist.

Sie können das Modell so konfigurieren, dass es seine Antwort gemäß einem von Ihnen bereitgestellten JSON-Schema formatiert. Weitere Informationen, Best Practices und Anwendungsfälle zum Generieren strukturierter JSON-Ausgaben finden Sie im allgemeinen Leitfaden 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-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


Feedback geben zum Zugriff auf Gemini API über das Foundation Models-Framework von Apple