Langsung ke konten

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: label

Field tingkat atas

FieldTipeBawaanApa itu
version11Versi format file. Hanya 1 yang ada.
projectstringwajibNama proyek, ditampilkan dalam laporan dan dipakai saat push.
datasetpathwajibFile suite, JSONL, relatif terhadap proyek. Baris-barisnya dijelaskan di Suite.
systemmappingwajibSistem yang diuji. Lihat di bawah.
concurrencymappingsystem: 8, judge: 4Berapa banyak panggilan sistem dan panggilan juri yang berjalan bersamaan.
evaluatorslistwajib, setidaknya satuApa yang diukur pada setiap kasus. Setiap entri memiliki type.
metricslistkosongMetrik tambahan di luar metrik yang sudah dibentuk oleh setiap kriteria evaluator.
predictivemappingtidak adaTempat label, skor, dan kebenaran sebuah classifier berada. Lihat Model prediktif.
sliceslist stringkosongIrisan eksploratif: metadata.<key>, relevant_position, atau context_truncated. Irisan tidak pernah mencapai gerbang. Lihat Irisan.
min_slice_supportinteger, setidaknya 130Di bawah jumlah kasus eligible sebanyak ini sebuah irisan menampilkan estimasinya tetapi tanpa interval.
replicatesinteger, setidaknya 11Ukur setiap kasus sebanyak ini. Kasus tetap menjadi unitnya: replikasi diagregasi di dalamnya sebelum interval apa pun dihitung.
pricinglistkosongApa yang Anda bayar per satu juta token, per model. Tanpanya biaya dilaporkan dalam token dan tidak pernah dalam dolar.
egresslist stringkosongKonten mentah mana yang boleh dikirim oloproof push ke ruang kerja yang di-hosting. Lihat Hasil dan eksekusi.

concurrency

FieldTipeBawaan
systeminteger, setidaknya 18
judgeinteger, setidaknya 14

Entri pricing

Oloproof tidak menyertakan tabel harga. Setiap entri menyebut model persis seperti model: sebuah evaluator menyebutnya.

FieldTipeBawaan
modelstringwajib
input_per_mtokangka, 0 atau lebihwajib
output_per_mtokangka, 0 atau lebihwajib
# 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.

FieldTipeBawaanApa itu
namestringwajibNama sistem. Bagian dari identitas versinya.
versionstringtidak adaLabel Anda untuk versi ini. Wajib untuk sistem HTTP. Bagian dari identitasnya, sehingga mengubahnya membatalkan eksekusi yang di-cache.
callablemodule:attributetidak adaFungsi Python, sinkron atau asinkron. Fungsi ini menerima input kasus dan mengembalikan keluaran.
httpmappingtidak adaEndpoint yang dipanggil sekali per kasus. Lihat di bawah.
ragmappingtidak adaKelas RAG bertahap yang dideklarasikan dengan @rag_system. Lihat di bawah.
configmappingkosongPengaturan bebas yang direkam bersama versi sistem. Mengubahnya mengubah versi.
code_pathslist pola globkosongFile source yang isinya masuk ke versi sistem callable. Tanpanya hanya modul callable itu sendiri yang di-hash.
timeout_sangka di atas 0120Batas waktu per panggilan untuk sistem callable. Sistem HTTP memakai http.timeout_s sebagai gantinya.
recordslist jenis artefakkosongJenis artefak yang direkam sistem callable, seperti retrieval/v1. Ditolak pada sistem HTTP atau RAG.

system.http

FieldTipeBawaanApa itu
urlstringwajibKe mana setiap kasus dikirim.
methodGET, POST, atau PUTPOSTMetode HTTP.
output_pathpath bertitiktidak adaField mana dari respons JSON yang menjadi keluaran, seperti result.answer. Jika tidak ada berarti seluruh body.
artifactsmapping jenis ke path bertitikkosongField respons yang direkam sebagai artefak, seperti retrieval/v1: debug.retrieval.
versionstringtidak adaDipakai sebagai versi sistem jika system.version tidak ada. Sistem HTTP memerlukan salah satu dari keduanya.
timeout_sangka di atas 030Batas 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: 5

Kontrak permintaan dan respons, serta apa yang terjadi saat batas waktu habis dan error HTTP, ada di Hasil dan eksekusi.

system.rag

