Google GenerativeAI не может загрузить видеофайлы

Вопрос или проблема

Я создавал небольшое приложение на Flask с HTML-шаблонами, где пользователь мог загружать видео, и я использовал LLM для его описания.

Я получаю URL файла через HTML-форму, который затем сохраняю в локальной папке.

file_url = request.form[f'media-url-{i}']
extension = file_url.split('?')[0].split('.')[-1]
filename = str(uuid.uuid4()) + '.' + extension
file_path = os.path.join(os.environ['TMP_DIR'], filename)

Файл успешно работает, и изображение/видео сохраняется.

Затем я пытаюсь использовать LLM следующим образом:

genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel('gemini-1.5-flash')

gen_file = genai.upload_file(path=file_path)
response = model.generate_content([llm_prompt, gen_file]).text

Это, похоже, работает достаточно хорошо с изображениями.

Когда я загружаю видео, это не работает в моем приложении Flask (хотя механизм работает, когда я тестирую в блокноте Jupyter).

Вот ошибка, которую я получаю:

line 91, in generate_posts
    response = model.generate_content([llm_prompt, gen_file]).text
File "C:\miniconda3\lib\site-packages\google\generativeai\generative_models.py", line 331, in generate_content
    response = self._client.generate_content(
File "C:\miniconda3\lib\site-packages\google\ai\generativelanguage_v1beta\services\generative_service\client.py", line 830, in generate_content
    response = rpc(
File "C:\miniconda3\lib\site-packages\google\api_core\gapic_v1\method.py", line 131, in __call__
    return wrapped_func(*args, **kwargs)
File "C:\miniconda3\lib\site-packages\google\api_core\retry\retry_unary.py", line 293, in retry_wrapped_func
    return retry_target(
File "C:\miniconda3\lib\site-packages\google\api_core\retry\retry_unary.py", line 153, in retry_target
    _retry_error_helper(
File "C:\miniconda3\lib\site-packages\google\api_core\retry\retry_base.py", line 212, in _retry_error_helper
    raise final_exc from source_exc
File "C:\miniconda3\lib\site-packages\google\api_core\retry\retry_unary.py", line 144, in retry_target
    result = target()
File "C:\miniconda3\lib\site-packages\google\api_core\timeout.py", line 120, in func_with_timeout
    return func(*args, **kwargs)
File "C:\miniconda3\lib\site-packages\google\api_core\grpc_helpers.py", line 78, in error_remapped_callable
    raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.FailedPrecondition: 400 Файл shtw63tpykp2 не в состоянии ACTIVE, и его использование не разрешено.

У вас есть идеи?

Спасибо!

Ответ или решение

Судя по предоставленной информации, вы столкнулись с проблемой загрузки видеофайлов на платформу Google Generative AI через ваше Flask приложение. Ошибка, которую вы получаете, говорит о том, что загружаемый файл не находится в активном состоянии и его использование не допускается.

Вот несколько шагов, которые могут помочь вам решить эту проблему:

  1. Проверка статуса файла: Ошибка The File is not in an ACTIVE state указывает на то, что файл, который вы загружаете, не находится в активном состоянии. Убедитесь, что файл загружается корректно и проверьте статус файла после загрузки. Вы можете использовать метод API для проверки статуса файла, если такая возможность предусмотрена.

  2. Тип файла: Убедитесь, что видеофайл имеет поддерживаемый формат. Некоторые модели могут не поддерживать все форматы видео, которые вы пытаетесь загрузить. Проверьте документацию Google Generative AI на предмет поддерживаемых форматов видео.

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

  4. Отладка кода: Обратите внимание на место, где вы вызываете gen_file = genai.upload_file(path=file_path), и убедитесь, что метод upload_file действительно возвращает файл в активном состоянии. Вы можете добавить отладочный вывод, чтобы увидеть, какие данные возвращает эту функция.

  5. Обращение к API: Если у вас есть доступ к API Google, попробуйте проверить, можено ли загрузить видеофайлы напрямую через его интерфейс. Если оно работает в Jupyter Notebook, но не в Flask, это может означать, что ваше окружение Flask не настроено должным образом.

  6. Логирование: Включите дополнительное логирование в вашем Flask приложении, чтобы лучше понимать, что происходит в момент загрузки видеофайлов и их передачи в модель. Это позволит вам быстрее обнаружить проблему.

  7. Обновление пакетов: Убедитесь, что вы используете последние версии библиотек, устанавливаемых через pip. Иногда проблемы с совместимостью могут быть вызваны устаревшими пакетами.

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

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

Надеюсь, эти рекомендации помогут вам решить вашу проблему!

Оцените материал
Добавить комментарий

Капча загружается...