‘Полное руководство по кодам ошибок Veo 3.1: анализ и решения распространенных

Обзор распространённых кодов ошибок Veo 3.1

429 RESOURCE_EXHAUSTED — превышение лимитов

Это одна из самых частых проблем при работе с Veo 3.1:

Причины:

  • Исчерпана квота запросов (Rate Limit)
  • Достигнут лимит параллельных запросов
  • Перегрузка сервиса в часы пик

Решения:

import time
import random

def retry_with_backoff(func, max_retries=5):
    """Повторные попытки с экспоненциальной задержкой"""
    for i in range(max_retries):
        try:
            return func()
        except ResourceExhausted:
            if i == max_retries - 1:
                raise
            wait_time = (2 ** i) + random.random()
            print(f"Ждём {wait_time:.2f} сек перед повтором...")
            time.sleep(wait_time)

Практические советы:

  • Генерируйте видео в непиковые часы (23:00-06:00 по тихоокеанскому времени)
  • Используйте очереди для распределения нагрузки
  • Установите интервалы между запросами минимум 30-60 секунд

veo-3-error-codes-troubleshooting-guide-ru 图示


Коды безопасных фильтров (Support Codes)

Когда Veo 3.1 блокирует контент, вы получаете 8-значный код поддержки. Вот полный справочник:

Child (58061214, 17301594)

Проблема: Запрос содержит упоминание детей или несовершеннолетних.

Как обойти:

# ❌ Заблокируется
prompt = "Маленький мальчик играет в парке"

# ✅ Обходной вариант
prompt = "Молодой взрослый человек наслаждается солнечным днём в городском саду"

# Или используйте параметр (требуется белый список проекта)
config = {
    "personGeneration": "allow_all"
}

Celebrity (29310472, 15236754)

Проблема: Генерация узнаваемых персон запрещена без специального разрешения.

Решение:

  • Опишите общие черты вместо конкретных имён
  • Используйте абстрактные описания ("известный предприниматель" → "успешный бизнесмен в костюме")
  • Для коммерческого использования свяжитесь с Google для получения доступа

Sexual (90789179, 43188360)

Фильтр: Любой сексуальный или намекающий контент.

Примеры триггеров:

  • Купальники, нижнее бельё
  • Романтические/интимные сцены
  • Части тела крупным планом

Violence (61493863, 56562880)

Блокируется:

  • Сцены драк, оружие
  • Кровь, телесные повреждения
  • Агрессивное поведение

Альтернативы:

# ❌ Заблокируется
"Боец наносит удар противнику в ринге"

# ✅ Пройдёт
"Два спортсмена практикуют боевые приёмы под присмотром тренера"

Dangerous (62263041)

Включает инструкции по:

  • Созданию оружия или взрывчатых веществ
  • Опасным экспериментам
  • Вредоносным действиям

PII — личные данные (92201652)

Триггеры:

  • Номера кредитных карт
  • Адреса, номера телефонов
  • Социальные номера, паспортные данные

Ошибка 403 Forbidden

Возможные причины:

  1. API не активирован
gcloud services enable aiplatform.googleapis.com --project=YOUR_PROJECT
  1. Недостаточно прав IAM
# Проверьте роли
gcloud projects get-iam-policy YOUR_PROJECT

# Необходимые роли:
# - roles/aiplatform.user
# - roles/serviceusage.serviceUsageConsumer
  1. Регион не поддерживается
# Только эти регионы работают с Veo
SUPPORTED_REGIONS = [
    "us-central1",
    "europe-west4"
]

Практическое руководство по устранению проблем

Шаг 1: Идентификация типа ошибки

def diagnose_error(error):
    """Диагностика типа ошибки"""
    error_msg = str(error)
    
    if "PUBLIC_ERROR_MINOR" in error_msg:
        return "Внутренняя ошибка — повторите через 5-10 минут"
    
    elif "429" in error_msg or "RESOURCE_EXHAUSTED" in error_msg:
        return "Лимит запросов — подождите или используйте прокси-сервис"
    
    elif "Support Code:" in error_msg:
        code = extract_support_code(error_msg)
        return f"Фильтр безопасности — код {code}, измените промпт"
    
    elif "403" in error_msg:
        return "Проблемы с доступом — проверьте настройки API и IAM"
    
    return "Неизвестная ошибка — обратитесь в поддержку"

Шаг 2: Автоматическая обработка

import re
import time