FieldTipeBawaanApa itu
objectmodule:attributewajibKelas yang dideklarasikan dengan @rag_system, atau instansnya.
depthinteger, setidaknya 1milik kelasBerapa banyak passage yang dikembalikan retrieval.
top_kinteger, setidaknya 1milik kelasBerapa banyak di antaranya yang mencapai generasi.
token_budgetinteger, setidaknya 1milik kelasBatas token pada konteks. Memerlukan count_tokens(passage) milik kelas.
index_versionstringmilik kelasBagian 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:

FieldTipeBawaanApa itu
criterionstringwajib kecuali tipe memiliki bawaanNama hal yang diukur. Setiap kriteria adalah metrik, dan metric: sebuah aturan menyebutnya.
on_execution_errormissing atau failmissingDihitung 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 YAMLMembacaSDKMemerlukan jaringan atau kunci
exact_matchoutput, expectedExactMatchtidak
containsoutput, expectedContainstidak
regexoutputRegextidak
json_schemaoutputJsonSchematidak
rubric_judgeinput, output, expectedRubricJudgeya, penyedia model
model_classifieroutput (atau field yang disebut text), opsional premisehanya YAMLya, server yang kompatibel dengan TEI
probability_judgekasus dan keluaranhanya YAMLya, penyedia yang kompatibel dengan OpenAI yang mengembalikan log probabilitas
cascadeseperti kedua tahapnyahanya YAMLya
hit_rate, recall, mrr, ndcgartifacts.retrieval, expectedHitRate, Recall, MRR, NDCGtidak
citation_validityartifacts.citations, artifacts.contextCitationValiditytidak
groundedness_judgeinput, output, artifacts.contextGroundednessya
citation_support_judgeinput, output, artifacts.context, artifacts.citationsCitationSupportya
agent_max_stepsartifacts.agent_trajectoryAgentMaxStepstidak
agent_tool_calledartifacts.agent_trajectoryAgentToolCalledtidak
agent_no_tool_loopartifacts.agent_trajectoryAgentNoToolLooptidak
agent_tool_sequenceartifacts.agent_trajectory, expectedAgentToolSequencetidak
agent_no_undeclared_toolartifacts.agent_trajectory, expectedAgentNoUndeclaredTooltidak
agent_constraints_satisfiedartifacts.agent_trajectoryAgentConstraintsSatisfiedtidak
agent_routeartifacts.agent_trajectoryAgentRoutetidak
agent_tool_permissionsartifacts.agent_trajectoryAgentToolPermissionstidak
agent_max_handoffsartifacts.agent_trajectoryAgentMaxHandoffstidak
predictive_correctfield label dari output dan expectedPredictiveCorrecttidak
predictive_recallseperti di atasPredictiveRecalltidak
predictive_precisionseperti di atasPredictivePrecisiontidak
predictive_absolute_errorseperti di atas, numerikAbsoluteErrortidak
predictive_brierfield skor dari output, label dari expectedBriertidak
predictive_log_lossseperti di atasLogLosstidak
predictive_rankingseperti di atasPredictiveRankingtidak
tidak ada tipe YAMLartifacts.conversationConversationCompleted (hanya SDK)tidak
tidak ada tipe YAMLexpected, artifacts.conversationConversationJudge (hanya SDK)ya
tidak ada tipe YAMLapa 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

TipeFieldTipeBawaan
exact_matchfieldpath bertitik dalam keluarantidak ada: seluruh keluaran
exact_matchexpected_fieldpath bertitik dalam expectedtidak ada: sama dengan field
exact_matchstripbooleantrue
exact_matchcasefoldbooleanfalse
containsfield, expected_fieldseperti exact_matchtidak ada
regexpatternekspresi regulerwajib
regexfieldpath bertitiktidak ada
regexpass_ifmatch atau no_matchmatch
json_schemaschemaJSON Schema inline, atau path ke file JSON relatif terhadap proyekwajib
json_schemafieldpath bertitiktidak 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.

FieldTipeBawaan
provideranthropic, openai, atau openai_compatiblewajib
modelstringwajib
rubric_filepathtidak ada
rubric_textstringtidak ada
api_key_envnama variabel lingkunganANTHROPIC_API_KEY atau OPENAI_API_KEY
base_urlURLmilik penyedia
temperatureangka0
max_tokensinteger, setidaknya 1512
timeout_sangka di atas 060

probability_judge mengajukan pertanyaan bertipe dan membaca probabilitas model:

