Генерация текста из мультимодальных подсказок с помощью Gemini API,Создание текста из мультимодальных подсказок с помощью Gemini API


При вызове Gemini API из вашего приложения с помощью Vertex AI in Firebase SDK вы можете предложить модели Gemini сгенерировать текст на основе мультимодального ввода. Мультимодальные подсказки могут включать в себя несколько модальностей (или типов ввода), например текст вместе с изображениями, PDF-файлы, текстовые файлы, видео и аудио.

В каждом мультимодальном запросе вы всегда должны предоставлять следующее:

Для тестирования и итерации мультимодальных подсказок мы рекомендуем использовать Vertex AI Studio .

Прежде чем начать

Если вы еще этого не сделали, прочтите руководство по началу работы с Vertex AI in Firebase SDK . Убедитесь, что вы выполнили все следующее:

  1. Настройте новый или существующий проект Firebase, включая использование тарифного плана Blaze и включение необходимых API.

  2. Подключите свое приложение к Firebase, включая регистрацию вашего приложения и добавление конфигурации Firebase в ваше приложение.

  3. Добавьте SDK и инициализируйте службу Vertex AI и генеративную модель в своем приложении.

После того как вы подключили свое приложение к Firebase, добавили SDK и инициализировали службу Vertex AI и генеративную модель, вы готовы вызвать Gemini API .

Сгенерировать текст из текста и одного изображения Сгенерировать текст из текста и нескольких изображений Сгенерировать текст из текста и видео

Примеры медиафайлов

Если у вас еще нет медиафайлов, вы можете использовать следующие общедоступные файлы:

Генерация текста из текста и одного изображения

Прежде чем приступать к работе с этим примером, убедитесь, что вы завершили раздел «Перед началом работы» данного руководства.

Вы можете вызвать Gemini API с помощью мультимодальных приглашений, которые включают как текст, так и один файл (например, изображение, как показано в этом примере). Для этих вызовов вам необходимо использовать модель, поддерживающую мультимедиа в подсказках (например, Gemini 1.5 Flash).

Обязательно ознакомьтесь с требованиями и рекомендациями для входных файлов .