def safe_generate_video(client, prompt, max_retries=3):
    """Генерация с автоматической обработкой ошибок"""
    
    for attempt in range(max_retries):
        try:
            response = client.generate_video(prompt=prompt)
            return response
            
        except Exception as e:
            error_type = diagnose_error(e)
            print(f"Попытка {attempt + 1}: {error_type}")
            
            if "Support Code:" in str(e):
                # Упростить промпт при срабатывании фильтра
                prompt = simplify_prompt(prompt)
                print(f"Упрощённый промпт: {prompt}")
                
            elif "429" in str(e):
                # Экспоненциальная задержка для лимитов
                wait_time = (2 ** attempt) * 60
                print(f"Ожидание {wait_time} секунд...")
                time.sleep(wait_time)
                
            elif "PUBLIC_ERROR_MINOR" in str(e):
                time.sleep(300)  # 5 минут
                
            else:
                raise  # Пробросить неизвестные ошибки
    
    raise Exception("Не удалось сгенерировать после всех попыток")

def simplify_prompt(prompt):
    """Упрощение промпта для обхода фильтров"""
    # Удалить потенциально проблемные слова
    sensitive_words = ['ребёнок', 'дети', 'знаменитость', 'оружие', 'кровь']
    
    for word in sensitive_words:
        prompt = prompt.replace(word, '')
    
    return prompt.strip()

Шаг 3: Мониторинг и логирование

import logging
from datetime import datetime

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def log_generation_attempt(prompt, success, error=None):
    """Логирование попыток генерации для анализа"""
    log_entry = {
        'timestamp': datetime.now().isoformat(),
        'prompt': prompt[:100],  # Первые 100 символов
        'success': success,
        'error': str(error) if error else None
    }
    
    if success:
        logger.info(f"✅ Успех: {log_entry}")
    else:
        logger.error(f"❌ Ошибка: {log_entry}")
    
    # Сохранить в файл для анализа
    with open('veo_logs.jsonl', 'a') as f:
        f.write(json.dumps(log_entry) + '\n')

Рекомендации по обходу ограничений

1. Используйте прокси-сервисы API

Для стабильной работы рекомендуется использовать проверенные прокси-сервисы:

APIYI (API.YI) — надёжный шлюз для китайских пользователей:

  • ✅ Стабильное подключение без VPN
  • ✅ Низкие цены + бесплатная пробная версия
  • ✅ Поддержка всех моделей Google (включая Veo 3.1)
  • ✅ Встроенный retry механизм
# Пример использования с APIYI
from openai import OpenAI

client = OpenAI(
    api_key="ваш-ключ-api-yi",
    base_url="https://api.gptsapi.net/v1"
)

# Вызов работает так же, как напрямую
response = client.chat.completions.create(
    model="veo-3.1",
    messages=[{"role": "user", "content": "Ваш промпт"}]
)

2. Оптимизируйте промпты

Правила безопасных промптов:

# ❌ Проблемный промпт
bad_prompt = """
Реалистичный портрет Илона Маска с детьми в офисе Tesla,
драматичное освещение, 4K, кинематографично
"""

# ✅ Безопасный промпт
good_prompt = """
Профессиональный бизнесмен средних лет в современном офисе,
естественное освещение, корпоративная атмосфера
"""

Шаблон безопасного промпта:

[Общее описание действия] + [Обстановка] + [Технические параметры]
- Избегайте имён и узнаваемых черт
- Используйте нейтральные возрастные категории ("взрослый", "подросток 18+")
- Описывайте действия, а не людей

3. Автоматизация с учётом пиковых часов

from datetime import datetime
import pytz

def is_peak_hour():
    """Проверка, не час ли пик в PST"""
    pst = pytz.timezone('America/Los_Angeles')
    now = datetime.now(pst)
    hour = now.hour
    
    # Часы пик: 9-11 утра, 1-3 дня, 7-9 вечера
    peak_hours = [
        (9, 11), (13, 15), (19, 21)
    ]
    
    return any(start <= hour < end for start, end in peak_hours)

def smart_schedule_generation(prompts):
    """Умное планирование генерации"""
    if is_peak_hour():
        print("⚠️ Час пик — ожидание до оптимального времени...")
        # Подождать до окончания часа пик или поставить в очередь
        return schedule_for_off_peak(prompts)
    else:
        print("✅ Оптимальное время — начинаем генерацию")
        return generate_immediately(prompts)

FAQ по ошибкам Veo 3.1

Q: Почему я постоянно получаю PUBLIC_ERROR_MINOR?

A: Это общая ошибка, которая может означать:

  • Временную недоступность GPU
  • Проблемы с аудио-процессингом
  • Перегрузку сервиса

Решение: Подождите 10-15 минут и повторите. Если проблема сохраняется более часа — упростите промпт.

Q: Как узнать, какое именно слово вызвало фильтр безопасности?

A: Google не раскрывает конкретные триггеры, но вы можете:

  1. Постепенно удалять части промпта
  2. Заменять подозрительные слова синонимами
  3. Использовать онлайн-инструменты проверки контента