FieldTipeBawaan
provideropenai atau openai_compatiblewajib
modelstringwajib
questionstringwajib
formyes_no, choice, atau scorewajib
min_probabilityangka dalam (0, 1]wajib
optionsmapping jawaban ke deskripsiuntuk choice
pass_optionslist jawabanuntuk choice
levelsmapping tingkat ke deskripsi, terendah lebih duluuntuk score
pass_at_leastsebuah tingkatuntuk score
calibrationslope (di atas 0), intercept, from_versiontidak ada
api_key_env, base_urlseperti di atastidak ada
timeout_sangka di atas 060

cascade menjalankan juri murah lebih dulu dan meneruskan kasus yang tidak pasti:

FieldTipeBawaan
firstentri probability_judgewajib
thenentri rubric_judge atau probability_judgewajib
escalate_betweendua probabilitaswajib

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:

FieldTipeBawaan
modelstringwajib
base_urlURLwajib
labellabel classifier yang dibacawajib
min_score atau max_scoreangka dalam [0, 1], tepat satuwajib
textfield mana yang diklasifikasikanoutput
premiseteks kedua, untuk classifier pasangantidak ada
api_key_envnama variabel lingkungantidak ada
timeout_sangka di atas 030

Evaluator RAG

TipeFieldTipeBawaan
hit_rate, recall, mrr, ndcgkinteger, setidaknya 15 untuk hit_rate dan recall, 10 untuk mrr dan ndcg
hit_rate, recall, mrr, ndcgrelevance_unitdoc atau chunkdoc
hit_rate, recall, mrr, ndcgcriterionstring<type>_at_<k>, seperti hit_rate_at_5
citation_validityrequire_citationsbooleanfalse
citation_validitycriterionstringcitations_valid

Evaluator agen

TipeFieldTipeBawaan
agent_max_stepsmax_stepsinteger, setidaknya 1wajib
agent_tool_calledtool_namestringwajib
agent_tool_calledmin_callsinteger, setidaknya 11
agent_no_tool_loopmax_repeatsinteger, setidaknya 12
agent_tool_sequenceorderedbooleantrue
agent_constraints_satisfiedconstraintslist nama batasankosong
agent_tool_permissionspermissionsmapping agen ke alat yang diizinkanwajib
agent_max_handoffsmax_handoffsinteger, 0 atau lebihwajib

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

TipeFieldTipeBawaan
predictive_correct, predictive_recall, predictive_precisionpositivenilai JSON apa puntrue, atau milik blok predictive:
samafieldfield keluaranlabel, atau predictive.label_field
samaexpected_fieldfield yang diharapkanlabel, atau predictive.expected_field
predictive_absolute_errortarget_rangedua angkawajib
predictive_absolute_errorfield, expected_fieldseperti di ataslabel
predictive_brier, predictive_log_loss, predictive_rankingpositivenilai JSON apa puntrue, atau milik blok
samafieldfield keluaranscore, atau predictive.score_field
samaexpected_fieldfield yang diharapkanlabel, atau milik blok
predictive_log_lossclipangka dalam (0, 0.5)wajib

Evaluator prediktif yang tidak menulis positive, field, atau expected_field mengambilnya dari blok predictive:; nilai yang ditulisnya dipertahankan.

predictive

FieldTipeBawaan
label_fieldstringlabel
score_fieldstringscore
expected_fieldstringlabel
positivenilai JSON apa puntrue
calibration_binsinteger, setidaknya 110
thresholdslist angkakosong
averagemacro atau microtidak ada: tanpa agregat

metrics

Setiap kriteria evaluator sudah merupakan metrik. Entri metrics: menambahkan satu lagi, dibedakan oleh type.

typeFieldApa itu
quantileid, source, quantile dalam (0, 1)Kuantil dari latency_ms, input_tokens, output_tokens, cost_usd, agent_steps, atau agent_tool_calls.
rankingid, criterion, statistic: roc_auc atau average_precisionStatistik atas urutan skor sebuah kriteria peringkat.
human_score, human_preferenceidDitolak: belum ada metode yang disetujui yang membaca label ini.
cost_per_acceptedid, criterion, cost_ceiling_usd, cost_ceiling_sourceDitolak 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.95

