Документация

Поэтапное внедрение

Laya возвращает типизированное решение, а не разрешение на его выполнение. Внедряйте движок решений поэтапно, чтобы приложение сохраняло контроль над реальным действием, пока накапливаются доказательства.

Это руководство описывает развёртывание на стороне приложения вокруг Laya. Laya предоставляет решение, вероятности, уверенность и события hook; приложение владеет текущим действием, политикой внедрения, границей проверки и откатом.

1. Тень: наблюдение без побочных эффектов

Запускайте Laya на репрезентативном реальном трафике, но оставляйте текущее действие авторитетным. Запись тени должна содержать достаточно контекста, чтобы позже воспроизвести сравнение:

  • класс запроса и схему вопросов Laya;
  • ответ Laya, вероятности по вариантам, уверенность, чекпойнт и run_id;
  • текущее действие и итоговый проверенный или эталонный результат;
  • задержку, ошибки и любое решение о резервном варианте или проверке.

Используйте существующие hooks предсказаний для доказательств со стороны Laya. Функции логирования ниже — это заполнители, принадлежащие приложению; они не являются API Laya:

from laya import Router

class ShadowLog:
    def on_predict_end(self, ctx):
        result = ctx.results[0] if ctx.results else None
        write_shadow_record({
            "run_id": ctx.run_id,
            "model": ctx.model,
            "decision": ctx.decision,
            "result": result,
            "elapsed_ms": ctx.elapsed_ms,
            "error": None if ctx.error is None else repr(ctx.error),
        })

router = Router(hooks=[ShadowLog()])

def handle(request):
    try:
        laya_result = router.predict(request.state, request.questions)
    except Exception as exc:
        record_laya_failure(request, exc)
        return run_incumbent_action(request)
    # The shadow result is recorded by the hook; do not execute it here.
    return run_incumbent_action(request)

Держите чувствительные поля отредактированными согласно политике приложения. Перехватывайте и логируйте исключения вокруг router.predict(...) на границе приложения. Hook предсказания покрывает жизненный цикл предсказания, но сбои до этого жизненного цикла требуют перехвата на уровне приложения; не предполагайте, что on_predict_end их видел. Логгер тени не должен превращать логирование в новое действие, видимое пользователю.

Смотрите Hooks предсказаний, жизненный цикл hooks и Трассировку для порядка событий и корреляции по run_id.

2. Сравнение: расхождение — это сигнал, а не вердикт

Сравнивайте Laya с текущим действием на одном и том же запросе и с одним смыслом вопроса. Расхождение не обязательно ошибка: текущее действие может быть неверным, случаи могут быть неоднозначными или действие может требовать человеческого суждения. Используйте проверенные метки или эталонные результаты, где они есть, и держите явную корзину unknown или проверки вместо того, чтобы загонять каждое расхождение в бинарную оценку.

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

3. Выбор политики на основе отложенных доказательств

Порог уверенности — это политика приложения, а не свойство, предоставляемое Laya. Настройте или откалибруйте оценки решений на репрезентативных отложенных данных, затем выберите порог из измеренной точности и стоимости ошибки при том покрытии, которое ваше приложение может выдержать. Нет универсального числа, которое переносилось бы между чекпойнтами, типами вопросов, языками или рисками действий.

Записывайте вместе с политикой чекпойнт и версию схемы вопросов, метод калибровки, порог, набор оценки и ответственного. Переоценивайте её, когда эти входы меняются. Уверенность упорядочивает решения; она не устанавливает, что решение верное, и высокая уверенность сама по себе никогда не является разрешением на выполнение.

Четыре из этих шести пунктов даёт harness оценки: отчёт laya-evals run --json записывает коммит чекпойнта, который ответил (config.revisions), байты набора данных и схему вопросов (config.dataset_sha256, config.questions_sha256) и порог gating, под которым он оценивался (config.thresholds). Метод калибровки и ответственный — на совести приложения. Смотрите Harness оценки для идентичности запуска и проверки сопоставимости между базовой линией и кандидатом.

Разделы README Automated Confidence Gating, Calibration и Honest limits дают существующий контекст по калибровке и уверенности. Держите необратимые или дорогостоящие действия за явной границей проверки, даже когда их уверенность высока.

4. Продвижение ограниченного среза

Продвижение должно быть измеряемым, обратимым изменением, а не глобальным переключателем вкл/выкл. Определите границу допустимости перед включением автоматизации, например:

  • чекпойнт, язык/маршрут и схема вопросов входят в оценённый набор;
  • действие обратимо или имеет явный путь человеческой проверки;
  • в запросе не отсутствует обязательный контекст и нет ошибки Laya;
  • у среза есть ограничение по размеру или трафику и названное условие отката.

Начните с маленькой канарейки. Держите проверку или резервный вариант для неподходящих, неоднозначных и неудачных случаев. Продолжайте сэмплировать продвинутые решения, сравнивайте их с текущим действием и проверенными результатами и следите за расхождением, покрытием, долей резервных вариантов, ошибками и задержкой. Откатывайтесь, когда согласованный ограничитель нарушен; продвижение — это ограниченный шаг, а не постоянное заявление о том, что модель верна.

Граница приложение/Laya

Laya предоставляет доказательства решения и выставляет их через существующий API и hooks. Приложение владеет текущим результатом, выполнением действия, правилами допустимости, порогом, проверкой, резервным вариантом и откатом. Hooks могут логировать или аннотировать доказательства, но они не делают высокорисковое действие безопасным для выполнения.

Таким образом, практическое внедрение выглядит так:

real request
    ├─ incumbent action (authoritative)
    └─ Laya shadow decision ──> log, compare, evaluate
                                  └─ bounded eligible slice
                                      └─ review / fallback / rollback

Чек-лист внедрения

  • Логирование тени не имеет побочных эффектов и коррелируется по run_id.
  • Данные сравнения включают текущий результат и проверенные или эталонные метки, где они доступны.
  • Пороги настраиваются и проверяются на репрезентативных отложенных данных.
  • Необратимые или дорогостоящие действия имеют явную границу проверки.
  • Продвижение ограничено, сэмплируется и обратимо, с названным путём резерва и отката.
  • Записаны владелец политики и триггер переоценки.

Смотрите также