跳至主要內容

指南

設定參考

oloproof.yaml 和 release.yaml 的每個欄位,附帶其類型、預設值、可接受的取值和範例,均取自讀取這些檔案的模型。用它來查找某個欄位;要學習工作流程,請閱讀快速入門和閘門頁面。

兩個檔案都會在任何東西執行之前被校驗。未知欄位、拼錯的欄位或類型錯誤的值都屬於設定錯誤,命令以 2 結束,不執行任何案例。兩個檔案都有 JSON Schema,能讀取 JSON Schema 的編輯器可以用它們進行補全。已安裝的軟體包會把它們連同結果模式一起寫入當前目錄下的 schemas/v1/:python -m oloproof_core.models.schema_export(這兩個檔案是 project_config.schema.json 和 release_policy.schema.json)。

在下面的表格中,“必需”表示缺少該欄位時檔案會被拒絕;其他欄位顯示的是省略時所使用的值。

oloproof.yaml 概覽

一個小而完整的專案。它在本機執行一個 Python 函式,不需要網路,也不需要密鑰,正是 oloproof init 生成的骨架結構。

# oloproof.yaml
version: 1
project: support-bot
dataset: datasets/support.jsonl
system:
  name: support-bot
  callable: app.bot:answer
evaluators:
  - type: exact_match
    criterion: correct_label
    field: label

頂層欄位

欄位類型預設值它是什麼
version11檔案格式版本。只有 1。
project字串必需專案名稱,顯示在報告中,並在推送時使用。
dataset路徑必需套件檔案,JSONL 格式,相對於專案。它的行在套件中有說明。
system映射必需被測系統。見下文。
concurrency映射system: 8、judge: 4同時執行多少個系統呼叫和評判呼叫。
evaluators清單必需,至少一個在每個案例上量測什麼。每個條目都有一個 type。
metrics清單空在每個評估器判據本身已構成的指標之外的額外指標。
predictive映射無分類器的標籤、分數和真實值在哪裡。見預測模型。
slices字串清單空探索性切片:metadata.<key>、relevant_position 或 context_truncated。它們從不進入閘門。見切片。
min_slice_support整數,至少為 130符合條件的案例少於這個數時,切片顯示其估計值,但沒有區間。
replicates整數,至少為 11每個案例量測這麼多次。案例仍然是單位:在計算任何區間之前,重複會在案例內部聚合。
pricing清單空你按模型為每百萬 token 支付的費用。沒有它時,成本以 token 報告,從不以美元報告。
egress字串清單空oloproof push 可以把哪些原始內容發送到託管工作區。見結果與執行。

concurrency

欄位類型預設值
system整數,至少為 18
judge整數,至少為 14

pricing 條目

Oloproof 不附帶價格表。每個條目指定的模型名稱必須與評估器的 model: 完全一致。

欄位類型預設值
model字串必需
input_per_mtok數字,0 或以上必需
output_per_mtok數字,0 或以上必需
# oloproof.yaml
version: 1
project: support-bot
dataset: datasets/support.jsonl
system:
  name: support-bot
  callable: app.bot:answer
evaluators:
  - type: exact_match
    criterion: correct_label
    field: label
pricing:
  - model: my-judge-model
    input_per_mtok: 0.15
    output_per_mtok: 0.6
egress: [raw_outputs]

system

系統需要且只需要 callable、http 或 rag 中的一個。

欄位類型預設值它是什麼
name字串必需系統的名稱。是其版本身份的一部分。
version字串無你為這個版本取的標籤。HTTP 系統必需。它是身份的一部分,所以修改它會使快取的執行失效。
callablemodule:attribute無一個 Python 函式,同步或非同步均可。它接收案例的 input 並返回輸出。
http映射無對每個案例呼叫一次的端點。見下文。
rag映射無用 @rag_system 宣告的分階段 RAG 類。見下文。
config映射空與系統版本一同記錄的自由格式設置。修改它們會改變版本。
code_pathsglob 模式清單空其內容計入可呼叫物件系統版本的源檔案。沒有它時,只對可呼叫物件自身的模組計算雜湊。
timeout_s大於 0 的數字120可呼叫物件系統每次呼叫的時限。HTTP 系統改用 http.timeout_s。
records產物類型清單空可呼叫物件系統記錄的產物類型,例如 retrieval/v1。在 HTTP 或 RAG 系統上會被拒絕。

system.http