Q: Можно ли генерировать видео с известными брендами?

A: Нет, это нарушает политику использования. Замените на общие описания ("спортивный автомобиль" вместо "Ferrari").

Q: Что делать, если 403 ошибка сохраняется после включения API?

A: Проверьте:

# 1. Статус API
gcloud services list --enabled | grep aiplatform

# 2. Биллинг активен
gcloud beta billing accounts list

# 3. Квоты не исчерпаны
gcloud compute project-info describe --project=YOUR_PROJECT

Заключение

Работа с Veo 3.1 требует понимания его ограничений и умения обходить распространённые ошибки. Ключевые выводы:

  1. Фильтры безопасности — самая частая причина отказов. Используйте нейтральные формулировки.
  2. Ограничения ресурсов — работайте вне часов пик или используйте прокси-сервисы.
  3. PUBLIC_ERROR_MINOR — почти всегда решается простым ожиданием.
  4. Автоматизация — внедрите retry логику и логирование для отслеживания паттернов.

Для стабильной работы рекомендуем использовать APIYI — это избавит от многих головных болей с квотами и доступностью.

Успешной генерации! 🎬

Подробный разбор кода фильтрации безопасности Veo 3.1

Когда генерация видео блокируется фильтром безопасности, вы получите примерно такое сообщение об ошибке:

Veo could not generate videos because the input image violates
Vertex AI's usage guidelines. Support codes: 15236754

Полная таблица Support Code

Support Code Категория Описание
58061214, 17301594 Child Контент с участием детей, требуется personGeneration=allow_all
29310472, 15236754 Celebrity Реалистичное изображение знаменитостей, требуется добавление проекта в белый список
64151117, 42237218 Video Safety Видеоконтент нарушает стандарты безопасности
90789179, 43188360 Sexual Контент сексуального характера
61493863, 56562880 Violence Контент, связанный с насилием
62263041 Dangerous Потенциально опасный контент
57734940, 22137204 Hate Контент, разжигающий ненависть
78610348 Toxic Токсичный/вредоносный контент
32635315 Vulgar Вульгарный контент
92201652 PII Персональные данные (номера карт, адреса и т.д.)
74803281, 29578790, 42876398 Other Другие проблемы безопасности
89371032, 49114662, 63429089, 72817394 Prohibited Нарушение политики использования

Распространённые HTTP коды ошибок

429 RESOURCE_EXHAUSTED

Это одна из самых частых ошибок — слишком много запросов или исчерпана квота.

Причины возникновения:

  • Слишком высокая частота запросов от одного пользователя
  • Системное ограничение на количество запросов
  • Исчерпана дневная квота

Решение:

import time

def generate_with_retry(prompt, max_retries=3):
    for i in range(max_retries):
        try:
            # Вызов Veo API
            response = veo_generate(prompt)
            return response
        except ResourceExhaustedError:
            wait_time = (2 ** i) * 10  # Экспоненциальная задержка
            print(f"Превышена квота, ждём {wait_time} секунд...")
            time.sleep(wait_time)
    raise Exception("Исчерпано количество попыток")

403 Forbidden

Частые причины:

  • Generative Language API не включён в проекте
  • Проект не добавлен в необходимый белый список
  • Недействительные учётные данные для аутентификации

Шаги решения:

  1. Включите Generative Language API в Google Cloud Console
  2. Проверьте, есть ли у проекта доступ к Veo API
  3. Убедитесь в корректности API Key или учётных данных сервисного аккаунта

Другие распространённые ошибки

Общая ошибка "Something Went Wrong"

Это универсальная ошибка, которая может скрывать множество различных проблем:

Категория причин Описание Вероятность
Перегрузка серверов Превышение мощности на 300-400% в час пик Наиболее частая
Нехватка GPU-ресурсов Сложные запросы потребляют 95% памяти GPU Частая
Ложное срабатывание системы безопасности Обычные слова триггерят фильтры Частая
Проблемы с сетью Таймауты соединения, DNS-проблемы Реже

Слова, часто вызывающие ложные срабатывания:

  • "fire" (может восприниматься как "стрелять")
  • "shot" (может восприниматься как "выстрел")
  • "strike" (может восприниматься как "удар/атака")
  • "execution" (может восприниматься как "казнь")

"This generation might violate our policies"

Предупреждение о нарушении политики, но часто это ложное срабатывание. Способы решения:

  1. Переформулируйте промпт — избегайте двусмысленных выражений
  2. Удалите определённые фразы — уберите потенциально чувствительные описания
  3. Генерируйте поэтапно — сначала создайте простую версию, затем постепенно добавляйте детали

Лучшие практики обработки ошибок Veo 3.1

veo-3-error-codes-troubleshooting-guide-ru 图示

Пример кода: полная обработка ошибок

