Panduan
Referensi konfigurasi
Setiap field oloproof.yaml dan release.yaml, beserta tipenya, nilai bawaannya, nilai yang diterimanya, dan contohnya, diambil dari model yang membaca file-file tersebut. Gunakan halaman ini untuk mencari sebuah field; baca halaman mulai cepat dan gerbang untuk mempelajari alur kerjanya.
Kedua file divalidasi sebelum apa pun berjalan. Field yang tidak dikenal, field yang salah eja, atau nilai bertipe salah adalah error konfigurasi dan perintah keluar dengan 2 tanpa mengeksekusi satu kasus pun. Kedua file memiliki JSON Schema, yang dapat dipakai untuk pelengkapan otomatis oleh editor yang membaca JSON Schema. Paket yang terpasang menulisnya, bersama skema hasil, ke schemas/v1/ di bawah direktori saat ini: python -m oloproof_core.models.schema_export (keduanya adalah project_config.schema.json dan release_policy.schema.json).
Dalam tabel di bawah, "wajib" berarti file ditolak tanpa field itu; field lain menunjukkan nilai yang dipakai jika field itu tidak ditulis.
oloproof.yaml sekilas
Proyek kecil yang lengkap. Proyek ini menjalankan fungsi Python secara lokal, tidak memerlukan jaringan maupun kunci, dan merupakan bentuk yang dibuat oleh 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: labelField tingkat atas
| Field | Tipe | Bawaan | Apa itu |
|---|---|---|---|
| version | 1 | 1 | Versi format file. Hanya 1 yang ada. |
| project | string | wajib | Nama proyek, ditampilkan dalam laporan dan dipakai saat push. |
| dataset | path | wajib | File suite, JSONL, relatif terhadap proyek. Baris-barisnya dijelaskan di Suite. |
| system | mapping | wajib | Sistem yang diuji. Lihat di bawah. |
| concurrency | mapping | system: 8, judge: 4 | Berapa banyak panggilan sistem dan panggilan juri yang berjalan bersamaan. |
| evaluators | list | wajib, setidaknya satu | Apa yang diukur pada setiap kasus. Setiap entri memiliki type. |
| metrics | list | kosong | Metrik tambahan di luar metrik yang sudah dibentuk oleh setiap kriteria evaluator. |
| predictive | mapping | tidak ada | Tempat label, skor, dan kebenaran sebuah classifier berada. Lihat Model prediktif. |
| slices | list string | kosong | Irisan eksploratif: metadata.<key>, relevant_position, atau context_truncated. Irisan tidak pernah mencapai gerbang. Lihat Irisan. |
| min_slice_support | integer, setidaknya 1 | 30 | Di bawah jumlah kasus eligible sebanyak ini sebuah irisan menampilkan estimasinya tetapi tanpa interval. |
| replicates | integer, setidaknya 1 | 1 | Ukur setiap kasus sebanyak ini. Kasus tetap menjadi unitnya: replikasi diagregasi di dalamnya sebelum interval apa pun dihitung. |
| pricing | list | kosong | Apa yang Anda bayar per satu juta token, per model. Tanpanya biaya dilaporkan dalam token dan tidak pernah dalam dolar. |
| egress | list string | kosong | Konten mentah mana yang boleh dikirim oloproof push ke ruang kerja yang di-hosting. Lihat Hasil dan eksekusi. |
concurrency
| Field | Tipe | Bawaan |
|---|---|---|
| system | integer, setidaknya 1 | 8 |
| judge | integer, setidaknya 1 | 4 |
Entri pricing
Oloproof tidak menyertakan tabel harga. Setiap entri menyebut model persis seperti model: sebuah evaluator menyebutnya.
| Field | Tipe | Bawaan |
|---|---|---|
| model | string | wajib |
| input_per_mtok | angka, 0 atau lebih | wajib |
| output_per_mtok | angka, 0 atau lebih | wajib |
# 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
Sebuah sistem memerlukan tepat satu dari callable, http, atau rag.
| Field | Tipe | Bawaan | Apa itu |
|---|---|---|---|
| name | string | wajib | Nama sistem. Bagian dari identitas versinya. |
| version | string | tidak ada | Label Anda untuk versi ini. Wajib untuk sistem HTTP. Bagian dari identitasnya, sehingga mengubahnya membatalkan eksekusi yang di-cache. |
| callable | module:attribute | tidak ada | Fungsi Python, sinkron atau asinkron. Fungsi ini menerima input kasus dan mengembalikan keluaran. |
| http | mapping | tidak ada | Endpoint yang dipanggil sekali per kasus. Lihat di bawah. |
| rag | mapping | tidak ada | Kelas RAG bertahap yang dideklarasikan dengan @rag_system. Lihat di bawah. |
| config | mapping | kosong | Pengaturan bebas yang direkam bersama versi sistem. Mengubahnya mengubah versi. |
| code_paths | list pola glob | kosong | File source yang isinya masuk ke versi sistem callable. Tanpanya hanya modul callable itu sendiri yang di-hash. |
| timeout_s | angka di atas 0 | 120 | Batas waktu per panggilan untuk sistem callable. Sistem HTTP memakai http.timeout_s sebagai gantinya. |
| records | list jenis artefak | kosong | Jenis artefak yang direkam sistem callable, seperti retrieval/v1. Ditolak pada sistem HTTP atau RAG. |
system.http
| Field | Tipe | Bawaan | Apa itu |
|---|---|---|---|
| url | string | wajib | Ke mana setiap kasus dikirim. |
| method | GET, POST, atau PUT | POST | Metode HTTP. |
| output_path | path bertitik | tidak ada | Field mana dari respons JSON yang menjadi keluaran, seperti result.answer. Jika tidak ada berarti seluruh body. |
| artifacts | mapping jenis ke path bertitik | kosong | Field respons yang direkam sebagai artefak, seperti retrieval/v1: debug.retrieval. |
| version | string | tidak ada | Dipakai sebagai versi sistem jika system.version tidak ada. Sistem HTTP memerlukan salah satu dari keduanya. |
| timeout_s | angka di atas 0 | 30 | Batas waktu per permintaan. |
# 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: 5Kontrak permintaan dan respons, serta apa yang terjadi saat batas waktu habis dan error HTTP, ada di Hasil dan eksekusi.
system.rag
| Field | Tipe | Bawaan | Apa itu |
|---|---|---|---|
| object | module:attribute | wajib | Kelas yang dideklarasikan dengan @rag_system, atau instansnya. |
| depth | integer, setidaknya 1 | milik kelas | Berapa banyak passage yang dikembalikan retrieval. |
| top_k | integer, setidaknya 1 | milik kelas | Berapa banyak di antaranya yang mencapai generasi. |
| token_budget | integer, setidaknya 1 | milik kelas | Batas token pada konteks. Memerlukan count_tokens(passage) milik kelas. |
| index_version | string | milik kelas | Bagian dari identitas retrieval. Ubah setiap kali indeks dibangun ulang. |
Pengaturan yang diberikan di sini menimpa pengaturan yang dideklarasikan kelas. Sistem bertahap merekam sendiri artefak retrieval/v1, context/v1, dan citations/v1, sehingga records ditolak di sampingnya. Lihat RAG.
evaluators
Setiap entri menerima type dan dua field umum berikut:
| Field | Tipe | Bawaan | Apa itu |
|---|---|---|---|
| criterion | string | wajib kecuali tipe memiliki bawaan | Nama hal yang diukur. Setiap kriteria adalah metrik, dan metric: sebuah aturan menyebutnya. |
| on_execution_error | missing atau fail | missing | Dihitung sebagai apa sebuah kasus yang panggilan sistemnya gagal untuk kriteria ini. missing mempertahankannya di penyebut sebagai tidak teramati; fail menghitungnya sebagai kegagalan. |
fail hanya berlaku untuk evaluator lolos/gagal; evaluator skor dengannya adalah error konfigurasi. on_execution_error adalah field YAML; kelas evaluator SDK tidak menerima argumen seperti itu, dan kasus yang mengalami error dihitung sebagai hilang.
Tipe evaluator
"Membaca" mencantumkan apa yang menjadi dasar putusan evaluator, yang juga menjadi kunci penilaiannya yang di-cache. "SDK" menyebut kelas di oloproof.evaluators.
| type YAML | Membaca | SDK | Memerlukan jaringan atau kunci |
|---|---|---|---|
| exact_match | output, expected | ExactMatch | tidak |
| contains | output, expected | Contains | tidak |
| regex | output | Regex | tidak |
| json_schema | output | JsonSchema | tidak |
| rubric_judge | input, output, expected | RubricJudge | ya, penyedia model |
| model_classifier | output (atau field yang disebut text), opsional premise | hanya YAML | ya, server yang kompatibel dengan TEI |
| probability_judge | kasus dan keluaran | hanya YAML | ya, penyedia yang kompatibel dengan OpenAI yang mengembalikan log probabilitas |
| cascade | seperti kedua tahapnya | hanya YAML | ya |
| hit_rate, recall, mrr, ndcg | artifacts.retrieval, expected | HitRate, Recall, MRR, NDCG | tidak |
| citation_validity | artifacts.citations, artifacts.context | CitationValidity | tidak |
| groundedness_judge | input, output, artifacts.context | Groundedness | ya |
| citation_support_judge | input, output, artifacts.context, artifacts.citations | CitationSupport | ya |
| agent_max_steps | artifacts.agent_trajectory | AgentMaxSteps | tidak |
| agent_tool_called | artifacts.agent_trajectory | AgentToolCalled | tidak |
| agent_no_tool_loop | artifacts.agent_trajectory | AgentNoToolLoop | tidak |
| agent_tool_sequence | artifacts.agent_trajectory, expected | AgentToolSequence | tidak |
| agent_no_undeclared_tool | artifacts.agent_trajectory, expected | AgentNoUndeclaredTool | tidak |
| agent_constraints_satisfied | artifacts.agent_trajectory | AgentConstraintsSatisfied | tidak |
| agent_route | artifacts.agent_trajectory | AgentRoute | tidak |
| agent_tool_permissions | artifacts.agent_trajectory | AgentToolPermissions | tidak |
| agent_max_handoffs | artifacts.agent_trajectory | AgentMaxHandoffs | tidak |
| predictive_correct | field label dari output dan expected | PredictiveCorrect | tidak |
| predictive_recall | seperti di atas | PredictiveRecall | tidak |
| predictive_precision | seperti di atas | PredictivePrecision | tidak |
| predictive_absolute_error | seperti di atas, numerik | AbsoluteError | tidak |
| predictive_brier | field skor dari output, label dari expected | Brier | tidak |
| predictive_log_loss | seperti di atas | LogLoss | tidak |
| predictive_ranking | seperti di atas | PredictiveRanking | tidak |
| tidak ada tipe YAML | artifacts.conversation | ConversationCompleted (hanya SDK) | tidak |
| tidak ada tipe YAML | expected, artifacts.conversation | ConversationJudge (hanya SDK) | ya |
| tidak ada tipe YAML | apa yang Anda deklarasikan | @evaluator dan CustomEvaluator (hanya SDK) | milik Anda |
Juri yang memanggil model yang di-hosting mengirim konten kasus ke penyedia itu dan ditagih olehnya. Kunci dibaca dari variabel lingkungan yang disebut di api_key_env; Oloproof tidak pernah menyimpannya di file-file ini.
Evaluator deterministik
| Tipe | Field | Tipe | Bawaan |
|---|---|---|---|
| exact_match | field | path bertitik dalam keluaran | tidak ada: seluruh keluaran |
| exact_match | expected_field | path bertitik dalam expected | tidak ada: sama dengan field |
| exact_match | strip | boolean | true |
| exact_match | casefold | boolean | false |
| contains | field, expected_field | seperti exact_match | tidak ada |
| regex | pattern | ekspresi reguler | wajib |
| regex | field | path bertitik | tidak ada |
| regex | pass_if | match atau no_match | match |
| json_schema | schema | JSON Schema inline, atau path ke file JSON relatif terhadap proyek | wajib |
| json_schema | field | path bertitik | tidak ada |
Juri model
rubric_judge, groundedness_judge, dan citation_support_judge berbagi field-field ini. Tepat satu dari rubric_file atau rubric_text diwajibkan oleh rubric_judge; kedua juri RAG menerima paling banyak satu dan jika tidak memakai rubrik bawaan. criterion keduanya secara bawaan adalah groundedness dan citation_support.
| Field | Tipe | Bawaan |
|---|---|---|
| provider | anthropic, openai, atau openai_compatible | wajib |
| model | string | wajib |
| rubric_file | path | tidak ada |
| rubric_text | string | tidak ada |
| api_key_env | nama variabel lingkungan | ANTHROPIC_API_KEY atau OPENAI_API_KEY |
| base_url | URL | milik penyedia |
| temperature | angka | 0 |
| max_tokens | integer, setidaknya 1 | 512 |
| timeout_s | angka di atas 0 | 60 |
probability_judge mengajukan pertanyaan bertipe dan membaca probabilitas model:
| Field | Tipe | Bawaan |
|---|---|---|
| provider | openai atau openai_compatible | wajib |
| model | string | wajib |
| question | string | wajib |
| form | yes_no, choice, atau score | wajib |
| min_probability | angka dalam (0, 1] | wajib |
| options | mapping jawaban ke deskripsi | untuk choice |
| pass_options | list jawaban | untuk choice |
| levels | mapping tingkat ke deskripsi, terendah lebih dulu | untuk score |
| pass_at_least | sebuah tingkat | untuk score |
| calibration | slope (di atas 0), intercept, from_version | tidak ada |
| api_key_env, base_url | seperti di atas | tidak ada |
| timeout_s | angka di atas 0 | 60 |
cascade menjalankan juri murah lebih dulu dan meneruskan kasus yang tidak pasti:
| Field | Tipe | Bawaan |
|---|---|---|
| first | entri probability_judge | wajib |
| then | entri rubric_judge atau probability_judge | wajib |
| escalate_between | dua probabilitas | wajib |
Tahap-tahapnya menilai criterion milik cascade itu sendiri; tahap yang menyebut kriteria lain ditolak.
model_classifier memberi skor pada teks dengan model terlatih di server yang kompatibel dengan TEI:
| Field | Tipe | Bawaan |
|---|---|---|
| model | string | wajib |
| base_url | URL | wajib |
| label | label classifier yang dibaca | wajib |
| min_score atau max_score | angka dalam [0, 1], tepat satu | wajib |
| text | field mana yang diklasifikasikan | output |
| premise | teks kedua, untuk classifier pasangan | tidak ada |
| api_key_env | nama variabel lingkungan | tidak ada |
| timeout_s | angka di atas 0 | 30 |
Evaluator RAG
| Tipe | Field | Tipe | Bawaan |
|---|---|---|---|
| hit_rate, recall, mrr, ndcg | k | integer, setidaknya 1 | 5 untuk hit_rate dan recall, 10 untuk mrr dan ndcg |
| hit_rate, recall, mrr, ndcg | relevance_unit | doc atau chunk | doc |
| hit_rate, recall, mrr, ndcg | criterion | string | <type>_at_<k>, seperti hit_rate_at_5 |
| citation_validity | require_citations | boolean | false |
| citation_validity | criterion | string | citations_valid |
Evaluator agen
| Tipe | Field | Tipe | Bawaan |
|---|---|---|---|
| agent_max_steps | max_steps | integer, setidaknya 1 | wajib |
| agent_tool_called | tool_name | string | wajib |
| agent_tool_called | min_calls | integer, setidaknya 1 | 1 |
| agent_no_tool_loop | max_repeats | integer, setidaknya 1 | 2 |
| agent_tool_sequence | ordered | boolean | true |
| agent_constraints_satisfied | constraints | list nama batasan | kosong |
| agent_tool_permissions | permissions | mapping agen ke alat yang diizinkan | wajib |
| agent_max_handoffs | max_handoffs | integer, 0 atau lebih | wajib |
Setiap tipe agen memiliki criterion bawaan, sehingga boleh tidak ditulis: nama tipenya sendiri, atau nama yang dibentuk dari pengaturannya (agent_steps_le_8, agent_tool_lookup_called, agent_handoffs_le_2). Lihat Agen.
Evaluator prediktif
| Tipe | Field | Tipe | Bawaan |
|---|---|---|---|
| predictive_correct, predictive_recall, predictive_precision | positive | nilai JSON apa pun | true, atau milik blok predictive: |
| sama | field | field keluaran | label, atau predictive.label_field |
| sama | expected_field | field yang diharapkan | label, atau predictive.expected_field |
| predictive_absolute_error | target_range | dua angka | wajib |
| predictive_absolute_error | field, expected_field | seperti di atas | label |
| predictive_brier, predictive_log_loss, predictive_ranking | positive | nilai JSON apa pun | true, atau milik blok |
| sama | field | field keluaran | score, atau predictive.score_field |
| sama | expected_field | field yang diharapkan | label, atau milik blok |
| predictive_log_loss | clip | angka dalam (0, 0.5) | wajib |
Evaluator prediktif yang tidak menulis positive, field, atau expected_field mengambilnya dari blok predictive:; nilai yang ditulisnya dipertahankan.
predictive
| Field | Tipe | Bawaan |
|---|---|---|
| label_field | string | label |
| score_field | string | score |
| expected_field | string | label |
| positive | nilai JSON apa pun | true |
| calibration_bins | integer, setidaknya 1 | 10 |
| thresholds | list angka | kosong |
| average | macro atau micro | tidak ada: tanpa agregat |
metrics
Setiap kriteria evaluator sudah merupakan metrik. Entri metrics: menambahkan satu lagi, dibedakan oleh type.
| type | Field | Apa itu |
|---|---|---|
| quantile | id, source, quantile dalam (0, 1) | Kuantil dari latency_ms, input_tokens, output_tokens, cost_usd, agent_steps, atau agent_tool_calls. |
| ranking | id, criterion, statistic: roc_auc atau average_precision | Statistik atas urutan skor sebuah kriteria peringkat. |
| human_score, human_preference | id | Ditolak: belum ada metode yang disetujui yang membaca label ini. |
| cost_per_accepted | id, criterion, cost_ceiling_usd, cost_ceiling_source | Ditolak sampai pengkabelannya disetujui melalui audit. |
# 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.95release.yaml
Kebijakan rilis: aturan mana yang memutuskan, dan keputusan mana yang memblokir. Pengaturan yang tidak ditulis mempertahankan nilai bawaannya, sehingga kebijakan yang hanya menyebut aturannya tetap memblokir pada FAIL, INSUFFICIENT_EVIDENCE, dan MANUAL_REVIEW.
# release.yaml
version: 1
rules:
- id: label_accuracy
metric: correct_label
min: 0.8| Field | Tipe | Bawaan | Apa itu |
|---|---|---|---|
| version | 1 | 1 | Versi format file. |
| confidence_level | probabilitas | 0.95 | Tingkat setiap interval yang dibaca aturan. |
| block_on | list status keputusan | FAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEW | Status yang membuat gerbang memblokir, dan menetapkan kode keluar. |
| warn_on | list status keputusan | kosong | Status yang memperingatkan tanpa memblokir. Tidak boleh tumpang tindih dengan block_on. |
| block_on_partial_run | boolean | true | Apakah eksekusi yang tidak selesai memblokir, dengan keluar 5. |
| require_validated_evaluators | boolean | true | Apakah aturan atas juri model menahan keputusannya sampai juri divalidasi terhadap label manusia. Evaluator deterministik dikecualikan. |
| minimum_evaluator_agreement | angka dalam [0, 1] | tidak ada | Kesepakatan dengan label manusia yang harus dicapai juri, menurut batas bawahnya, sebelum boleh divalidasi. |
| maximum_evaluator_bias | angka dalam (0, 1] | tidak ada | Seberapa jauh tingkat kelulusan juri boleh berbeda dari tingkat kelulusan manusia sebelum boleh divalidasi. |
| allow_approximate_methods | boolean | false | Apakah aturan boleh memutuskan berdasarkan interval yang ditandai aproksimasi oleh mesin (interval biner berklaster). Jika tidak, aturan berstatus MANUAL_REVIEW. |
| min_clusters | integer, setidaknya 10 | 20 | Dengan klaster lebih sedikit dari ini, aturan berklaster berstatus INSUFFICIENT_EVIDENCE. |
| difference_method | bounded_paired_difference@1 atau conditional_exact_paired_difference@1 | tidak ada: yang pertama | Metode yang disetujui mana yang membatasi selisih tingkat biner berpasangan. |
| early_stopping | boolean | false | Jalankan kasus dalam batch dan berhenti begitu setiap aturan terputuskan. Lihat Gerbang. |
| early_stopping_seed | integer, 0 atau lebih | tidak ada | Seed urutan kasus. |
| early_stopping_batch_size | integer, setidaknya 1 | 25 | Kasus per batch. |
| rules | list | wajib, setidaknya satu | Aturan-aturannya. Lihat di bawah. |
| families | list | kosong | Aturan yang FAIL palsunya dikendalikan bersama. |
| review_rule | mapping | tidak ada | Ditolak: pengkabelannya belum disetujui. |
rules
Satu list memuat kedua jenis. Aturan eksekusi menerima tepat satu dari min, max, atau max_failures. Aturan perbandingan menyebut kind-nya dan memutuskan selisih antara dua eksekusi; lihat Aturan perbandingan.
| Field | Tipe | Bawaan | Berlaku untuk |
|---|---|---|---|
| id | string | wajib | semua |
| metric | id metrik atau kriteria | wajib | semua |
| kind | interval_threshold, observed_count, superiority, non_inferiority, equivalence | disimpulkan untuk aturan eksekusi | semua |
| min | angka | tidak ada | aturan eksekusi: PASS ketika batas bawah interval setidaknya sebesar ini |
| max | angka | tidak ada | aturan eksekusi: PASS ketika batas atas interval paling banyak sebesar ini |
| max_failures | integer, 0 atau lebih | tidak ada | observed_count: hitungan atas suite yang dieksekusi, tanpa interval |
| margin | angka di atas 0, dalam satuan metrik | tidak ada | non_inferiority dan equivalence; ditolak pada superiority |
| direction | min atau max | min | hanya non_inferiority: apakah lebih tinggi atau lebih rendah yang lebih baik |
| max_missing_fraction | angka dalam [0, 1] | tidak ada | aturan interval dan perbandingan |
| requires_manual_review | boolean | false | semua: aturan selalu berstatus MANUAL_REVIEW |
| scope | global atau sebuah irisan | global | aturan interval dan perbandingan |
| min_support | integer, setidaknya 1 | tidak ada | aturan perbandingan pada sebuah irisan |
families
| Field | Tipe | Bawaan |
|---|---|---|
| id | string | wajib |
| correction | holm | holm |
| rules | list id aturan | wajib, setidaknya satu |
# 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.02Jenis artefak
Artefak adalah rekaman bertipe yang ditulis sistem di samping keluarannya, seperti apa yang di-retrieve-nya. Jenis adalah nama huruf kecil dengan versi opsional, yang cocok dengan ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. Evaluator yang membutuhkan artefak menyebutnya, dan eksekusi yang sistemnya tidak mendeklarasikan jenis yang diwajibkan ditolak sebelum dimulai, alih-alih menghitung setiap kasus sebagai hilang.
| Jenis | Ditulis oleh | Diwajibkan oleh |
|---|---|---|
| retrieval/v1 | current_case().retrieval(...), @rag_system, atau http.artifacts | hit_rate, recall, mrr, ndcg |
| context/v1 | current_case().context(...) atau @rag_system | citation_validity, groundedness_judge, citation_support_judge |
| citations/v1 | current_case().citations(...) atau @rag_system | citation_validity, citation_support_judge |
| agent_trajectory/v1 | current_case().agent_trajectory(...) | setiap evaluator agent_*, serta sumber agent_steps dan agent_tool_calls |
| conversation/v1 | current_case().artifact(CONVERSATION, ...) | ConversationCompleted, ConversationJudge |
| stage_timings/v1 | @rag_system | tidak ada; ditampilkan di samping latensi |
Sistem callable mendeklarasikan jenis yang direkamnya di records: (atau @system(records=...)); sistem HTTP di http.artifacts; sistem RAG bertahap merekam sendiri.
Versi, kunci cache, dan pembatalan
Oloproof memakai ulang pekerjaan yang inputnya tidak berubah, dan menentukan arti "tidak berubah" dari digest konten. Masing-masing dihitung oleh mesin dan direkam bersama eksekusi.
| Rekaman | Dipakai ulang ketika semua ini identik |
|---|---|
| Versi sistem | name, version, config, dan digest kode: source modul callable (atau setiap file yang cocok dengan code_paths), url, method, output_path, dan artifacts sistem HTTP |
| Eksekusi | versi sistem, input kasus, dan indeks replikasi. Hanya eksekusi yang berhasil yang dipakai ulang. |
| Penilaian | versi evaluator (tipenya dan setiap pengaturannya) dan digest setiap field yang dibacanya, seperti tercantum di tabel evaluator |
| Analisis | rencana analisis, metrik, tingkat kepercayaan, digest suite, dan setiap input yang dihitungnya |
| Gerbang | setiap analisis, digest kebijakan, apakah eksekusi selesai, dan status efektif setiap evaluator yang dirujuk keputusan |
Apa yang tidak dapat dilihat Oloproof menjadi tanggung jawab Anda untuk dideklarasikan:
- Perilaku sistem HTTP berada di server. Ubah system.version setiap kali apa yang ada di balik URL berubah, atau keluaran lama yang di-cache akan mewakili sistem yang baru.
- Modul pembantu sebuah callable hanya di-hash ketika code_paths mencocokkannya. Tanpanya, mengedit modul pembantu tidak mengubah versi.
- Method atau objek callable harus mendeklarasikan versi, dan versi itu harus berubah ketika state objek berubah.
- Indeks RAG diidentifikasi oleh index_version; ubah ketika indeks dibangun ulang.
- Identitas juri model adalah pengaturannya, bukan bobot milik penyedia. Penyedia yang memperbarui model di balik nama yang sama tidak terdeteksi oleh cache.
- @evaluator kustom meng-hash file modul yang mendefinisikannya, dan penilaiannya dipakai ulang antar-eksekusi hanya ketika ia mendeklarasikan cacheable=True. Juri rubrik bawaan dapat di-cache; evaluator deterministik dihitung ulang, dan itu murah.
Pekerjaan yang di-cache berada di store lokal proyek, .oloproof/store.sqlite di samping oloproof.yaml (atau di bawah OLOPROOF_HOME). Menghapus store membuang setiap cache dan setiap eksekusi. Di ruang kerja yang di-hosting, mesin tidak memakai ulang eksekusi, penilaian, atau analisis yang di-cache, karena push dapat menulisnya; mesin menghitung ulang.