Вопрос или проблема
Я создавал небольшое приложение на 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 приложение. Ошибка, которую вы получаете, говорит о том, что загружаемый файл не находится в активном состоянии и его использование не допускается.
Вот несколько шагов, которые могут помочь вам решить эту проблему:
-
Проверка статуса файла: Ошибка
The File is not in an ACTIVE state
указывает на то, что файл, который вы загружаете, не находится в активном состоянии. Убедитесь, что файл загружается корректно и проверьте статус файла после загрузки. Вы можете использовать метод API для проверки статуса файла, если такая возможность предусмотрена. -
Тип файла: Убедитесь, что видеофайл имеет поддерживаемый формат. Некоторые модели могут не поддерживать все форматы видео, которые вы пытаетесь загрузить. Проверьте документацию Google Generative AI на предмет поддерживаемых форматов видео.
-
Параметры загрузки: Если видеофайлы слишком большие, это может вызывать проблемы с их загрузкой. Попробуйте использовать видео меньшего размера или изменить параметры кодирования, чтобы уменьшить размер файла.
-
Отладка кода: Обратите внимание на место, где вы вызываете
gen_file = genai.upload_file(path=file_path)
, и убедитесь, что метод upload_file действительно возвращает файл в активном состоянии. Вы можете добавить отладочный вывод, чтобы увидеть, какие данные возвращает эту функция. -
Обращение к API: Если у вас есть доступ к API Google, попробуйте проверить, можено ли загрузить видеофайлы напрямую через его интерфейс. Если оно работает в Jupyter Notebook, но не в Flask, это может означать, что ваше окружение Flask не настроено должным образом.
-
Логирование: Включите дополнительное логирование в вашем Flask приложении, чтобы лучше понимать, что происходит в момент загрузки видеофайлов и их передачи в модель. Это позволит вам быстрее обнаружить проблему.
-
Обновление пакетов: Убедитесь, что вы используете последние версии библиотек, устанавливаемых через pip. Иногда проблемы с совместимостью могут быть вызваны устаревшими пакетами.
-
Тестирование с другим видео: Попробуйте загрузить другое видеофайл (например, с тестовым контентом), чтобы исключить проблемы, связанные с конкретным файлом.
Если ни один из этих шагов не поможет, рекомендуется обратиться в службу поддержки Google или на форумы сообщества, чтобы узнать, есть ли известные проблемы с видеофайлами в вашей версии API.
Надеюсь, эти рекомендации помогут вам решить вашу проблему!