欄位類型預設值它是什麼
url字串必需每個案例發送到哪裡。
methodGET、POST 或 PUTPOSTHTTP 方法。
output_path點分路徑無JSON 響應中的哪個欄位是輸出,例如 result.answer。沒有時表示整個響應體。
artifacts類型到點分路徑的映射空作為產物記錄的響應欄位,例如 retrieval/v1: debug.retrieval。
version字串無當沒有 system.version 時用作系統的版本。HTTP 系統需要兩者之一。
timeout_s大於 0 的數字30每個請求的時限。
# oloproof.yaml
version: 1
project: support-api
dataset: datasets/support.jsonl
system:
  name: support-api
  version: "2026-10-08"
  http:
    url: http://localhost:8000/answer
    output_path: answer
    artifacts:
      retrieval/v1: debug.retrieval
evaluators:
  - type: hit_rate
    k: 5

請求和響應的契約,以及超時和 HTTP 錯誤時會發生什麼,見結果與執行。

system.rag

欄位類型預設值它是什麼
objectmodule:attribute必需用 @rag_system 宣告的類,或它的一個實例。
depth整數,至少為 1類中的值檢索返回多少個段落。
top_k整數,至少為 1類中的值其中有多少個進入生成。
token_budget整數,至少為 1類中的值上下文的 token 上限。需要類的 count_tokens(passage)。
index_version字串類中的值檢索身份的一部分。每當重建索引時修改它。

這裡給出的設置會覆蓋類所宣告的設置。分階段系統自己記錄 retrieval/v1、context/v1 和 citations/v1 產物,所以與它同時出現的 records 會被拒絕。見 RAG。

evaluators

每個條目都接受一個 type 以及以下兩個通用欄位:

欄位類型預設值它是什麼
criterion字串必需,除非該類型有預設值被量測物件的名稱。每個判據都是一個指標,規則的 metric: 指的就是它。
on_execution_errormissing 或 failmissing系統呼叫失敗的案例在這個判據上計為什麼。missing 把它作為未觀測保留在分母中;fail 把它計為失敗。

fail 只適用於通過/失敗型評估器;在分數評估器上使用它屬於設定錯誤。on_execution_error 是 YAML 欄位;SDK 評估器類不接受這樣的參數,出錯的案例計為缺失。

評估器類型

“讀取”列出評估器的結論所依賴的內容,這也是其快取的評判結果所用的鍵。“SDK”指明 oloproof.evaluators 中的類。

YAML type讀取SDK是否需要網路或密鑰
exact_matchoutput、expectedExactMatch否
containsoutput、expectedContains否
regexoutputRegex否
json_schemaoutputJsonSchema否
rubric_judgeinput、output、expectedRubricJudge是,一個模型提供者
model_classifieroutput(或 text 指定的欄位),可選 premise僅限 YAML是,一個兼容 TEI 的伺服器
probability_judge案例和輸出僅限 YAML是,一個返回對數機率的、兼容 OpenAI 的提供者
cascade與它的兩個階段相同僅限 YAML是
hit_rate、recall、mrr、ndcgartifacts.retrieval、expectedHitRate、Recall、MRR、NDCG否
citation_validityartifacts.citations、artifacts.contextCitationValidity否
groundedness_judgeinput、output、artifacts.contextGroundedness是
citation_support_judgeinput、output、artifacts.context、artifacts.citationsCitationSupport是
agent_max_stepsartifacts.agent_trajectoryAgentMaxSteps否
agent_tool_calledartifacts.agent_trajectoryAgentToolCalled否
agent_no_tool_loopartifacts.agent_trajectoryAgentNoToolLoop否
agent_tool_sequenceartifacts.agent_trajectory、expectedAgentToolSequence否
agent_no_undeclared_toolartifacts.agent_trajectory、expectedAgentNoUndeclaredTool否
agent_constraints_satisfiedartifacts.agent_trajectoryAgentConstraintsSatisfied否
agent_routeartifacts.agent_trajectoryAgentRoute否
agent_tool_permissionsartifacts.agent_trajectoryAgentToolPermissions否
agent_max_handoffsartifacts.agent_trajectoryAgentMaxHandoffs否
predictive_correctoutput 和 expected 的標籤欄位PredictiveCorrect否
predictive_recall同上PredictiveRecall否
predictive_precision同上PredictivePrecision否
predictive_absolute_error同上,數值型AbsoluteError否
predictive_brieroutput 的分數欄位,expected 的標籤Brier否
predictive_log_loss同上LogLoss否
predictive_ranking同上PredictiveRanking否
沒有 YAML 類型artifacts.conversationConversationCompleted(僅限 SDK)否
沒有 YAML 類型expected、artifacts.conversationConversationJudge(僅限 SDK)是
沒有 YAML 類型你所宣告的內容@evaluator 和 CustomEvaluator(僅限 SDK)由你決定

