Как отправить большие видео в Gemini AI API 1.5 Pro для вывода?

В настоящее время я работаю с Gemini AI API 1.5 Pro (последняя версия), и мне нужно отправлять большие видеофайлы для вывода. Размер каждого из этих видеороликов составляет несколько сотен мегабайт (~700 МБ), но они не выходят за рамки ограничений API (например, продолжительность менее 1 часа). Я хочу загрузить их один раз и выполнить вывод без повторной загрузки.

В GPT-4o была возможность использовать image_url для ссылки на изображения. Существует ли аналогичный метод или рекомендации для обработки больших видеофайлов с помощью Gemini AI API 1.5 Pro?

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

Мы будем очень признательны за любые рекомендации по конечным точкам API, обязательным параметрам или примерам фрагментов кода.

Когда файл загружается в Gemini, срок его действия составляет 2 дня. Загруженный файл можно использовать с uri. Итак, насчет I want to upload them once and perform inference without re-uploading.: если вы можете разрешить хранить загруженный файл в течение 2 дней, как насчет его использования?

Tanaike 03.06.2024 08:39

вы пробовали API файла ? Файлы, загруженные в файловый API, хранятся в течение 2 дней. Вы можете использовать их столько, сколько захотите, но вам придется загрузить их снова. когда вы используете их в приглашении, они по-прежнему учитываются как использование в контекстном окне.

Linda Lawton - DaImTo 03.06.2024 08:41

@Tanaike Я могу разрешить хранить загруженный файл в течение 2 дней. Меня также не волнует подсчет использования токенов. Меня волнует использование сети для повторной загрузки видео. Какие-нибудь фрагменты кода, на которые вы могли бы направить меня, чтобы получить ссылку на этот загруженный файл, чтобы я мог запросить еще раз (но на этот раз без повторной загрузки)?

RukshanJS 03.06.2024 08:45

Я попробовал файл api. Моя подсказка звонит response = model.generate_content([prompt, video_file]) и для этого я получаю загруженный файл video_file = genai.upload_file(path=segment_path). Но как мне снова получить ранее загруженный файл без upload_file? это get_file?

RukshanJS 03.06.2024 08:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
317
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашей ситуации как насчет следующего примера сценария?

Пример сценария 1:

Прежде чем тестировать следующий скрипт, обновите google-generativeai до последней версии.

import google.generativeai as genai
import time

apiKey = "###" # Please set your API key.
video_file_name = "sample.mp4" # Please set your video file with the path.
display_name = "sampleDisplayName" # Please set the display name of the uploaded file on Gemini. The file is searched from the file list using this value.

genai.configure(api_key=apiKey)

# Get file list in Gemini
fileList = genai.list_files(page_size=100)

# Check uploaded file.
video_file = next((f for f in fileList if f.display_name == display_name), None)
if video_file is None:
    print(f"Uploading file...")
    video_file = genai.upload_file(path=video_file_name, display_name=display_name, resumable=True)
    print(f"Completed upload: {video_file.uri}")
else:
    print(f"File URI: {video_file.uri}")

# Check the state of the uploaded file.
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)

# Generate content using the uploaded file.
prompt = "Describe this video."
model = genai.GenerativeModel(model_name = "models/gemini-1.5-pro-latest")
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt], request_options = {"timeout": 600})
print(response.text)

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

Пример сценария 2:

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

import google.generativeai as genai
import time

apiKey = "###" # Please set your API key.
video_file_name = "sample.mp4" # Please set your video file with the path.
name = "sample-name-1" # Please set the name of the uploaded file on Gemini. The file is searched from the file list using this value.

genai.configure(api_key=apiKey)

# Check uploaded file.
try:
    video_file = genai.get_file(f"files/{name}")
    print(f"File URI: {video_file.uri}")
except:
    print(f"Uploading file...")
    video_file = genai.upload_file(path=video_file_name, name=name, resumable=True)
    print(f"Completed upload: {video_file.uri}")

# Check the state of the uploaded file.
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)

# Generate content using the uploaded file.
prompt = "Describe this video."
model = genai.GenerativeModel(model_name = "models/gemini-1.5-pro-latest")
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt], request_options = {"timeout": 600})
print(response.text)

Этот сценарий дает тот же результат, что и приведенный выше сценарий.

Примечание:

  • Это простой пример сценария. Поэтому, пожалуйста, измените это в соответствии с вашей реальной ситуацией.

Ссылка:

Другие вопросы по теме