![]() | ![]() | ![]() |
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.
Установите Python SDK и импортируйте пакеты.
Python SDK для Gemini API содержится в пакете google-generativeai
.
Установите зависимость с помощью pip:
pip install -q -U google-generativeai
Импортируйте необходимые пакеты:
import google.generativeai as genai from IPython.display import Markdown
Защитите и настройте свой ключ API
Вам понадобится ключ API для вызова API Gemini (и его API файлов). Если у вас его еще нет, создайте ключ в Google AI Studio.
Сохраните свой ключ API в секрете Colab с именем GOOGLE_API_KEY
. Если вы не знакомы с секретами Colab, обратитесь к краткому руководству по аутентификации .
from google.colab import userdata
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
Подсказка с изображениями
В этом руководстве вы загрузите образец изображения с помощью File API, а затем используете его для создания контента.
Загрузите файл изображения
Обратитесь к разделу «Приложение» , чтобы узнать, как загрузить собственный файл.
Подготовьте образец изображения для загрузки:
curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Загрузите этот файл с помощью
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.
Обратитесь к разделу «Приложение» , чтобы узнать, как загрузить собственный файл.
Подготовьте образец видеофайла для загрузки:
wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
Загрузите этот файл с помощью
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}")