呼叫託管模型的評審會把案例內容發送給該提供者,並由其計費。密鑰從 api_key_env 中指定的環境變數讀取;Oloproof 從不把它們儲存在這些檔案中。

確定性評估器

類型欄位類型預設值
exact_matchfield輸出中的點分路徑無:整個輸出
exact_matchexpected_fieldexpected 中的點分路徑無:與 field 相同
exact_matchstrip布爾值true
exact_matchcasefold布爾值false
containsfield、expected_field與 exact_match 相同無
regexpattern正則表達式必需
regexfield點分路徑無
regexpass_ifmatch 或 no_matchmatch
json_schemaschema內聯的 JSON Schema,或相對於專案的 JSON 檔案路徑必需
json_schemafield點分路徑無

模型評審

rubric_judge、groundedness_judge 和 citation_support_judge 共享這些欄位。rubric_judge 需要且只需要 rubric_file 或 rubric_text 中的一個;兩個 RAG 評審最多接受一個,否則使用內置的評分準則。它們的 criterion 預設分別為 groundedness 和 citation_support。

欄位類型預設值
provideranthropic、openai 或 openai_compatible必需
model字串必需
rubric_file路徑無
rubric_text字串無
api_key_env環境變數名ANTHROPIC_API_KEY 或 OPENAI_API_KEY
base_urlURL提供者的預設地址
temperature數字0
max_tokens整數,至少為 1512
timeout_s大於 0 的數字60

probability_judge 提出一個有類型的問題,並讀取模型的機率:

欄位類型預設值
provideropenai 或 openai_compatible必需
model字串必需
question字串必需
formyes_no、choice 或 score必需
min_probability(0, 1] 中的數字必需
options回答到描述的映射用於 choice
pass_options回答清單用於 choice
levels等級到描述的映射,最低的在前用於 score
pass_at_least一個等級用於 score
calibrationslope(大於 0)、intercept、from_version無
api_key_env、base_url同上無
timeout_s大於 0 的數字60

cascade 先執行一個低成本的評審,並把不確定的案例升級處理:

欄位類型預設值
first一個 probability_judge 條目必需
then一個 rubric_judge 或 probability_judge 條目必需
escalate_between兩個機率必需

各階段評判的是級聯自己的 criterion;指定了不同判據的階段會被拒絕。

model_classifier 用兼容 TEI 的伺服器上的訓練好的模型為文字打分:

欄位類型預設值
model字串必需
base_urlURL必需
label要讀取的分類器標籤必需
min_score 或 max_score[0, 1] 中的數字,恰好一個必需
text對哪個欄位進行分類output
premise第二段文字,用於句對分類器無
api_key_env環境變數名無
timeout_s大於 0 的數字30

RAG 評估器

類型欄位類型預設值
hit_rate、recall、mrr、ndcgk整數,至少為 1hit_rate 和 recall 為 5,mrr 和 ndcg 為 10
hit_rate、recall、mrr、ndcgrelevance_unitdoc 或 chunkdoc
hit_rate、recall、mrr、ndcgcriterion字串<type>_at_<k>,例如 hit_rate_at_5
citation_validityrequire_citations布爾值false
citation_validitycriterion字串citations_valid

代理評估器

類型欄位類型預設值
agent_max_stepsmax_steps整數,至少為 1必需
agent_tool_calledtool_name字串必需
agent_tool_calledmin_calls整數,至少為 11
agent_no_tool_loopmax_repeats整數,至少為 12
agent_tool_sequenceordered布爾值true
agent_constraints_satisfiedconstraints約束名稱清單空
agent_tool_permissionspermissions代理到允許工具的映射必需
agent_max_handoffsmax_handoffs整數,0 或以上必需

每種代理類型都有預設的 criterion,所以可以省略:它自己的類型名稱,或由其設置建置的名稱(agent_steps_le_8、agent_tool_lookup_called、agent_handoffs_le_2)。見代理。

預測評估器

