本文へスキップ

ガイド

設定リファレンス

oloproof.yaml と release.yaml のすべてのフィールドを、その型、デフォルト、受け付ける値、例とともに示します。内容はファイルを読み込むモデルから取っています。フィールドを調べるときに使ってください。ワークフローを学ぶにはクイックスタートとゲーティングのページを読んでください。

どちらのファイルも、何かが実行される前に検証されます。未知のフィールド、綴りの誤ったフィールド、型の誤った値は設定エラーであり、コマンドはケースを 1 つも実行せずに 2 で終了します。どちらのファイルにも JSON Schema があり、JSON Schema を読むエディターは補完に使えます。インストールされたパッケージは、結果のスキーマとともに、現在のディレクトリの schemas/v1/ にそれらを書き出します。python -m oloproof_core.models.schema_export(2 つのファイルは 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リスト必須、少なくとも 1 つ各ケースで何を測定するか。各エントリは type を持ちます。
metricsリスト空各評価器の基準がすでにそうであるメトリクス以外の、追加のメトリクス。
predictiveマッピングなし分類器のラベル、スコア、正解がどこにあるか。予測モデルを参照してください。
slices文字列のリスト空探索的スライス。metadata.<key>、relevant_position、context_truncated。ゲートには届きません。スライスを参照してください。
min_slice_support整数、1 以上30対象ケースがこの数を下回るスライスは、推定値を示しますが区間を示しません。
replicates整数、1 以上1すべてのケースをこの回数だけ測定します。単位はケースのままで、反復は区間を計算する前にケース内で集約されます。
pricingリスト空モデルごとの 100 万トークンあたりの支払額。これがなければコストはトークンで報告され、ドルでは報告されません。
egress文字列のリスト空oloproof push がホスト型ワークスペースに送ってよい生の内容。結果と実行を参照してください。

concurrency

フィールド型デフォルト
system整数、1 以上8
judge整数、1 以上4

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 のうちちょうど 1 つが必要です。

フィールド型デフォルト内容
name文字列必須システムの名前。バージョンの識別の一部です。
version文字列なしこのバージョンに付けるラベル。HTTP システムでは必須です。識別の一部なので、変えるとキャッシュ済みの実行は無効になります。
callablemodule:attributeなし同期または非同期の Python 関数。ケースの input を受け取り、出力を返します。
httpマッピングなしケースごとに 1 回呼び出されるエンドポイント。下記を参照してください。
ragマッピングなし@rag_system で宣言された段階的 RAG クラス。下記を参照してください。
configマッピング空システムのバージョンとともに記録される自由形式の設定。変えるとバージョンが変わります。
code_pathsglob パターンのリスト空内容が呼び出し可能システムのバージョンに含まれるソースファイル。これがなければ、呼び出し可能オブジェクト自身のモジュールだけがハッシュされます。
timeout_s0 より大きい数値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_s0 より大きい数値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 以上クラスの値コンテキストのトークン上限。クラスの count_tokens(passage) が必要です。
index_version文字列クラスの値検索の識別の一部。インデックスを再構築するたびに変えてください。

ここで指定した設定は、クラスが宣言するものを上書きします。段階的システムは自身の retrieval/v1、context/v1、citations/v1 アーティファクトを記録するため、それと並べて records を書くと拒否されます。RAG を参照してください。

evaluators

すべてのエントリは type と、次の 2 つの共通フィールドを取ります。

フィールド型デフォルト内容
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 が指定するフィールド)、任意で premiseYAML のみはい、TEI 互換のサーバー
probability_judgeケースと出力YAML のみはい、対数確率を返す OpenAI 互換のプロバイダー
cascadeその 2 つの段階と同じ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_fieldexact_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 のちょうど一方が必要です。2 つの 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整数、1 以上512
timeout_s0 より大きい数値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_s0 より大きい数値60

cascade は安価なジャッジを先に実行し、不確かなケースをエスカレーションします。

フィールド型デフォルト
firstprobability_judge のエントリ必須
thenrubric_judge または probability_judge のエントリ必須
escalate_between2 つの確率必須

各段階はカスケード自身の criterion を判定します。別の基準を指定した段階は拒否されます。

model_classifier は、TEI 互換のサーバー上の学習済みモデルでテキストを採点します。

フィールド型デフォルト
model文字列必須
base_urlURL必須
label読み取る分類器のラベル必須
min_score または max_score[0, 1] の数値、ちょうど一方必須
text分類するフィールドoutput
premiseペア分類器のための 2 つ目のテキストなし
api_key_env環境変数名なし
timeout_s0 より大きい数値30

RAG の評価器

型フィールド型デフォルト
hit_rate、recall、mrr、ndcgk整数、1 以上hit_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整数、1 以上1
agent_no_tool_loopmax_repeats整数、1 以上2
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_range2 つの数値必須
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整数、1 以上10
thresholds数値のリスト空
averagemacro または microなし: 集約なし

metrics

各評価器の基準はすでにメトリクスです。metrics: のエントリは、type で区別されるメトリクスをもう 1 つ追加します。

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整数、10 以上20クラスター数がこれより少ないと、クラスター化されたルールは INSUFFICIENT_EVIDENCE になります。
difference_methodbounded_paired_difference@1 または conditional_exact_paired_difference@1なし: 前者対応のある二値の率の差を、どの認められた手法で境界づけるか。
early_stopping真偽値falseケースをバッチで実行し、すべてのルールが判断された時点で止めます。ゲーティングを参照してください。
early_stopping_seed整数、0 以上なしケースの順序のシード。
early_stopping_batch_size整数、1 以上25バッチあたりのケース数。
rulesリスト必須、少なくとも 1 つルール。下記を参照してください。
familiesリスト空誤った FAIL をまとめて制御するルール群。
review_ruleマッピングなし拒否されます。その配線はまだ認められていません。

rules

1 つのリストが両方の種類を保持します。実行ルールは min、max、max_failures のちょうど 1 つを取ります。比較ルールはその kind を指定し、2 つの実行の差を判断します。比較ルールを参照してください。

フィールド型デフォルト適用対象
id文字列必須すべて
metricメトリクス id または基準必須すべて
kindinterval_threshold、observed_count、superiority、non_inferiority、equivalence実行ルールでは推論されますすべて
min数値なし実行ルール: 区間の下限がこれ以上のとき PASS
max数値なし実行ルール: 区間の上限がこれ以下のとき PASS
max_failures整数、0 以上なしobserved_count: 実行されたスイート全体での件数、区間なし
margin0 より大きい数値、メトリクスの単位なしnon_inferiority と equivalence。superiority では拒否されます
directionmin または maxminnon_inferiority のみ: 高いほうが良いか低いほうが良いか
max_missing_fraction[0, 1] の数値なし区間ルールと比較ルール
requires_manual_review真偽値falseすべて: ルールは常に MANUAL_REVIEW になります
scopeglobal またはスライスglobal区間ルールと比較ルール
min_support整数、1 以上なしスライス上の比較ルール

families

フィールド型デフォルト
id文字列必須
correctionholmholm
rulesルール id のリスト必須、少なくとも 1 つ
# 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 の下)にあります。ストアを削除すると、すべてのキャッシュとすべての実行が破棄されます。ホスト型ワークスペースでは、プッシュがそれらに書き込めるため、エンジンはキャッシュ済みの実行、判定、分析を再利用せず、再計算します。