跳至主要內容

指南

在候選之間選擇

oloproof select 在一個系統的多個版本中,選出滿足每項要求的最佳版本,並單獨說明它是否真的領先於下一個。比如你有三個代理、兩個提示詞或四種檢索設定,以及一組要求時,就可以用它。

為什麼不直接選數字最好的

選擇數字越過門檻的最便宜候選有兩個問題。在 90% 的門檻下測得 91%,只高出一個點,落在一千個案例的雜訊之內。而當你同時檢視多個候選時,靠運氣越過門檻的那個正是你會選中的。所以每個候選必須先獨立確立每條規則,並且因為檢視了多個候選而使用更嚴格的信賴水準:三個候選、95% 的政策時,每個候選以 98.33% (1 - 0.05/3) 判定。只有通過所有規則的候選才會排名,更便宜的候選永遠不能用成本換取一條安全規則。

宣告一次選擇

在專案旁邊寫一個選擇檔,並在專案的 release.yaml 下判定它:

select:
  candidates:
    agent_a: run_01JC8Q2X7D
    agent_b: agent_b.yaml
    agent_c: agent_c.yaml
  objective:
    metric: cost_per_task
    direction: minimize

候選可以是一個已儲存的執行 id,也可以是 oloproof select 會先執行的專案檔。可以重複使用的執行不會產生新成本。政策只能包含執行規則,且必須關閉提前停止。

oloproof select select.yaml
oloproof select select.yaml --save

--save 也會把這次選擇寫入本機 workbench 的 Candidates 下。

解讀答案

有三種結果:

  • 選出了一個候選,且它對第二名的領先已確立:兩者在目標上的配對比較為 PASS。
  • 選出了一個候選,但它的領先未確立:根據這些證據,第二名同樣是站得住的選擇。
  • 沒有候選合格:會列出每個候選的規則及其答案,讓你看到缺了什麼。

選出候選時命令以 0 結束,沒有候選合格時以 3 結束。

一個完整範例

三個代理必須達到至少 90% 的成功率和至多 1% 的違規率;目標是每項任務成本最低。

代理成功率違規率每項任務成本
A94%0.5%$18
B91%0.1%$12
C96%2%$30

每個都以 98.33% 判定。在 1,000 個案例時沒有代理合格:A 的違規率尚未證明低於 1%,B 的 91% 離 90% 太近而無法確立,C 突破了違規上限。答案是「沒有候選合格」,並附上每個候選缺少的內容。在 3,000 個案例時,A 確立了兩條規則並被選中。B 比較便宜,但它的成功率仍未確立,所以從不參與排名:憑數字選 B,等於發布一項沒有人證明過的要求。

分享一個選擇

oloproof select select.yaml --save 為工作台保存選擇。oloproof push --selection ID 透過專案的 egress 政策,將它與每個候選的執行一起傳送到託管工作區;ID 是 .oloproof/bundles/ 下的資料夾名稱,或選擇的摘要。工作區在保存之前,會依據這些執行判定時所用的政策,從它持有的執行重新做一次選擇,只有結果相同時才保存:結果或文字被修改過的選擇、指向專案沒有的執行的選擇,或引擎從這些執行中不會做出的選擇,會被拒絕,且不保存任何內容。因此,推送之前請先按選擇的政策判定候選的執行。專案的 Candidates 頁面會列出它,它的頁面與本機工作台的呈現完全相同。

Owner 或 Admin 可以在選擇的頁面上為它建立證據頁面:結果、水準,以及每個候選的名稱、執行 id 和在校正水準下的規則,標示 "Reported by the developer",從不包含案例內容。

下一步

  • 比較規則 介紹判定領先的配對比較。
  • Gating 介紹每個候選需要遵守的規則。