類型欄位類型預設值
predictive_correct、predictive_recall、predictive_precisionpositive任意 JSON 值true,或 predictive: 塊中的值
同上field輸出欄位label,或 predictive.label_field
同上expected_field預期欄位label,或 predictive.expected_field
predictive_absolute_errortarget_range兩個數字必需
predictive_absolute_errorfield、expected_field同上label
predictive_brier、predictive_log_loss、predictive_rankingpositive任意 JSON 值true,或塊中的值
同上field輸出欄位score,或 predictive.score_field
同上expected_field預期欄位label,或塊中的值
predictive_log_lossclip(0, 0.5) 中的數字必需

預測評估器如果沒有寫出 positive、field 或 expected_field,就從 predictive: 塊中取值;它自己寫出的值會被保留。

predictive

欄位類型預設值
label_field字串label
score_field字串score
expected_field字串label
positive任意 JSON 值true
calibration_bins整數,至少為 110
thresholds數字清單空
averagemacro 或 micro無:不聚合

metrics

每個評估器判據本身已經是一個指標。一個 metrics: 條目再增加一個,以 type 區分。

type欄位它是什麼
quantileid、source、(0, 1) 中的 quantilelatency_ms、input_tokens、output_tokens、cost_usd、agent_steps 或 agent_tool_calls 的一個分位數。
rankingid、criterion、statistic:roc_auc 或 average_precision基於某個排序判據分數順序的統計量。
human_score、human_preferenceid被拒絕:目前還沒有已認可的方法讀取這些標籤。
cost_per_acceptedid、criterion、cost_ceiling_usd、cost_ceiling_source在其接線通過審計認可之前被拒絕。
# oloproof.yaml
version: 1
project: support-bot
dataset: datasets/support.jsonl
system:
  name: support-bot
  callable: app.bot:answer
evaluators:
  - type: exact_match
    criterion: correct_label
    field: label
metrics:
  - id: latency_p95
    type: quantile
    source: latency_ms
    quantile: 0.95

release.yaml

發布政策:哪些規則作出決策,哪些決策會阻止發布。省略的設置保持預設值,所以只指定了規則的政策仍會在 FAIL、INSUFFICIENT_EVIDENCE 和 MANUAL_REVIEW 時阻止。

# release.yaml
version: 1
rules:
  - id: label_accuracy
    metric: correct_label
    min: 0.8
欄位類型預設值它是什麼
version11檔案格式版本。
confidence_level機率0.95規則讀取的每個區間的信賴水準。
block_on決策狀態清單FAIL、INSUFFICIENT_EVIDENCE、MANUAL_REVIEW讓閘門阻止並設定結束代碼的狀態。
warn_on決策狀態清單空只警告而不阻止的狀態。不能與 block_on 重疊。
block_on_partial_run布爾值true沒有完成的執行是否以結束代碼 5 阻止。
require_validated_evaluators布爾值true基於模型評審的規則是否在評審對照人工標籤驗證之前暫緩決策。確定性評估器不受此限。
minimum_evaluator_agreement[0, 1] 中的數字無評審在獲准驗證之前,與人工標籤的一致性按其下界必須達到的水平。
maximum_evaluator_bias(0, 1] 中的數字無評審在獲准驗證之前,其通過率與人工通過率之間允許的最大差距。
allow_approximate_methods布爾值false規則是否可以依據引擎標記為近似的區間(叢集二值區間)作出決策。否則它顯示 MANUAL_REVIEW。
min_clusters整數,至少為 1020叢集少於這個數時,叢集規則顯示 INSUFFICIENT_EVIDENCE。
difference_methodbounded_paired_difference@1 或 conditional_exact_paired_difference@1無:使用第一個由哪種已認可的方法為配對二值比率差異設界。
early_stopping布爾值false分批執行案例,一旦每條規則都已決策就停止。見閘門。
early_stopping_seed整數,0 或以上無案例順序的種子。
early_stopping_batch_size整數,至少為 125每批的案例數。
rules清單必需,至少一條規則。見下文。
families清單空其錯誤 FAIL 被共同控制的規則。
review_rule映射無被拒絕:其接線尚未獲得認可。

rules

一個清單同時容納兩種規則。執行規則需要且只需要 min、max 或 max_failures 中的一個。比較規則指明它的 kind,並對兩次執行之間的差異作出決策;見比較規則。