Выберите, хотите ли вы передать ответ в потоковом режиме ( generateContentStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( generateContent ).

Потоковое вещание

Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата от создания модели, а вместо этого используйте потоковую передачу для обработки частичных результатов.

В этом примере показано, как использоватьgenerContentStream generateContentStream() для потоковой передачи сгенерированного текста из запроса мультимодальной подсказки, который включает текст и одно изображение:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

Альтернативно, вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использовать generateContent() для генерации текста из запроса мультимодальной подсказки, который включает текст и одно изображение:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Генерация текста из текста и нескольких изображений

Прежде чем приступать к работе с этим примером, убедитесь, что вы завершили раздел «Перед началом работы» данного руководства.

Вы можете вызвать Gemini API с помощью мультимодальных приглашений, которые включают как текст, так и несколько файлов (например, изображений, как показано в этом примере). Для этих вызовов вам необходимо использовать модель, поддерживающую мультимедиа в подсказках (например, Gemini 1.5 Flash).

Обязательно ознакомьтесь с требованиями и рекомендациями для входных файлов .

Выберите, хотите ли вы передать ответ в потоковом режиме ( generateContentStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( generateContent ).

Потоковое вещание

Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата от создания модели, а вместо этого используйте потоковую передачу для обработки частичных результатов.

В этом примере показано, как использовать generateContentStream() для потоковой передачи сгенерированного текста из запроса мультимодальной подсказки, который включает текст и несколько изображений:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

В качестве альтернативы вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использоватьgenerContent generateContent() для генерации текста из запроса мультимодальной подсказки, который включает текст и несколько изображений:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Генерация текста из текста и видео

Прежде чем приступать к работе с этим примером, убедитесь, что вы завершили раздел «Перед началом работы» данного руководства.

Вы можете вызвать Gemini API с помощью мультимодальных запросов, которые включают как текстовые, так и видеофайлы (как показано в этом примере). Для этих вызовов вам необходимо использовать модель, поддерживающую мультимедиа в подсказках (например, Gemini 1.5 Flash).

Обязательно ознакомьтесь с требованиями и рекомендациями для входных файлов .

Выберите, хотите ли вы передать ответ в потоковом режиме ( generateContentStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( generateContent ).

Потоковое вещание

Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата от создания модели, а вместо этого используйте потоковую передачу для обработки частичных результатов.

В этом примере показано, как использовать generateContentStream() для потоковой передачи сгенерированного текста из запроса мультимодальной подсказки, который включает текст и одно видео:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

Альтернативно, вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использоватьgenerContent generateContent() для генерации текста из запроса мультимодальной подсказки, который включает в себя текст и одно видео:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Требования и рекомендации к входным файлам

См. раздел Поддерживаемые входные файлы и требования для Vertex AI Gemini API чтобы узнать следующее:

  • Различные варианты предоставления файла в запросе
  • Поддерживаемые типы файлов
  • Поддерживаемые типы MIME и способы их указания
  • Требования и рекомендации для файлов и мультимодальных запросов

Что еще вы можете сделать?

  • Узнайте, как подсчитывать токены , прежде чем отправлять модели длинные запросы.
  • Настройте Cloud Storage for Firebase , чтобы вы могли включать большие файлы в свои мультимодальные запросы и иметь более управляемое решение для предоставления файлов в приглашениях. Файлы могут включать изображения, PDF-файлы, видео и аудио.
  • Начните думать о подготовке к работе, включая настройку Firebase App Check для защиты Gemini API от злоупотреблений со стороны неавторизованных клиентов.

Попробуйте другие возможности Gemini API

Узнайте, как контролировать создание контента

Вы также можете поэкспериментировать с подсказками и конфигурациями модели с помощью Vertex AI Studio .

Узнайте больше о моделях Gemini

Узнайте о моделях, доступных для различных вариантов использования , а также об их квотах и ​​ценах .


Оставьте отзыв о своем опыте использования Vertex AI in Firebase


,


При вызове Gemini API из вашего приложения с помощью Vertex AI in Firebase SDK вы можете предложить модели Gemini сгенерировать текст на основе мультимодального ввода. Мультимодальные подсказки могут включать в себя несколько модальностей (или типов ввода), например текст вместе с изображениями, PDF-файлы, текстовые файлы, видео и аудио.

В каждом мультимодальном запросе вы всегда должны предоставлять следующее:

Для тестирования и итерации мультимодальных подсказок мы рекомендуем использовать Vertex AI Studio .

Прежде чем начать

Если вы еще этого не сделали, прочтите руководство по началу работы с Vertex AI in Firebase SDK . Убедитесь, что вы выполнили все следующее:

  1. Настройте новый или существующий проект Firebase, включая использование тарифного плана Blaze и включение необходимых API.

  2. Подключите свое приложение к Firebase, включая регистрацию вашего приложения и добавление конфигурации Firebase в ваше приложение.

  3. Добавьте SDK и инициализируйте службу Vertex AI и генеративную модель в своем приложении.

После того как вы подключили свое приложение к Firebase, добавили SDK и инициализировали службу Vertex AI и генеративную модель, вы готовы вызвать Gemini API .

Сгенерировать текст из текста и одного изображения Сгенерировать текст из текста и нескольких изображений Сгенерировать текст из текста и видео

Примеры медиафайлов

Если у вас еще нет медиафайлов, вы можете использовать следующие общедоступные файлы:

Генерация текста из текста и одного изображения

Прежде чем приступать к работе с этим примером, убедитесь, что вы завершили раздел «Перед началом работы» данного руководства.

Вы можете вызвать Gemini API с помощью мультимодальных приглашений, которые включают как текст, так и один файл (например, изображение, как показано в этом примере). Для этих вызовов вам необходимо использовать модель, поддерживающую мультимедиа в подсказках (например, Gemini 1.5 Flash).

Обязательно ознакомьтесь с требованиями и рекомендациями для входных файлов .

Выберите, хотите ли вы передать ответ в потоковом режиме ( generateContentStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( generateContent ).

Потоковое вещание

Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата от создания модели, а вместо этого используйте потоковую передачу для обработки частичных результатов.

В этом примере показано, как использоватьgenerContentStream generateContentStream() для потоковой передачи сгенерированного текста из запроса мультимодальной подсказки, который включает текст и одно изображение:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

Альтернативно, вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использоватьgenerContent generateContent() для генерации текста из мультимодального запроса на подсказку, который включает текст и одно изображение:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Генерация текста из текста и нескольких изображений

Прежде чем приступать к работе с этим примером, убедитесь, что вы завершили раздел «Перед началом работы» данного руководства.

Вы можете вызвать Gemini API с помощью мультимодальных приглашений, которые включают как текст, так и несколько файлов (например, изображений, как показано в этом примере). Для этих вызовов вам необходимо использовать модель, поддерживающую мультимедиа в подсказках (например, Gemini 1.5 Flash).

Обязательно ознакомьтесь с требованиями и рекомендациями для входных файлов .

Выберите, хотите ли вы передать ответ в потоковом режиме ( generateContentStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( generateContent ).

Потоковое вещание

Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата от создания модели, а вместо этого используйте потоковую передачу для обработки частичных результатов.

В этом примере показано, как использоватьgenerContentStream generateContentStream() для потоковой передачи сгенерированного текста из запроса мультимодальной подсказки, который включает текст и несколько изображений:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

В качестве альтернативы вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использоватьgenerContent generateContent() для генерации текста из запроса мультимодальной подсказки, который включает текст и несколько изображений:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Генерация текста из текста и видео

Прежде чем приступать к работе с этим примером, убедитесь, что вы завершили раздел «Перед началом работы» данного руководства.

Вы можете вызвать Gemini API с помощью мультимодальных запросов, которые включают как текстовые, так и видеофайлы (как показано в этом примере). Для этих вызовов вам необходимо использовать модель, поддерживающую мультимедиа в подсказках (например, Gemini 1.5 Flash).

Обязательно ознакомьтесь с требованиями и рекомендациями для входных файлов .

Выберите, хотите ли вы передать ответ в потоковом режиме ( generateContentStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( generateContent ).

Потоковое вещание

Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата от создания модели, а вместо этого используйте потоковую передачу для обработки частичных результатов.

В этом примере показано, как использоватьgenerateContentStream generateContentStream() для потоковой передачи сгенерированного текста из запроса мультимодальной подсказки, который включает текст и одно видео:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

Альтернативно, вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использоватьgenerContent generateContent() для генерации текста из запроса мультимодальной подсказки, который включает текст и одно видео:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Требования и рекомендации к входным файлам

См. раздел Поддерживаемые входные файлы и требования для Vertex AI Gemini API чтобы узнать следующее:

  • Различные варианты предоставления файла в запросе
  • Поддерживаемые типы файлов
  • Поддерживаемые типы MIME и способы их указания
  • Требования и рекомендации для файлов и мультимодальных запросов

Что еще вы можете сделать?

  • Узнайте, как подсчитывать токены , прежде чем отправлять модели длинные запросы.
  • Настройте Cloud Storage for Firebase , чтобы вы могли включать большие файлы в свои мультимодальные запросы и иметь более управляемое решение для предоставления файлов в приглашениях. Файлы могут включать изображения, PDF-файлы, видео и аудио.
  • Начните думать о подготовке к работе, включая настройку Firebase App Check для защиты Gemini API от злоупотреблений со стороны неавторизованных клиентов.

Попробуйте другие возможности Gemini API

Узнайте, как контролировать создание контента

Вы также можете поэкспериментировать с подсказками и конфигурациями модели с помощью Vertex AI Studio .

Узнайте больше о моделях Gemini

Узнайте о моделях, доступных для различных вариантов использования , а также об их квотах и ​​ценах .


Оставьте отзыв о своем опыте использования Vertex AI in Firebase