import time
from enum import Enum

class VeoErrorType(Enum):
    RESOURCE_EXHAUSTED = "429"
    FORBIDDEN = "403"
    SAFETY_FILTER = "safety"
    PUBLIC_ERROR_MINOR = "public_error_minor"
    UNKNOWN = "unknown"

def handle_veo_error(error_response):
    """Обработка ошибок Veo 3.1"""

    error_code = error_response.get("code", "")
    error_message = error_response.get("message", "")
    support_code = extract_support_code(error_message)

    if "429" in str(error_code):
        return VeoErrorType.RESOURCE_EXHAUSTED, "Слишком много запросов, рекомендуется подождать и повторить"

    if "403" in str(error_code):
        return VeoErrorType.FORBIDDEN, "Недостаточно прав, проверьте настройки API"

    if support_code:
        category = get_safety_category(support_code)
        return VeoErrorType.SAFETY_FILTER, f"Фильтр безопасности: {category}"

    if "PUBLIC_ERROR_MINOR" in error_message:
        return VeoErrorType.PUBLIC_ERROR_MINOR, "Внутренняя ошибка обработки, рекомендуется упростить запрос и повторить"

    return VeoErrorType.UNKNOWN, error_message

# Маппинг кодов фильтров безопасности
SAFETY_CODES = {
    "58061214": "Child", "17301594": "Child",
    "29310472": "Celebrity", "15236754": "Celebrity",
    "90789179": "Sexual", "43188360": "Sexual",
    "61493863": "Violence", "56562880": "Violence",
    "62263041": "Dangerous",
    # ... больше кодов
}

Совет: Используйте Veo 3.1 через APIYI (apiyi.com) — платформа предоставляет стабильный посреднический сервис, позволяющий обойти часть официальных ограничений и повысить успешность генерации.


Часто задаваемые вопросы

Q1: Как решить ошибку PUBLIC_ERROR_MINOR?

Это общая ошибка, указывающая на внутренний сбой обработки. Рекомендации:

  1. Подождите 5-10 минут и повторите попытку
  2. Упростите промт, снизьте его сложность
  3. Избегайте генерации в часы пиковой нагрузки
  4. Если ошибка повторяется, попробуйте использовать промежуточный API-сервис

Q2: Почему нормальные промты срабатывают на фильтр безопасности?

Фильтр безопасности Veo 3.1 иногда бывает "слишком чувствительным", что приводит к ложным срабатываниям. Частые триггеры включают слова "fire", "shot", "strike" и подобные. Решение — использовать альтернативные формулировки, например, заменить "fire in the fireplace" на "burning logs in the hearth".

Q3: Как посмотреть подробную причину ошибки?

В API-запросе включите параметр includeRaiReason: true — это позволит получить более детальную информацию о причине срабатывания фильтра. Полученный Support Code можно сверить с таблицей в этой статье, чтобы узнать конкретную категорию блокировки.


Резюме

Ключевые моменты по кодам ошибок Veo 3.1:

  1. PUBLIC_ERROR_MINOR: Общая внутренняя ошибка, обычно решается ожиданием и повторной попыткой или упрощением запроса
  2. Support Code (8-значное число): Код фильтра безопасности, сверьте с таблицей, чтобы понять причину блокировки
  3. 429 RESOURCE_EXHAUSTED: Превышен лимит частоты запросов, используйте экспоненциальную задержку при повторных попытках
  4. Лучшие практики: Избегайте часов пик, используйте лаконичные промты, внедряйте механизм повторных попыток

При постоянных ошибках можно попробовать работать с Veo 3.1 через APIYI apiyi.com — платформа предлагает более стабильный опыт работы с API и профессиональную техническую поддержку.


参考资料

⚠️ 链接格式说明: 所有外链使用 资料名: domain.com 格式,方便复制但不可点击跳转,避免 SEO 权重流失。

  1. Veo on Vertex AI 官方文档: Google Cloud 官方 API 参考文档

    • 链接: docs.cloud.google.com/vertex-ai/generative-ai/docs/model-reference/veo-video-generation
    • 说明: 查看完整的 API 参数和响应格式
  2. Veo 负责任 AI 指南: 安全过滤器和使用准则

    • 链接: docs.cloud.google.com/vertex-ai/generative-ai/docs/video/responsible-ai-and-usage-guidelines
    • 说明: 了解安全过滤代码的完整列表
  3. Veo 3.1 常见错误排查: 社区整理的错误处理指南

    • 链接: skywork.ai/blog/llm/veo-3-1-troubleshooting-common-errors-2
    • 说明: 更多实战经验和解决方案

作者: 技术团队
技术交流: 欢迎在评论区讨论,更多资料可访问 APIYI apiyi.com 技术社区