欄位類型預設值適用於
id字串必需全部
metric指標 id 或判據必需全部
kindinterval_threshold、observed_count、superiority、non_inferiority、equivalence執行規則可推斷全部
min數字無執行規則:當區間下界至少為該值時 PASS
max數字無執行規則:當區間上界至多為該值時 PASS
max_failures整數,0 或以上無observed_count:基於已執行套件的計數,沒有區間
margin大於 0 的數字,以指標的單位計無non_inferiority 和 equivalence;在 superiority 上被拒絕
directionmin 或 maxmin僅 non_inferiority:越高越好還是越低越好
max_missing_fraction[0, 1] 中的數字無區間規則和比較規則
requires_manual_review布爾值false全部:該規則總是顯示 MANUAL_REVIEW
scopeglobal 或一個切片global區間規則和比較規則
min_support整數,至少為 1無針對切片的比較規則

families

欄位類型預設值
id字串必需
correctionholmholm
rules規則 id 清單必需,至少一個
# release.yaml
version: 1
warn_on: [INSUFFICIENT_EVIDENCE]
block_on: [FAIL, MANUAL_REVIEW]
rules:
  - id: label_accuracy
    metric: correct_label
    min: 0.8
    max_missing_fraction: 0.05
  - id: no_regression
    metric: correct_label
    kind: non_inferiority
    margin: 0.02

產物類型

產物是系統在其輸出旁邊寫下的有類型記錄,例如它檢索到了什麼。類型是一個小寫名稱,可選帶有版本,匹配 ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$。需要某個產物的評估器會指明它,而如果系統沒有宣告某個必需的類型,執行會在開始之前被拒絕,而不是把每個案例都計為缺失。

類型由誰寫入由誰需要
retrieval/v1current_case().retrieval(...)、一個 @rag_system 或 http.artifactshit_rate、recall、mrr、ndcg
context/v1current_case().context(...) 或一個 @rag_systemcitation_validity、groundedness_judge、citation_support_judge
citations/v1current_case().citations(...) 或一個 @rag_systemcitation_validity、citation_support_judge
agent_trajectory/v1current_case().agent_trajectory(...)每個 agent_* 評估器,以及 agent_steps 和 agent_tool_calls 來源
conversation/v1current_case().artifact(CONVERSATION, ...)ConversationCompleted、ConversationJudge
stage_timings/v1一個 @rag_system無;顯示在延遲旁邊

可呼叫物件系統在 records:(或 @system(records=...))中宣告它記錄的類型;HTTP 系統在 http.artifacts 中宣告;分階段 RAG 系統自己記錄。

版本、快取鍵與失效

Oloproof 複用輸入沒有變化的工作,並根據內容摘要來判定什麼是“沒有變化”。每個摘要都由引擎計算,並隨執行一起記錄。

記錄當以下內容完全相同時被複用
系統版本name、version、config,以及一個代碼摘要:可呼叫物件的模組原始碼(或 code_paths 匹配到的每個檔案),HTTP 系統的 url、method、output_path 和 artifacts
執行系統版本、案例的 input 和重複序號。只有成功的執行會被複用。
評判結果評估器版本(它的類型和每一項設置),以及它讀取的每個欄位的摘要,如評估器表中所列
分析分析計劃、指標、信賴水準、套件摘要以及它計入的每個輸入
閘門每個分析、政策摘要、執行是否完成,以及決策所引用的每個評估器的有效狀態

Oloproof 看不到的東西需要由你來宣告:

  • HTTP 系統的行為在伺服器上。每當 URL 背後的東西發生變化時,修改 system.version,否則舊的快取輸出會代表新的系統。
  • 可呼叫物件的輔助模組只有在被 code_paths 匹配時才會計算雜湊。沒有它時,編輯輔助模組不會改變版本。
  • 方法或可呼叫物件必須宣告版本,並且當物件的狀態改變時,版本也必須改變。
  • RAG 索引由 index_version 標識;重建索引時修改它。
  • 模型評審的身份是它的設置,而不是提供者的權重。提供者在同一名稱背後更新模型,快取是察覺不到的。
  • 自定義 @evaluator 對定義它的模組檔案計算雜湊,並且只有在它宣告 cacheable=True 時,它的評判結果才會在多次執行之間被複用。內置的評分準則評審是可快取的;確定性評估器會被重新計算,這成本很低。

快取的工作保存在專案的本機儲存中,即 oloproof.yaml 旁邊的 .oloproof/store.sqlite(或 OLOPROOF_HOME 之下)。刪除儲存會丟棄所有快取和所有執行。在託管工作區中,引擎不復用快取的執行、評判結果或分析,因為推送可以寫入它們;它會重新計算。