release.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
FieldTipeBawaanApa itu
version11Versi format file.
confidence_levelprobabilitas0.95Tingkat setiap interval yang dibaca aturan.
block_onlist status keputusanFAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEWStatus yang membuat gerbang memblokir, dan menetapkan kode keluar.
warn_onlist status keputusankosongStatus yang memperingatkan tanpa memblokir. Tidak boleh tumpang tindih dengan block_on.
block_on_partial_runbooleantrueApakah eksekusi yang tidak selesai memblokir, dengan keluar 5.
require_validated_evaluatorsbooleantrueApakah aturan atas juri model menahan keputusannya sampai juri divalidasi terhadap label manusia. Evaluator deterministik dikecualikan.
minimum_evaluator_agreementangka dalam [0, 1]tidak adaKesepakatan dengan label manusia yang harus dicapai juri, menurut batas bawahnya, sebelum boleh divalidasi.
maximum_evaluator_biasangka dalam (0, 1]tidak adaSeberapa jauh tingkat kelulusan juri boleh berbeda dari tingkat kelulusan manusia sebelum boleh divalidasi.
allow_approximate_methodsbooleanfalseApakah aturan boleh memutuskan berdasarkan interval yang ditandai aproksimasi oleh mesin (interval biner berklaster). Jika tidak, aturan berstatus MANUAL_REVIEW.
min_clustersinteger, setidaknya 1020Dengan klaster lebih sedikit dari ini, aturan berklaster berstatus INSUFFICIENT_EVIDENCE.
difference_methodbounded_paired_difference@1 atau conditional_exact_paired_difference@1tidak ada: yang pertamaMetode yang disetujui mana yang membatasi selisih tingkat biner berpasangan.
early_stoppingbooleanfalseJalankan kasus dalam batch dan berhenti begitu setiap aturan terputuskan. Lihat Gerbang.
early_stopping_seedinteger, 0 atau lebihtidak adaSeed urutan kasus.
early_stopping_batch_sizeinteger, setidaknya 125Kasus per batch.
ruleslistwajib, setidaknya satuAturan-aturannya. Lihat di bawah.
familieslistkosongAturan yang FAIL palsunya dikendalikan bersama.
review_rulemappingtidak adaDitolak: 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.

FieldTipeBawaanBerlaku untuk
idstringwajibsemua
metricid metrik atau kriteriawajibsemua
kindinterval_threshold, observed_count, superiority, non_inferiority, equivalencedisimpulkan untuk aturan eksekusisemua
minangkatidak adaaturan eksekusi: PASS ketika batas bawah interval setidaknya sebesar ini
maxangkatidak adaaturan eksekusi: PASS ketika batas atas interval paling banyak sebesar ini
max_failuresinteger, 0 atau lebihtidak adaobserved_count: hitungan atas suite yang dieksekusi, tanpa interval
marginangka di atas 0, dalam satuan metriktidak adanon_inferiority dan equivalence; ditolak pada superiority
directionmin atau maxminhanya non_inferiority: apakah lebih tinggi atau lebih rendah yang lebih baik
max_missing_fractionangka dalam [0, 1]tidak adaaturan interval dan perbandingan
requires_manual_reviewbooleanfalsesemua: aturan selalu berstatus MANUAL_REVIEW
scopeglobal atau sebuah irisanglobalaturan interval dan perbandingan
min_supportinteger, setidaknya 1tidak adaaturan perbandingan pada sebuah irisan

families

FieldTipeBawaan
idstringwajib
correctionholmholm
ruleslist id aturanwajib, 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.02

Jenis 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.

JenisDitulis olehDiwajibkan oleh
retrieval/v1current_case().retrieval(...), @rag_system, atau http.artifactshit_rate, recall, mrr, ndcg
context/v1current_case().context(...) atau @rag_systemcitation_validity, groundedness_judge, citation_support_judge
citations/v1current_case().citations(...) atau @rag_systemcitation_validity, citation_support_judge
agent_trajectory/v1current_case().agent_trajectory(...)setiap evaluator agent_*, serta sumber agent_steps dan agent_tool_calls
conversation/v1current_case().artifact(CONVERSATION, ...)ConversationCompleted, ConversationJudge
stage_timings/v1@rag_systemtidak 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.

RekamanDipakai ulang ketika semua ini identik
Versi sistemname, version, config, dan digest kode: source modul callable (atau setiap file yang cocok dengan code_paths), url, method, output_path, dan artifacts sistem HTTP
Eksekusiversi sistem, input kasus, dan indeks replikasi. Hanya eksekusi yang berhasil yang dipakai ulang.
Penilaianversi evaluator (tipenya dan setiap pengaturannya) dan digest setiap field yang dibacanya, seperti tercantum di tabel evaluator
Analisisrencana analisis, metrik, tingkat kepercayaan, digest suite, dan setiap input yang dihitungnya
Gerbangsetiap 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.