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


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 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.6-flash und das ältere gemini-3.5-flash
  • gemini-3.5-flash-lite und das ältere gemini-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-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. 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