Handleidingen
Configuratiereferentie
Elk veld van oloproof.yaml en release.yaml, met zijn type, zijn standaardwaarde, de waarden die het accepteert en een voorbeeld, overgenomen uit de modellen die de bestanden lezen. Gebruik deze pagina om een veld op te zoeken; lees de pagina's quickstart en gating om de werkwijze te leren.
Beide bestanden worden gevalideerd voordat er iets draait. Een onbekend veld, een verkeerd gespeld veld of een waarde van het verkeerde type is een configuratiefout, en het commando eindigt met 2 zonder een case uit te voeren. Beide bestanden hebben JSON Schemas, die een editor die JSON Schema leest kan gebruiken voor aanvulling. Het geïnstalleerde pakket schrijft ze, samen met de resultaatschema's, naar schemas/v1/ onder de huidige map: python -m oloproof_core.models.schema_export (de twee heten project_config.schema.json en release_policy.schema.json).
In de tabellen hieronder betekent "verplicht" dat het bestand zonder het veld wordt geweigerd; elk ander veld toont de waarde die wordt gebruikt als je het weglaat.
oloproof.yaml in één oogopslag
Een klein, volledig project. Het draait lokaal een Python-functie, heeft geen netwerk en geen sleutels nodig, en heeft de vorm die oloproof init neerzet.
# 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: labelVelden op het hoogste niveau
| Veld | Type | Standaard | Wat het is |
|---|---|---|---|
| version | 1 | 1 | Versie van het bestandsformaat. Alleen 1 bestaat. |
| project | string | verplicht | De naam van het project, getoond in rapporten en gebruikt bij het pushen. |
| dataset | pad | verplicht | Het suitebestand, JSONL, relatief aan het project. De rijen worden beschreven in Suites. |
| system | mapping | verplicht | Het geteste systeem. Zie hieronder. |
| concurrency | mapping | system: 8, judge: 4 | Hoeveel systeemaanroepen en judgeaanroepen tegelijk lopen. |
| evaluators | lijst | verplicht, minstens één | Wat er op elke case wordt gemeten. Elk item heeft een type. |
| metrics | lijst | leeg | Extra metrieken naast de metriek die elk evaluatorcriterium al is. |
| predictive | mapping | afwezig | Waar het label, de score en de waarheid van een classifier staan. Zie Voorspellende modellen. |
| slices | lijst van strings | leeg | Verkennende slices: metadata.<key>, relevant_position of context_truncated. Ze bereiken de gate nooit. Zie Slices. |
| min_slice_support | geheel getal, minstens 1 | 30 | Onder dit aantal in aanmerking komende cases toont een slice zijn schatting maar geen interval. |
| replicates | geheel getal, minstens 1 | 1 | Meet elke case zo vaak. De case blijft de eenheid: replicaten worden binnen de case samengevoegd voordat er een interval wordt berekend. |
| pricing | lijst | leeg | Wat je per miljoen tokens betaalt, per model. Zonder dit worden kosten in tokens gerapporteerd en nooit in dollars. |
| egress | lijst van strings | leeg | Welke ruwe inhoud oloproof push naar een gehoste workspace mag sturen. Zie Resultaten en uitvoering. |
concurrency
| Veld | Type | Standaard |
|---|---|---|
| system | geheel getal, minstens 1 | 8 |
| judge | geheel getal, minstens 1 | 4 |
pricing-items
Oloproof levert geen prijstabel mee. Elk item noemt een model precies zoals het model: van een evaluator het noemt.
| Veld | Type | Standaard |
|---|---|---|
| model | string | verplicht |
| input_per_mtok | getal, 0 of meer | verplicht |
| output_per_mtok | getal, 0 of meer | verplicht |
# 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
Een systeem heeft precies één van callable, http of rag nodig.
| Veld | Type | Standaard | Wat het is |
|---|---|---|---|
| name | string | verplicht | De naam van het systeem. Deel van zijn versie-identiteit. |
| version | string | afwezig | Je eigen label voor deze versie. Verplicht voor een HTTP-systeem. Deel van de identiteit, dus wie hem wijzigt maakt gecachete uitvoeringen ongeldig. |
| callable | module:attribute | afwezig | Een Python-functie, synchroon of asynchroon. Ze krijgt de input van de case en geeft de output terug. |
| http | mapping | afwezig | Een endpoint dat één keer per case wordt aangeroepen. Zie hieronder. |
| rag | mapping | afwezig | Een RAG-klasse in fasen, gedeclareerd met @rag_system. Zie hieronder. |
| config | mapping | leeg | Vrije instellingen die met de systeemversie worden vastgelegd. Wie ze wijzigt, wijzigt de versie. |
| code_paths | lijst van globpatronen | leeg | Bronbestanden waarvan de inhoud meegaat in de versie van een callable systeem. Zonder dit wordt alleen de eigen module van de callable gehasht. |
| timeout_s | getal boven 0 | 120 | Tijdslimiet per aanroep voor een callable systeem. Een HTTP-systeem gebruikt in plaats daarvan http.timeout_s. |
| records | lijst van artefactsoorten | leeg | Artefactsoorten die een callable systeem vastlegt, zoals retrieval/v1. Geweigerd op een HTTP- of RAG-systeem. |
system.http
| Veld | Type | Standaard | Wat het is |
|---|---|---|---|
| url | string | verplicht | Waar elke case heen wordt gestuurd. |
| method | GET, POST of PUT | POST | De HTTP-methode. |
| output_path | pad met punten | afwezig | Welk veld van het JSON-antwoord de output is, zoals result.answer. Afwezig betekent de hele body. |
| artifacts | mapping van soort naar pad met punten | leeg | Antwoordvelden die als artefacten worden vastgelegd, zoals retrieval/v1: debug.retrieval. |
| version | string | afwezig | Gebruikt als versie van het systeem als system.version afwezig is. Een HTTP-systeem heeft een van de twee nodig. |
| timeout_s | getal boven 0 | 30 | Tijdslimiet per verzoek. |
# 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: 5Het contract voor verzoek en antwoord, en wat er gebeurt bij timeouts en HTTP-fouten, staan in Resultaten en uitvoering.
system.rag
| Veld | Type | Standaard | Wat het is |
|---|---|---|---|
| object | module:attribute | verplicht | De klasse die met @rag_system is gedeclareerd, of een instantie ervan. |
| depth | geheel getal, minstens 1 | die van de klasse | Hoeveel passages retrieval teruggeeft. |
| top_k | geheel getal, minstens 1 | die van de klasse | Hoeveel daarvan de generatie bereiken. |
| token_budget | geheel getal, minstens 1 | die van de klasse | Een tokenlimiet op de context. Vereist count_tokens(passage) van de klasse. |
| index_version | string | die van de klasse | Deel van de retrievalidentiteit. Wijzig het telkens als de index opnieuw wordt gebouwd. |
Instellingen die je hier geeft gaan voor op de instellingen die de klasse declareert. Een systeem in fasen legt zijn eigen retrieval/v1-, context/v1- en citations/v1-artefacten vast, dus records wordt ernaast geweigerd. Zie RAG.
evaluators
Elk item neemt een type en deze twee gemeenschappelijke velden:
| Veld | Type | Standaard | Wat het is |
|---|---|---|---|
| criterion | string | verplicht, tenzij het type een standaard heeft | De naam van wat er gemeten wordt. Elk criterium is een metriek, en het metric: van een regel noemt het. |
| on_execution_error | missing of fail | missing | Waarvoor een case waarvan de systeemaanroep mislukte voor dit criterium telt. missing houdt hem in de noemer als niet waargenomen; fail telt hem als mislukking. |
fail geldt alleen voor geslaagd/mislukt-evaluators; een score-evaluator ermee is een configuratiefout. on_execution_error is een YAML-veld; de SDK-evaluatorklassen nemen zo'n argument niet, en een case met een fout telt als ontbrekend.
Evaluatortypen
"Leest" noemt waar het oordeel van de evaluator van afhangt, en dat is ook waarop zijn gecachete oordeel is gesleuteld. "SDK" noemt de klasse in oloproof.evaluators.
| YAML type | Leest | SDK | Netwerk of sleutel nodig |
|---|---|---|---|
| exact_match | output, expected | ExactMatch | nee |
| contains | output, expected | Contains | nee |
| regex | output | Regex | nee |
| json_schema | output | JsonSchema | nee |
| rubric_judge | input, output, expected | RubricJudge | ja, een modelprovider |
| model_classifier | output (of het veld dat text noemt), optioneel premise | alleen YAML | ja, een TEI-compatibele server |
| probability_judge | de case en de output | alleen YAML | ja, een OpenAI-compatibele provider die logkansen teruggeeft |
| cascade | als zijn twee fasen | alleen YAML | ja |
| hit_rate, recall, mrr, ndcg | artifacts.retrieval, expected | HitRate, Recall, MRR, NDCG | nee |
| citation_validity | artifacts.citations, artifacts.context | CitationValidity | nee |
| groundedness_judge | input, output, artifacts.context | Groundedness | ja |
| citation_support_judge | input, output, artifacts.context, artifacts.citations | CitationSupport | ja |
| agent_max_steps | artifacts.agent_trajectory | AgentMaxSteps | nee |
| agent_tool_called | artifacts.agent_trajectory | AgentToolCalled | nee |
| agent_no_tool_loop | artifacts.agent_trajectory | AgentNoToolLoop | nee |
| agent_tool_sequence | artifacts.agent_trajectory, expected | AgentToolSequence | nee |
| agent_no_undeclared_tool | artifacts.agent_trajectory, expected | AgentNoUndeclaredTool | nee |
| agent_constraints_satisfied | artifacts.agent_trajectory | AgentConstraintsSatisfied | nee |
| agent_route | artifacts.agent_trajectory | AgentRoute | nee |
| agent_tool_permissions | artifacts.agent_trajectory | AgentToolPermissions | nee |
| agent_max_handoffs | artifacts.agent_trajectory | AgentMaxHandoffs | nee |
| predictive_correct | het labelveld van output en expected | PredictiveCorrect | nee |
| predictive_recall | als hierboven | PredictiveRecall | nee |
| predictive_precision | als hierboven | PredictivePrecision | nee |
| predictive_absolute_error | als hierboven, numeriek | AbsoluteError | nee |
| predictive_brier | het scoreveld van output, het label van expected | Brier | nee |
| predictive_log_loss | als hierboven | LogLoss | nee |
| predictive_ranking | als hierboven | PredictiveRanking | nee |
| geen YAML-type | artifacts.conversation | ConversationCompleted (alleen SDK) | nee |
| geen YAML-type | expected, artifacts.conversation | ConversationJudge (alleen SDK) | ja |
| geen YAML-type | wat je declareert | @evaluator en CustomEvaluator (alleen SDK) | aan jou |
Een judge die een gehost model aanroept stuurt caseinhoud naar die provider en wordt door die provider gefactureerd. Sleutels worden gelezen uit de omgevingsvariabele die api_key_env noemt; Oloproof slaat ze nooit op in deze bestanden.
Deterministische evaluators
| Type | Veld | Type | Standaard |
|---|---|---|---|
| exact_match | field | pad met punten in de output | afwezig: de hele output |
| exact_match | expected_field | pad met punten in expected | afwezig: gelijk aan field |
| exact_match | strip | boolean | true |
| exact_match | casefold | boolean | false |
| contains | field, expected_field | als exact_match | afwezig |
| regex | pattern | reguliere expressie | verplicht |
| regex | field | pad met punten | afwezig |
| regex | pass_if | match of no_match | match |
| json_schema | schema | een JSON Schema inline, of een pad naar een JSON-bestand relatief aan het project | verplicht |
| json_schema | field | pad met punten | afwezig |
Modeljudges
rubric_judge, groundedness_judge en citation_support_judge delen deze velden. rubric_judge vereist precies één van rubric_file of rubric_text; de twee RAG-judges nemen er hooguit één en gebruiken anders een ingebouwde rubric. Hun criterion is standaard groundedness en citation_support.
| Veld | Type | Standaard |
|---|---|---|
| provider | anthropic, openai of openai_compatible | verplicht |
| model | string | verplicht |
| rubric_file | pad | afwezig |
| rubric_text | string | afwezig |
| api_key_env | naam van een omgevingsvariabele | ANTHROPIC_API_KEY of OPENAI_API_KEY |
| base_url | URL | die van de provider |
| temperature | getal | 0 |
| max_tokens | geheel getal, minstens 1 | 512 |
| timeout_s | getal boven 0 | 60 |
probability_judge stelt een getypeerde vraag en leest de kansen van het model:
| Veld | Type | Standaard |
|---|---|---|
| provider | openai of openai_compatible | verplicht |
| model | string | verplicht |
| question | string | verplicht |
| form | yes_no, choice of score | verplicht |
| min_probability | getal in (0, 1] | verplicht |
| options | mapping van antwoord naar beschrijving | voor choice |
| pass_options | lijst van antwoorden | voor choice |
| levels | mapping van niveau naar beschrijving, laagste eerst | voor score |
| pass_at_least | een niveau | voor score |
| calibration | slope (boven 0), intercept, from_version | afwezig |
| api_key_env, base_url | als hierboven | afwezig |
| timeout_s | getal boven 0 | 60 |
cascade draait eerst een goedkope judge en escaleert de onzekere cases:
| Veld | Type | Standaard |
|---|---|---|
| first | een probability_judge-item | verplicht |
| then | een rubric_judge- of probability_judge-item | verplicht |
| escalate_between | twee kansen | verplicht |
De fasen beoordelen het eigen criterion van de cascade; een fase die een ander noemt wordt geweigerd.
model_classifier scoort tekst met een getraind model op een TEI-compatibele server:
| Veld | Type | Standaard |
|---|---|---|
| model | string | verplicht |
| base_url | URL | verplicht |
| label | het te lezen classifierlabel | verplicht |
| min_score of max_score | getal in [0, 1], precies één | verplicht |
| text | welk veld wordt geclassificeerd | output |
| premise | een tweede tekst, voor paarclassifiers | afwezig |
| api_key_env | naam van een omgevingsvariabele | afwezig |
| timeout_s | getal boven 0 | 30 |
RAG-evaluators
| Type | Veld | Type | Standaard |
|---|---|---|---|
| hit_rate, recall, mrr, ndcg | k | geheel getal, minstens 1 | 5 voor hit_rate en recall, 10 voor mrr en ndcg |
| hit_rate, recall, mrr, ndcg | relevance_unit | doc of chunk | doc |
| hit_rate, recall, mrr, ndcg | criterion | string | <type>_at_<k>, zoals hit_rate_at_5 |
| citation_validity | require_citations | boolean | false |
| citation_validity | criterion | string | citations_valid |
Agentevaluators
| Type | Veld | Type | Standaard |
|---|---|---|---|
| agent_max_steps | max_steps | geheel getal, minstens 1 | verplicht |
| agent_tool_called | tool_name | string | verplicht |
| agent_tool_called | min_calls | geheel getal, minstens 1 | 1 |
| agent_no_tool_loop | max_repeats | geheel getal, minstens 1 | 2 |
| agent_tool_sequence | ordered | boolean | true |
| agent_constraints_satisfied | constraints | lijst van namen van beperkingen | leeg |
| agent_tool_permissions | permissions | mapping van agent naar toegestane tools | verplicht |
| agent_max_handoffs | max_handoffs | geheel getal, 0 of meer | verplicht |
Elk agenttype heeft een standaard-criterion, dus je mag het weglaten: zijn eigen typenaam, of een naam gebouwd uit zijn instelling (agent_steps_le_8, agent_tool_lookup_called, agent_handoffs_le_2). Zie Agents.
Voorspellende evaluators
| Type | Veld | Type | Standaard |
|---|---|---|---|
| predictive_correct, predictive_recall, predictive_precision | positive | elke JSON-waarde | true, of die van het predictive:-blok |
| idem | field | outputveld | label, of predictive.label_field |
| idem | expected_field | verwacht veld | label, of predictive.expected_field |
| predictive_absolute_error | target_range | twee getallen | verplicht |
| predictive_absolute_error | field, expected_field | als hierboven | label |
| predictive_brier, predictive_log_loss, predictive_ranking | positive | elke JSON-waarde | true, of die van het blok |
| idem | field | outputveld | score, of predictive.score_field |
| idem | expected_field | verwacht veld | label, of die van het blok |
| predictive_log_loss | clip | getal in (0, 0.5) | verplicht |
Een voorspellende evaluator die positive, field of expected_field niet invult, neemt die over van het predictive:-blok; een waarde die hij zelf invult blijft staan.
predictive
| Veld | Type | Standaard |
|---|---|---|
| label_field | string | label |
| score_field | string | score |
| expected_field | string | label |
| positive | elke JSON-waarde | true |
| calibration_bins | geheel getal, minstens 1 | 10 |
| thresholds | lijst van getallen | leeg |
| average | macro of micro | afwezig: geen aggregaat |
metrics
Elk evaluatorcriterium is al een metriek. Een metrics:-item voegt er een toe, onderscheiden door type.
| type | Velden | Wat het is |
|---|---|---|
| quantile | id, source, quantile in (0, 1) | Een kwantiel van latency_ms, input_tokens, output_tokens, cost_usd, agent_steps of agent_tool_calls. |
| ranking | id, criterion, statistic: roc_auc of average_precision | Een statistiek over de volgorde van de scores van een rangschikkingscriterium. |
| human_score, human_preference | id | Geweigerd: nog geen toegelaten methode leest deze labels. |
| cost_per_accepted | id, criterion, cost_ceiling_usd, cost_ceiling_source | Geweigerd totdat de aansluiting door een audit is toegelaten. |
# 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
Het releasebeleid: welke regels beslissen, en welke beslissingen blokkeren. Weggelaten instellingen houden hun standaard, dus een beleid dat alleen zijn regels noemt blokkeert nog steeds op FAIL, INSUFFICIENT_EVIDENCE en MANUAL_REVIEW.
# release.yaml
version: 1
rules:
- id: label_accuracy
metric: correct_label
min: 0.8| Veld | Type | Standaard | Wat het is |
|---|---|---|---|
| version | 1 | 1 | Versie van het bestandsformaat. |
| confidence_level | kans | 0.95 | Het niveau van elk interval dat een regel leest. |
| block_on | lijst van beslissingstoestanden | FAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEW | Toestanden die de gate laten blokkeren en de exitcode bepalen. |
| warn_on | lijst van beslissingstoestanden | leeg | Toestanden die waarschuwen zonder te blokkeren. Mogen niet overlappen met block_on. |
| block_on_partial_run | boolean | true | Of een run die niet voltooid is blokkeert, met exit 5. |
| require_validated_evaluators | boolean | true | Of een regel over een modeljudge zijn beslissing achterhoudt totdat de judge tegen menselijke labels is gevalideerd. Deterministische evaluators zijn uitgezonderd. |
| minimum_evaluator_agreement | getal in [0, 1] | afwezig | De overeenstemming met menselijke labels die een judge, gemeten aan zijn ondergrens, moet halen voordat hij gevalideerd mag worden. |
| maximum_evaluator_bias | getal in (0, 1] | afwezig | Hoe ver het slagingspercentage van een judge van dat van de mensen mag liggen voordat hij gevalideerd mag worden. |
| allow_approximate_methods | boolean | false | Of een regel mag beslissen op een interval dat de engine als benaderend markeert (het geclusterde binaire interval). Anders leest hij MANUAL_REVIEW. |
| min_clusters | geheel getal, minstens 10 | 20 | Bij minder clusters leest een geclusterde regel INSUFFICIENT_EVIDENCE. |
| difference_method | bounded_paired_difference@1 of conditional_exact_paired_difference@1 | afwezig: de eerste | Welke toegelaten methode een gepaard verschil tussen binaire percentages begrenst. |
| early_stopping | boolean | false | Draai cases in batches en stop zodra elke regel beslist is. Zie Gating. |
| early_stopping_seed | geheel getal, 0 of meer | afwezig | De seed van de casevolgorde. |
| early_stopping_batch_size | geheel getal, minstens 1 | 25 | Cases per batch. |
| rules | lijst | verplicht, minstens één | De regels. Zie hieronder. |
| families | lijst | leeg | Regels waarvan de onterechte FAILs samen worden beheerst. |
| review_rule | mapping | afwezig | Geweigerd: de aansluiting is nog niet toegelaten. |
rules
Eén lijst bevat beide soorten. Een runregel neemt precies één van min, max of max_failures. Een vergelijkingsregel noemt zijn kind en beslist over een verschil tussen twee runs; zie Vergelijkingsregels.
| Veld | Type | Standaard | Geldt voor |
|---|---|---|---|
| id | string | verplicht | alle |
| metric | een metriek-id of criterium | verplicht | alle |
| kind | interval_threshold, observed_count, superiority, non_inferiority, equivalence | afgeleid voor runregels | alle |
| min | getal | afwezig | runregels: PASS als de ondergrens van het interval minstens dit is |
| max | getal | afwezig | runregels: PASS als de bovengrens van het interval hooguit dit is |
| max_failures | geheel getal, 0 of meer | afwezig | observed_count: een telling over de uitgevoerde suite, geen interval |
| margin | getal boven 0, in de eenheden van de metriek | afwezig | non_inferiority en equivalence; geweigerd op superiority |
| direction | min of max | min | alleen non_inferiority: of hoger of lager beter is |
| max_missing_fraction | getal in [0, 1] | afwezig | interval- en vergelijkingsregels |
| requires_manual_review | boolean | false | alle: de regel leest altijd MANUAL_REVIEW |
| scope | global of een slice | global | interval- en vergelijkingsregels |
| min_support | geheel getal, minstens 1 | afwezig | vergelijkingsregels op een slice |
families
| Veld | Type | Standaard |
|---|---|---|
| id | string | verplicht |
| correction | holm | holm |
| rules | lijst van regel-ids | verplicht, minstens één |
# 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.02Artefactsoorten
Een artefact is een getypeerd record dat een systeem naast zijn output schrijft, zoals wat het ophaalde. Een soort is een naam in kleine letters met een optionele versie, die overeenkomt met ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. Evaluators die een artefact nodig hebben noemen het, en een run waarvan het systeem een vereiste soort niet declareert wordt geweigerd voordat hij begint, in plaats van elke case als ontbrekend te tellen.
| Soort | Geschreven door | Vereist door |
|---|---|---|
| retrieval/v1 | current_case().retrieval(...), een @rag_system, of http.artifacts | hit_rate, recall, mrr, ndcg |
| context/v1 | current_case().context(...) of een @rag_system | citation_validity, groundedness_judge, citation_support_judge |
| citations/v1 | current_case().citations(...) of een @rag_system | citation_validity, citation_support_judge |
| agent_trajectory/v1 | current_case().agent_trajectory(...) | elke agent_*-evaluator, en de bronnen agent_steps en agent_tool_calls |
| conversation/v1 | current_case().artifact(CONVERSATION, ...) | ConversationCompleted, ConversationJudge |
| stage_timings/v1 | een @rag_system | geen; getoond naast de latentie |
Een callable systeem declareert de soorten die het vastlegt in records: (of @system(records=...)); een HTTP-systeem in http.artifacts; een RAG-systeem in fasen legt zijn eigen vast.
Versies, cachesleutels en ongeldig maken
Oloproof hergebruikt werk waarvan de inputs niet veranderd zijn, en bepaalt wat "ongewijzigd" betekent aan de hand van inhoudsdigests. Elke digest wordt door de engine berekend en met de run vastgelegd.
| Record | Hergebruikt als deze identiek zijn |
|---|---|
| Systeemversie | name, version, config, en een codedigest: de modulebron van een callable (of elk bestand dat code_paths matcht), de url, method, output_path en artifacts van een HTTP-systeem |
| Uitvoering | de systeemversie, de input van de case en de replicaatindex. Alleen geslaagde uitvoeringen worden hergebruikt. |
| Oordeel | de evaluatorversie (zijn type en elke instelling) en een digest van elk veld dat hij leest, zoals vermeld in de evaluatortabel |
| Analyse | het analyseplan, de metriek, het betrouwbaarheidsniveau, de suitedigest en elke input die het telde |
| Gate | elke analyse, de beleidsdigest, of de run voltooid is, en de effectieve status van elke evaluator die de beslissingen noemen |
Wat Oloproof niet kan zien, moet jij declareren:
- Het gedrag van een HTTP-systeem woont op de server. Wijzig system.version telkens als wat achter de URL zit verandert, anders staat een oude gecachete output voor het nieuwe systeem.
- De hulpmodules van een callable worden alleen gehasht als code_paths ze matcht. Zonder dat verandert het bewerken van een hulpmodule de versie niet.
- Een methode of een callable object moet een versie declareren, en die versie moet veranderen als de toestand van het object verandert.
- Een RAG-index wordt geïdentificeerd door index_version; wijzig die als de index opnieuw wordt gebouwd.
- De identiteit van een modeljudge zijn zijn instellingen, niet de gewichten van de provider. Een provider die het model achter dezelfde naam bijwerkt, wordt door de cache niet opgemerkt.
- Een eigen @evaluator hasht het modulebestand dat hem definieert, en zijn oordelen worden alleen tussen runs hergebruikt als hij cacheable=True declareert. Ingebouwde rubricjudges zijn cachebaar; deterministische evaluators worden opnieuw berekend, wat goedkoop is.
Gecachet werk staat in de lokale store van het project, .oloproof/store.sqlite naast oloproof.yaml (of onder OLOPROOF_HOME). Wie de store verwijdert, gooit elke cache en elke run weg. In een gehoste workspace hergebruikt de engine geen gecachete uitvoeringen, oordelen of analyses, omdat een push ze kan beschrijven; hij berekent ze opnieuw.