Безопасное восстановление после разрыва LLM-потока

Безопасное восстановление после разрыва LLM-потока: production-руководство с явным решением, повторяемым артефактом, проверками отказа, сигналами и подтвержденными границами.

Безопасное восстановление после разрыва LLM-потока: production-руководство с явным решением, повторяемым артефактом, проверками отказа, сигналами и подтвержденными границами.

Краткий ответ

Реализуйте Безопасное восстановление после разрыва LLM-потока как контракт контроля надежности, а не разовую настройку. До переноса трафика зафиксируйте протокол, owner, доказательства и rollback. Контрольные точки: first_event, partial_output, terminal_event, replay_policy.

Решение фиксируют таблица контракта и детерминированный пример. llm-stream-disconnect-recovery не выходит в rollout, если у жесткого контроля нет wire-доказательства, устойчивого чтения или owner.

Границы и ответственность

Разделяйте задачу клиента и control plane. Клиент отвечает за файл или переменную; шлюз — за аутентификацию, маршруты, лимиты, учет и попытки; поставщик — за нативный протокол и меняющиеся возможности. Один текстовый ответ доказывает только один путь.

Статья владеет решением, рисками и проверкой; живая документация — меняющимися командами и UI-шагами. Так формируется дерево возможностей без двух owner для одного поискового намерения.

Owner-запись страницы — llm-stream-disconnect-recovery; фиксированные контроли: first_event, partial_output, terminal_event, replay_policy. Каждое значение проверяется на wire-границе или в устойчивом состоянии, а не выводится из маркетинга.

Практический артефакт: Безопасное восстановление после разрыва LLM-потока

Эта запись ревью является поставляемым артефактом. Явные технические значения позволяют сравнить конфигурацию, wire-доказательство и устойчивое состояние без скриншотов.

Контроль Фиксированное решение Доказательство
stream_identity one_attempt_id_per_connection logical_request_id + attempt_id + provider_request_id
first_effective_event record_exact_transition event_type + timestamp + bytes_received
partial_output incomplete_not_success last_event_type + buffered_item_ids + incomplete_marker
tool_arguments decode_only_after_terminal_boundary call_id + fragment_sequence + completion_event
replay policy_depends_on_side_effect_risk replay_decision + new_attempt_id + prior_attempt_link
billing retain_each_attempt_and_final_settlement attempt_usage + terminal_state + charge_record

Детерминированный пример

Пример использует placeholders и детерминированный ввод. Заменяйте только проверенные идентификаторы, никогда секреты или данные клиента, и храните точный snapshot.

CONNECTING -> STREAMING -> TERMINAL_SUCCESS
     |             |  \
     |             |   -> DISCONNECTED_AFTER_PARTIAL -> INCOMPLETE
     |             -> CLIENT_CANCELLED -> CANCELLED
     -> DISCONNECTED_BEFORE_FIRST_EVENT -> RETRY_ELIGIBLE?

Never concatenate output from two attempt IDs.
Never execute partial tool arguments.

Уровни проверки

Выполняйте уровни по порядку. Поздний успех не заменяет раннюю границу; каждая попытка должна связываться с одним логическим запросом.

  1. Зафиксировать клиент, политику шлюза, alias модели, маршруты и наблюдаемую базу. Запись для stream_identity: применить one_attempt_id_per_connection и сохранить logical_request_id + attempt_id + provider_request_id.
  2. Выполнить положительную пробу и сохранить ответ, request ID, маршрут, конечный статус и usage. Запись для first_effective_event: применить record_exact_transition и сохранить event_type + timestamp + bytes_received.
  3. Выполнить парный отрицательный, предельный или disconnect-сценарий и проверить слой отказа. Запись для partial_output: применить incomplete_not_success и сохранить last_event_type + buffered_item_ids + incomplete_marker.
  4. Повторить через реальный протокол; не выводить нативную поддержку из соседнего endpoint. Запись для tool_arguments: применить decode_only_after_terminal_boundary и сохранить call_id + fragment_sequence + completion_event.
  5. Развернуть на ограниченной когорте с owner, сроком, порогом остановки и rollback. Запись для replay: применить policy_depends_on_side_effect_risk и сохранить replay_decision + new_attempt_id + prior_attempt_link.
  6. Перечитать устойчивую конфигурацию и учет; удалить временный доступ и тестовые данные. Запись для billing: применить retain_each_attempt_and_final_settlement и сохранить attempt_usage + terminal_state + charge_record.

Предотвращаемые отказы

Каждый пункт ниже блокирует выпуск. HTTP 200, dashboard или одна демонстрация не отменяют условия.

  • blind_reconnect — При blind_reconnect остановите rollout и примените заданные owner, доказательства и rollback; успешная проба не отменяет отказ.
  • partial_success — При partial_success остановите rollout и примените заданные owner, доказательства и rollback; успешная проба не отменяет отказ.
  • cross_attempt_splice — При cross_attempt_splice остановите rollout и примените заданные owner, доказательства и rollback; успешная проба не отменяет отказ.
  • partial_tool_execution — При partial_tool_execution остановите rollout и примените заданные owner, доказательства и rollback; успешная проба не отменяет отказ.

Сигналы и условия остановки

Наблюдайте успех и вред вместе. Порог задается политикой workload; SLO и знаменатель фиксируются до окна.

Сигнал Порог Действие
disconnect_before_first_event_rate workload_SLO_threshold inspect_connect_and_header_phases
disconnect_after_partial_rate workload_SLO_threshold mark_incomplete_and_stop_auto_retry
stream_without_terminal_event 0_success_classifications reclassify_and_investigate
cross_attempt_fragment_count 0 disable_recovery_path

Границы Modelflare

Modelflare централизует совместимый и нативный routing, ограниченные ключи, группы, usage и ошибки. Канал не доказывает все поля, alias, обещания хранения, регионы или fallback. Проверяйте нативно, а финансовой истиной считайте устойчивый финальный расчет.

Это метод реализации, не сертификация, юридический вывод, история uptime или универсальный benchmark. Перепроверьте контракт, модели, цены, хранение и регионы в T-1; перенесите дату при изменении ключевого факта.

Продолжение тематического кластера

Parent объясняет широкое решение, sibling — следующий шаг, документация — текущую настройку. Ссылки в тексте нужны, потому что managed CMS не хранит related-slug.

Частые вопросы

Безопасное восстановление после разрыва LLM-потока: Достаточно одного успешного запроса?

Нет. Отрицательный тест, ограниченный rollout, устойчивое чтение и остановка — отдельные gates.

Безопасное восстановление после разрыва LLM-потока: Фиксировать модели и цены за месяцы?

Нет. Используйте placeholders или snapshots и проверяйте в T-1.

Безопасное восстановление после разрыва LLM-потока: Какие доказательства хранить?

Безопасные IDs, версию, время, статус, usage, финальную сумму и решение ревью.

Источники и дата проверки

Источники проверены 2026-08-07. Они задают контракты и принципы, но не доказывают непроверенные маршруты или будущее состояние.