В настоящее время я работаю с Gemini AI API 1.5 Pro (последняя версия), и мне нужно отправлять большие видеофайлы для вывода. Размер каждого из этих видеороликов составляет несколько сотен мегабайт (~700 МБ), но они не выходят за рамки ограничений API (например, продолжительность менее 1 часа). Я хочу загрузить их один раз и выполнить вывод без повторной загрузки.
В GPT-4o была возможность использовать image_url
для ссылки на изображения. Существует ли аналогичный метод или рекомендации для обработки больших видеофайлов с помощью Gemini AI API 1.5 Pro?
Видео слишком велики, чтобы их можно было отправлять повторно, поэтому решающее значение имеет эффективный метод их загрузки и ссылки.
Мы будем очень признательны за любые рекомендации по конечным точкам API, обязательным параметрам или примерам фрагментов кода.
вы пробовали API файла ? Файлы, загруженные в файловый API, хранятся в течение 2 дней. Вы можете использовать их столько, сколько захотите, но вам придется загрузить их снова. когда вы используете их в приглашении, они по-прежнему учитываются как использование в контекстном окне.
@Tanaike Я могу разрешить хранить загруженный файл в течение 2 дней. Меня также не волнует подсчет использования токенов. Меня волнует использование сети для повторной загрузки видео. Какие-нибудь фрагменты кода, на которые вы могли бы направить меня, чтобы получить ссылку на этот загруженный файл, чтобы я мог запросить еще раз (но на этот раз без повторной загрузки)?
Я попробовал файл api. Моя подсказка звонит response = model.generate_content([prompt, video_file])
и для этого я получаю загруженный файл video_file = genai.upload_file(path=segment_path)
. Но как мне снова получить ранее загруженный файл без upload_file
? это get_file
?
В вашей ситуации как насчет следующего примера сценария?
Прежде чем тестировать следующий скрипт, обновите 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
.
В качестве другого подхода, когда значение 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)
Этот сценарий дает тот же результат, что и приведенный выше сценарий.
Когда файл загружается в Gemini, срок его действия составляет 2 дня. Загруженный файл можно использовать с uri. Итак, насчет
I want to upload them once and perform inference without re-uploading.
: если вы можете разрешить хранить загруженный файл в течение 2 дней, как насчет его использования?