Подсказка с медиа-файлами


Посмотреть на ai.google.dev Запустить в Google Colab Посмотреть исходный код на GitHub

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

File API позволяет хранить до 20 ГБ файлов на проект, при этом размер каждого файла не превышает 2 ГБ. Файлы хранятся в течение 48 часов, и к ним можно получить доступ с помощью вашего ключа API для генерации в течение этого периода времени, и их нельзя загрузить из API. API Files доступен бесплатно во всех регионах, где доступен API Gemini .

File API обрабатывает входные данные, которые можно использовать для создания контента с помощью model.generateContent или model.streamGenerateContent . Информацию о допустимых форматах файлов (типах MIME) и поддерживаемых моделях см. в разделе Поддерживаемые форматы файлов .

В этом руководстве показано, как использовать File API для загрузки мультимедийных файлов и включения их в вызов GenerateContent API Gemini. Дополнительные сведения см. в примерах кода .

Прежде чем начать: настройте проект и ключ API.

Прежде чем вызывать API Gemini (или его файловый API), вам необходимо настроить проект и ключ API.

Подсказка с изображениями

В этом руководстве вы загрузите образец изображения с помощью File API, а затем используете его для создания контента.

Загрузите файл изображения

Обратитесь к разделу «Приложение» , чтобы узнать, как загрузить собственный файл.

  1. Подготовьте образец изображения для загрузки:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. Загрузите этот файл с помощью media.upload , чтобы иметь доступ к нему с помощью других вызовов API:

    sample_file = genai.upload_file(path="image.jpg",
                                display_name="Sample drawing")
    
    print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
    

response показывает, что загруженное изображение сохраняется с указанным display_name и имеет uri для ссылки на файл в вызовах API Gemini. Используйте response , чтобы отслеживать, как загруженные файлы сопоставляются с URI.

В зависимости от вашего варианта использования вы можете хранить URI в структурах, таких как dict или база данных.

Получить метаданные файла изображения

После загрузки файла вы можете убедиться, что API успешно сохранил файл, и получить его метаданные, вызвав files.get через SDK.

Этот метод позволяет вам получить метаданные для загруженного файла, связанного с проектом Google Cloud, связанным с вашим ключом API. Только name (и, соответственно, uri ) уникальны. Используйте display_name для идентификации файлов, только если вы сами управляете уникальностью.

file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")

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

После загрузки изображения вы можете отправлять запросы GenerateContent , которые ссылаются на uri в ответе (либо при загрузке файла, либо при непосредственном получении метаданных файла).

В этом примере вы создаете приглашение, которое начинается с текста, за которым следует ссылка URI для загруженного файла:

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

response = model.generate_content([sample_file, "Describe the image with a creative description."])

Markdown(">" + response.text)

Удалить файл изображения

Файлы автоматически удаляются через 48 часов. Вы также можете удалить их вручную, используя files.delete через SDK.

genai.delete_file(sample_file.name)
print(f'Deleted {sample_file.display_name}.')

Подсказка с помощью видео

В этом руководстве вы загружаете образец видео с помощью File API, а затем используете его для создания контента.

Загрузите видеофайл

Gemini API напрямую принимает форматы видеофайлов. В этом примере используется короткометражный фильм «Большой кролик».

«Big Buck Bunny» защищен авторскими правами (c) 2008 г., Blender Foundation / www.bigbuckbunny.org и лицензируется в соответствии с лицензией Creative Commons Attribution 3.0.

Обратитесь к разделу «Приложение» , чтобы узнать, как загрузить собственный файл.

  1. Подготовьте образец видеофайла для загрузки:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. Загрузите этот файл с помощью media.upload , чтобы иметь доступ к нему с помощью других вызовов API:

    video_file_name = "BigBuckBunny_320x180.mp4"
    
    print(f"Uploading file...")
    video_file = genai.upload_file(path=video_file_name)
    print(f"Completed upload: {video_file.uri}")
    

Проверьте состояние загрузки видеофайла

Убедитесь, что API успешно загрузил видеофайл, вызвав метод files.get через SDK.

Видеофайлы имеют поле State из File API. Когда видео загружено, оно будет находиться в состоянии PROCESSING , пока не будет готово к обработке. Для вывода модели можно использовать только файлы ACTIVE .

import time

while video_file.state.name == "PROCESSING":
    print('.', end='')
    time.sleep(10)
    video_file = genai.get_file(video_file.name)

