| Примеры на этой странице предполагают, что вы выполнили задание «Начало работы: доступ к API Gemini через фреймворк Foundation Models от Apple» . |
В этом руководстве показано, как отправлять различные типы запросов к API Gemini через фреймворк Foundation Models от Apple, используя SDK Firebase AI Logic для платформ Apple.
На этой странице приведены примеры отправки следующих типов запросов:
- Создание текста из текстового ввода.
- Генерация текста во время многоходовой сессии (чата)
- Генерация текста из мультимодальных входных данных (например, изображений).
- Создание изображений на основе текстового ввода.
Сгенерировать текст
Модели Gemini поддерживают следующие возможности для генерации текста:
- Создание текста из текстового ввода.
- Генерация текста во время многоходовой сессии (чата)
- Генерация текста из мультимодальных входных данных (например, изображений).
Модели, поддерживающие эту возможность
-
gemini-3.1-pro-preview -
gemini-3.5-flash -
gemini-3.1-flash-lite
Создание текста из текстового ввода.
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Вы можете попросить модель Gemini сгенерировать текст, введя в поле ввода только текст.
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)
Трансляция ответа
Для ускорения взаимодействия можно не ждать полного результата генерации модели, а использовать потоковую обработку для частичного получения результатов. Для потоковой передачи ответа используйте streamResponse(to:) вместо 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
}
Генерация текста во время многоходовой сессии (чата)
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
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"
Генерация текста из мультимодальных входных данных (например, изображений).
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Вы можете попросить модель Gemini сгенерировать текст, указав в качестве запроса текст и файл, например, изображение или 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.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)
Трансляция ответа
Для ускорения взаимодействия можно не ждать полного результата генерации модели, а использовать потоковую обработку для частичного получения результатов. Для потоковой передачи ответа используйте streamResponse вместо 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)
Создание изображений (с использованием моделей "Nano Banana")
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Модели, поддерживающие эту возможность
-
gemini-3-pro-image(также известный как "Nano Banana Pro") -
gemini-3.1-flash-image(aka "Nano Banana 2")
Вы можете попросить модель генерации изображений Gemini (например, модель "Nano Banana") создать изображение, введя в качестве запроса только текст.
В следующем примере показано, как сгенерировать только изображение, но модели генерации изображений Gemini могут генерировать как изображения, так и текст.
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
}
}
}
}
Сгенерировать структурированный JSON-вывод
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Модели, поддерживающие эту возможность
-
gemini-3.1-pro-preview -
gemini-3.5-flash -
gemini-3.1-flash-lite -
gemini-3-pro-image
Модели Gemini по умолчанию возвращают ответы в виде неструктурированного текста. Однако в некоторых случаях требуется структурированный текст, например, JSON. Например, вы можете использовать ответ для других задач, требующих установленной схемы данных.
Вы можете настроить модель таким образом, чтобы она форматировала ответ в соответствии с предоставленной вами JSON-схемой. Подробную информацию, рекомендации и примеры использования для генерации структурированного JSON-вывода см. в общем руководстве по генерации структурированного вывода .
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
Оставьте отзыв о доступе к API Gemini через фреймворк Foundation Models от Apple.