分階段引入
Laya 返回一個型別化的決策,而不是執行它的許可。分階段引入決策引擎,讓應用在證據積累的同時始終 掌控真正的動作。
本指南講的是 Laya 周圍應用側的推廣。Laya 提供決策、機率、置信度和鉤子事件;應用擁有現有動作、 推廣策略、複核邊界和回滾。
1. 影子:只觀察,不產生副作用
在代表性的真實流量上跑 Laya,但讓現有動作保持權威。一條影子記錄應包含足夠的上下文,以便日後 復現一次對比:
- 請求類別和 Laya 的問題 schema;
- Laya 的答案、各選項的機率、置信度、checkpoint 和
run_id; - 現有動作,以及最終經複核的或真值的結果;
- 延遲、錯誤,以及任何回退或複核決定。
用現有的預測鉤子來採集 Laya 側的證據。下面這些日誌函式是應用自己的佔位實現;它們不是 Laya API:
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(...) 周圍的異常。預測鉤子
覆蓋預測生命週期,但那之前就發生的失敗需要應用層來捕獲;不要假定 on_predict_end 看到了它們。
影子記錄器絕不能把記錄變成一個新的面向使用者的動作。
事件順序和 run_id 關聯見預測鉤子、鉤子生命週期和
鏈路追蹤。
2. 對比:不一致是訊號,不是判決
在同一個請求和同一問題含義上把 Laya 和現有系統做對比。不一致本身不自動等於錯誤:現有系統可能
錯了,案例可能含義不清,動作也可能需要人的判斷。能用的話就用複核過的標籤或真值結果,並保留一個
明確的 unknown 或複核桶,而不是把每一處不一致都強行壓成二元的對錯。
按 checkpoint、語言或路由、問題 schema、動作型別和風險等級來復核對比結果。把覆蓋率和一致率與 準確率一起記錄。在一個簡單子集上的高一致率,並不能為另一種語言、動作或問題形狀的推廣背書。
3. 從留出證據裡選一條策略
置信度閾值是一條應用策略,不是 Laya 提供的屬性。在代表性的留出資料上擬合或校準決策分數,然後 根據在你的應用能容忍的覆蓋率下測得的準確率和錯誤代價來選閾值。沒有一個普適的數字能跨 checkpoint、問題型別、語言或動作風險通用。
把 checkpoint 和問題 schema 版本、校準方法、閾值、評估集和負責人隨策略一起記錄。這些輸入一變 就重新評估。置信度給決策排序;它並不證明某個決策正確,高置信度本身也從來不是執行許可。
這六項裡有四項來自評估 harness:一份 laya-evals run --json 報告記錄了作答的 checkpoint 提交
(config.revisions)、資料集的位元組和問題 schema(config.dataset_sha256、
config.questions_sha256)以及它據以計分的門控(config.thresholds)。校準方法和負責人是應用
自己要記錄的。執行身份,以及基線與候選之間的可比性檢查,見評估 harness。
README 的 Automated Confidence Gating、 Calibration 和 Honest limits 各節 給出了現有的校準和置信度背景。不可逆或代價高的動作,即便置信度很高,也要擋在明確的複核邊界之後。
4. 推廣一個有界的切片
推廣應該是一次經過測量、可回滾的改動,而不是一個全域性的開關。在啟用自動化之前,先定義一個資格 邊界,例如:
- checkpoint、語言/路由和問題 schema 都在評估過的集合裡;
- 動作可逆,或者有一條明確的人工複核路徑;
- 請求不缺必需的上下文,也沒有 Laya 錯誤;
- 切片有大小或流量上限,以及一個具名的回滾條件。
先從小處試水。對不合格、含義不清和失敗的案例保留複核或回退。持續對已推廣的決策抽樣,把它們和 現有系統及複核結果對比,並監控不一致率、覆蓋率、回退率、錯誤和延遲。約定的防護欄一旦被突破就 回滾;推廣是一步有界的行動,不是永久宣告模型正確。
應用 / Laya 的邊界
Laya 提供決策證據,並通過現有的 API 和鉤子把它暴露出來。應用擁有現有結果、動作執行、資格規則、 閾值、複核、回退和回滾。鉤子可以記錄或標註證據,但它們不會讓一個高影響動作變得可以安全執行。
因此一次務實的推廣是:
real request
├─ incumbent action (authoritative)
└─ Laya shadow decision ──> log, compare, evaluate
└─ bounded eligible slice
└─ review / fallback / rollback
推廣清單
- 影子日誌無副作用,並按
run_id關聯。 - 對比資料包含現有結果,以及可用時經複核或真值的標籤。
- 閾值在代表性的留出資料上擬合併驗證過。
- 不可逆或代價高的動作有明確的複核邊界。
- 推廣是有界、抽樣且可回滾的,並有具名的回退和回滾路徑。
- 記錄了策略負責人和重新評估的觸發條件。
另見
- 預測鉤子 —— 用於審計、指標和門控的擴充套件縫。
- 評估 harness —— 基線攜帶的執行身份,以及基線與候選之間的可比性檢查。
- 鉤子 API 參考 ——
PredictContext欄位和生命週期事件。 - 鏈路追蹤 ——
run_id與 span 關聯。 - README:Automated Confidence Gating —— 置信度是 策略輸入,不是正確性保證。
- README:Calibration 和 Honest limits。