if video_file.state.name == "FAILED":
  raise ValueError(video_file.state.name)

Получить метаданные видеофайла

Вы можете получить метаданные загруженного видеофайла в любое время, вызвав метод files.get через SDK.

Этот метод позволяет вам получить метаданные для загруженного файла, связанного с проектом Google Cloud, связанным с вашим ключом API. Только name (и, соответственно, uri ) уникальны. Используйте display_name для идентификации файлов, только если вы сами управляете уникальностью.

file = genai.get_file(name=video_file.name)
print(f"Retrieved file '{file.display_name}' as: {video_file.uri}")

Создание контента с использованием загруженного видеофайла

После загрузки видео вы можете делать запросы GenerateContent , ссылающиеся на uri в ответе (либо при загрузке файла, либо при непосредственном получении метаданных файла).

Прежде чем запускать логический вывод для видео, убедитесь, что вы проверили состояние загрузки видеофайла (раздел выше).

# Create the prompt.
prompt = "Describe this video."

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
                                  request_options={"timeout": 600})
print(response.text)

Удалить видеофайл

Файлы автоматически удаляются через 48 часов. Вы также можете удалить их вручную, используя files.delete через SDK.

genai.delete_file(file_response.name)
print(f'Deleted file {file_response.uri}')

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

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

Модель Изображений Аудио видео Простой текст
Gemini 1.5 Pro (выпуск 008 и новее) ✔ (максимум 3600 файлов изображений)

Форматы изображений

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

  • Изображения должны относиться к одному из следующих типов MIME данных изображения:
    • PNG - изображение/png
    • JPEG — изображение/jpeg
    • WEBP — изображение/webp
    • HEIC — изображение/heic
    • HEIF - изображение/хеф
  • Максимум 3600 изображений для моделей Gemini 1.5.
  • Никаких конкретных ограничений на количество пикселей в изображении; однако изображения большего размера уменьшаются до максимального разрешения 3072 x 3072, сохраняя при этом исходное соотношение сторон.

Аудио форматы

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

  • Аудиоданные поддерживаются в следующих распространенных типах MIME аудиоформатов:
    • WAV — аудио/wav
    • MP3 - аудио/mp3
    • AIFF — аудио/aiff
    • AAC — аудио/aac
    • OGG Vorbis — аудио/ogg
    • FLAC — аудио/flac
  • Максимальная поддерживаемая продолжительность аудиоданных в одном приглашении — 9,5 часов.
  • Аудиофайлы преобразуются до разрешения данных 16 Кбит/с, а несколько каналов звука объединяются в один канал.
  • Конкретного ограничения на количество аудиофайлов в одном приглашении нет; однако общая продолжительность всех аудиофайлов в одном приглашении не может превышать 9,5 часов.

Видео форматы

Вы можете использовать видеоданные для подсказок на моделях Gemini 1.5.

  • Видеоданные поддерживаются в следующих распространенных типах MIME видеоформатов:

    • видео/mp4
    • видео/мпег
    • видео/мов
    • видео/ави
    • видео/x-flv
    • видео/миль на галлон
    • видео/вебм
    • видео/wmv
    • видео/3gpp
  • Служба File API преобразует видео в изображения со скоростью 1 кадр в секунду (FPS) и может быть изменена для обеспечения наилучшего качества вывода. Отдельные изображения занимают 258 токенов независимо от разрешения и качества.

Обычные текстовые форматы

File API поддерживает загрузку текстовых файлов со следующими типами MIME:

  • текстовый/обычный
  • текст/html
  • текст/css
  • текст/JavaScript
  • приложение/x-javascript
  • текст/x-машинопись
  • приложение/x-typescript
  • текст/CSV
  • текст/уценка
  • текст/х-питон
  • приложение/x-python-код
  • приложение/json
  • текст/xml
  • приложение/rtf
  • текст/rtf

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

Приложение: Загрузка файлов в Colab

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

Сначала нажмите «Файлы» на левой боковой панели, затем нажмите кнопку «Загрузить» :

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

my_filename = "gemini_logo.png" # @param {type:"string"}
my_file_display_name = "Gemini Logo" # @param {type:"string"}

my_file = genai.upload_file(path=my_filename,
                            display_name=my_file_display_name)
print(f"Uploaded file '{my_file.display_name}' as: {my_file.uri}")