Zum Inhalt springen

Anleitungen

Konfigurationsreferenz

Jedes Feld von oloproof.yaml und release.yaml, mit seinem Typ, seinem Standardwert, den akzeptierten Werten und einem Beispiel, entnommen den Modellen, die die Dateien lesen. Schlagen Sie hier ein Feld nach; den Ablauf lernen Sie auf den Seiten Schnellstart und Gating.

Beide Dateien werden validiert, bevor etwas läuft. Ein unbekanntes Feld, ein falsch geschriebenes Feld oder ein Wert vom falschen Typ ist ein Konfigurationsfehler, und der Befehl endet mit 2, ohne einen Fall auszuführen. Beide Dateien haben JSON-Schemas, die ein Editor, der JSON Schema liest, zur Vervollständigung nutzen kann. Das installierte Paket schreibt sie zusammen mit den Ergebnis-Schemas in schemas/v1/ unter dem aktuellen Verzeichnis: python -m oloproof_core.models.schema_export (die beiden heißen project_config.schema.json und release_policy.schema.json).

In den Tabellen unten bedeutet "erforderlich", dass die Datei ohne das Feld abgewiesen wird; jedes andere Feld zeigt den Wert, der verwendet wird, wenn es fehlt.

oloproof.yaml auf einen Blick

Ein kleines, vollständiges Projekt. Es führt eine Python-Funktion lokal aus, braucht weder Netzwerk noch Schlüssel und hat die Form, die oloproof init anlegt.

# 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

Felder der obersten Ebene

FeldTypStandardWas es ist
version11Version des Dateiformats. Es gibt nur 1.
projectStringerforderlichDer Name des Projekts, angezeigt in Berichten und beim Pushen verwendet.
datasetPfaderforderlichDie Suite-Datei, JSONL, relativ zum Projekt. Ihre Zeilen beschreibt Suites.
systemMappingerforderlichDas getestete System. Siehe unten.
concurrencyMappingsystem: 8, judge: 4Wie viele System- und Judge-Aufrufe gleichzeitig laufen.
evaluatorsListeerforderlich, mindestens einerWas an jedem Fall gemessen wird. Jeder Eintrag hat einen type.
metricsListeleerZusätzliche Metriken über die hinaus, die jedes Evaluator-Kriterium bereits ist.
predictiveMappingfehltWo Label, Score und Wahrheit eines Klassifikators liegen. Siehe Prädiktive Modelle.
slicesListe von StringsleerExplorative Slices: metadata.<key>, relevant_position oder context_truncated. Sie erreichen das Gate nie. Siehe Slices.
min_slice_supportGanzzahl, mindestens 130Unter so vielen zulässigen Fällen zeigt ein Slice seine Schätzung, aber kein Intervall.
replicatesGanzzahl, mindestens 11Jeden Fall so oft messen. Der Fall bleibt die Einheit: Replikate werden innerhalb des Falls aggregiert, bevor ein Intervall berechnet wird.
pricingListeleerWas Sie pro Million Tokens zahlen, nach Modell. Ohne sie werden Kosten in Tokens gemeldet, nie in Dollar.
egressListe von StringsleerWelcher rohe Inhalt oloproof push an einen gehosteten Workspace senden darf. Siehe Ergebnisse und Ausführung.

concurrency

FeldTypStandard
systemGanzzahl, mindestens 18
judgeGanzzahl, mindestens 14

Einträge in pricing

Oloproof liefert keine Preistabelle mit. Jeder Eintrag benennt ein Modell genau so, wie es das model: eines Evaluators benennt.

FeldTypStandard
modelStringerforderlich
input_per_mtokZahl, 0 oder mehrerforderlich
output_per_mtokZahl, 0 oder mehrerforderlich
# 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

Ein System braucht genau eines von callable, http oder rag.

FeldTypStandardWas es ist
nameStringerforderlichDer Name des Systems. Teil seiner Versionsidentität.
versionStringfehltIhre Bezeichnung für diese Version. Erforderlich für ein HTTP-System. Teil seiner Identität, eine Änderung macht also gecachte Ausführungen ungültig.
callablemodule:attributefehltEine Python-Funktion, synchron oder asynchron. Sie erhält den input des Falls und gibt die Ausgabe zurück.
httpMappingfehltEin Endpunkt, der einmal pro Fall aufgerufen wird. Siehe unten.
ragMappingfehltEine gestufte RAG-Klasse, deklariert mit @rag_system. Siehe unten.
configMappingleerFreie Einstellungen, die mit der Systemversion aufgezeichnet werden. Eine Änderung ändert die Version.
code_pathsListe von Glob-MusternleerQuelldateien, deren Inhalt in die Version eines Callable-Systems eingeht. Ohne sie wird nur das eigene Modul des Callables gehasht.
timeout_sZahl über 0120Zeitlimit pro Aufruf für ein Callable-System. Ein HTTP-System verwendet stattdessen http.timeout_s.
recordsListe von ArtefaktartenleerArtefaktarten, die ein Callable-System aufzeichnet, etwa retrieval/v1. Bei einem HTTP- oder RAG-System abgewiesen.

system.http

FeldTypStandardWas es ist
urlStringerforderlichWohin jeder Fall gesendet wird.
methodGET, POST oder PUTPOSTDie HTTP-Methode.
output_pathPunktpfadfehltWelches Feld der JSON-Antwort die Ausgabe ist, etwa result.answer. Fehlt es, ist es der ganze Body.
artifactsMapping von Art auf PunktpfadleerAntwortfelder, die als Artefakte aufgezeichnet werden, etwa retrieval/v1: debug.retrieval.
versionStringfehltWird als Version des Systems verwendet, wenn system.version fehlt. Ein HTTP-System braucht eines der beiden.
timeout_sZahl über 030Zeitlimit pro Anfrage.
# 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

Der Vertrag für Anfrage und Antwort und was bei Timeouts und HTTP-Fehlern geschieht, stehen in Ergebnisse und Ausführung.

system.rag

FeldTypStandardWas es ist
objectmodule:attributeerforderlichDie mit @rag_system deklarierte Klasse oder eine Instanz davon.
depthGanzzahl, mindestens 1der der KlasseWie viele Passagen das Retrieval zurückgibt.
top_kGanzzahl, mindestens 1der der KlasseWie viele davon die Generierung erreichen.
token_budgetGanzzahl, mindestens 1der der KlasseEin Token-Limit für den Kontext. Braucht count_tokens(passage) der Klasse.
index_versionStringder der KlasseTeil der Retrieval-Identität. Ändern Sie es, wann immer der Index neu gebaut wird.

Hier angegebene Einstellungen überschreiben die, die die Klasse deklariert. Ein gestuftes System zeichnet seine eigenen Artefakte retrieval/v1, context/v1 und citations/v1 auf, daher wird records daneben abgewiesen. Siehe RAG.

evaluators

Jeder Eintrag nimmt einen type und diese beiden gemeinsamen Felder:

FeldTypStandardWas es ist
criterionStringerforderlich, außer der Typ hat einen StandardDer Name dessen, was gemessen wird. Jedes Kriterium ist eine Metrik, und das metric: einer Regel benennt es.
on_execution_errormissing oder failmissingAls was ein Fall, dessen Systemaufruf fehlschlug, für dieses Kriterium zählt. missing behält ihn als unbeobachtet im Nenner; fail zählt ihn als Fehlschlag.

fail gilt nur für Bestanden/Nicht-bestanden-Evaluatoren; ein Score-Evaluator damit ist ein Konfigurationsfehler. on_execution_error ist ein YAML-Feld; die SDK-Evaluatorklassen nehmen kein solches Argument, und ein fehlerhafter Fall zählt als fehlend.

Evaluatortypen

"Liest" führt auf, wovon das Urteil des Evaluators abhängt, und damit auch, worauf sein gecachtes Urteil verschlüsselt ist. "SDK" benennt die Klasse in oloproof.evaluators.

YAML-typeLiestSDKBraucht Netzwerk oder einen Schlüssel
exact_matchoutput, expectedExactMatchnein
containsoutput, expectedContainsnein
regexoutputRegexnein
json_schemaoutputJsonSchemanein
rubric_judgeinput, output, expectedRubricJudgeja, einen Modell-Provider
model_classifieroutput (oder das von text benannte Feld), optional premisenur YAMLja, einen TEI-kompatiblen Server
probability_judgeden Fall und die Ausgabenur YAMLja, einen OpenAI-kompatiblen Provider, der Log-Wahrscheinlichkeiten liefert
cascadewie seine zwei Stufennur YAMLja
hit_rate, recall, mrr, ndcgartifacts.retrieval, expectedHitRate, Recall, MRR, NDCGnein
citation_validityartifacts.citations, artifacts.contextCitationValiditynein
groundedness_judgeinput, output, artifacts.contextGroundednessja
citation_support_judgeinput, output, artifacts.context, artifacts.citationsCitationSupportja
agent_max_stepsartifacts.agent_trajectoryAgentMaxStepsnein
agent_tool_calledartifacts.agent_trajectoryAgentToolCallednein
agent_no_tool_loopartifacts.agent_trajectoryAgentNoToolLoopnein
agent_tool_sequenceartifacts.agent_trajectory, expectedAgentToolSequencenein
agent_no_undeclared_toolartifacts.agent_trajectory, expectedAgentNoUndeclaredToolnein
agent_constraints_satisfiedartifacts.agent_trajectoryAgentConstraintsSatisfiednein
agent_routeartifacts.agent_trajectoryAgentRoutenein
agent_tool_permissionsartifacts.agent_trajectoryAgentToolPermissionsnein
agent_max_handoffsartifacts.agent_trajectoryAgentMaxHandoffsnein
predictive_correctdas Label-Feld von output und expectedPredictiveCorrectnein
predictive_recallwie obenPredictiveRecallnein
predictive_precisionwie obenPredictivePrecisionnein
predictive_absolute_errorwie oben, numerischAbsoluteErrornein
predictive_brierdas Score-Feld von output, das Label von expectedBriernein
predictive_log_losswie obenLogLossnein
predictive_rankingwie obenPredictiveRankingnein
kein YAML-Typartifacts.conversationConversationCompleted (nur SDK)nein
kein YAML-Typexpected, artifacts.conversationConversationJudge (nur SDK)ja
kein YAML-Typwas Sie deklarieren@evaluator und CustomEvaluator (nur SDK)Ihre Sache

Ein Judge, der ein gehostetes Modell aufruft, sendet Fallinhalt an diesen Provider und wird von ihm abgerechnet. Schlüssel werden aus der in api_key_env benannten Umgebungsvariable gelesen; Oloproof speichert sie nie in diesen Dateien.

Deterministische Evaluatoren

TypFeldTypStandard
exact_matchfieldPunktpfad in der Ausgabefehlt: die ganze Ausgabe
exact_matchexpected_fieldPunktpfad in expectedfehlt: wie field
exact_matchstripBooleantrue
exact_matchcasefoldBooleanfalse
containsfield, expected_fieldwie exact_matchfehlt
regexpatternregulärer Ausdruckerforderlich
regexfieldPunktpfadfehlt
regexpass_ifmatch oder no_matchmatch
json_schemaschemaein JSON Schema inline oder ein Pfad zu einer JSON-Datei relativ zum Projekterforderlich
json_schemafieldPunktpfadfehlt

Modell-Judges

rubric_judge, groundedness_judge und citation_support_judge teilen diese Felder. Genau eines von rubric_file oder rubric_text verlangt rubric_judge; die beiden RAG-Judges nehmen höchstens eines und verwenden sonst eine eingebaute Rubrik. Ihr criterion ist standardmäßig groundedness und citation_support.

FeldTypStandard
provideranthropic, openai oder openai_compatibleerforderlich
modelStringerforderlich
rubric_filePfadfehlt
rubric_textStringfehlt
api_key_envName einer UmgebungsvariableANTHROPIC_API_KEY oder OPENAI_API_KEY
base_urlURLdie des Providers
temperatureZahl0
max_tokensGanzzahl, mindestens 1512
timeout_sZahl über 060

probability_judge stellt eine typisierte Frage und liest die Wahrscheinlichkeiten des Modells:

FeldTypStandard
provideropenai oder openai_compatibleerforderlich
modelStringerforderlich
questionStringerforderlich
formyes_no, choice oder scoreerforderlich
min_probabilityZahl in (0, 1]erforderlich
optionsMapping von Antwort auf Beschreibungfür choice
pass_optionsListe von Antwortenfür choice
levelsMapping von Stufe auf Beschreibung, niedrigste zuerstfür score
pass_at_leasteine Stufefür score
calibrationslope (über 0), intercept, from_versionfehlt
api_key_env, base_urlwie obenfehlt
timeout_sZahl über 060

cascade führt zuerst einen günstigen Judge aus und eskaliert die unsicheren Fälle:

FeldTypStandard
firstein probability_judge-Eintragerforderlich
thenein rubric_judge- oder probability_judge-Eintragerforderlich
escalate_betweenzwei Wahrscheinlichkeitenerforderlich

Die Stufen beurteilen das eigene criterion der Kaskade; eine Stufe, die ein anderes benennt, wird abgewiesen.

model_classifier bewertet Text mit einem trainierten Modell auf einem TEI-kompatiblen Server:

FeldTypStandard
modelStringerforderlich
base_urlURLerforderlich
labeldas zu lesende Label des Klassifikatorserforderlich
min_score oder max_scoreZahl in [0, 1], genau eineserforderlich
textwelches Feld klassifiziert wirdoutput
premiseein zweiter Text, für Paar-Klassifikatorenfehlt
api_key_envName einer Umgebungsvariablefehlt
timeout_sZahl über 030

RAG-Evaluatoren

TypFeldTypStandard
hit_rate, recall, mrr, ndcgkGanzzahl, mindestens 15 für hit_rate und recall, 10 für mrr und ndcg
hit_rate, recall, mrr, ndcgrelevance_unitdoc oder chunkdoc
hit_rate, recall, mrr, ndcgcriterionString<type>_at_<k>, etwa hit_rate_at_5
citation_validityrequire_citationsBooleanfalse
citation_validitycriterionStringcitations_valid

Agenten-Evaluatoren

TypFeldTypStandard
agent_max_stepsmax_stepsGanzzahl, mindestens 1erforderlich
agent_tool_calledtool_nameStringerforderlich
agent_tool_calledmin_callsGanzzahl, mindestens 11
agent_no_tool_loopmax_repeatsGanzzahl, mindestens 12
agent_tool_sequenceorderedBooleantrue
agent_constraints_satisfiedconstraintsListe von Constraint-Namenleer
agent_tool_permissionspermissionsMapping von Agent auf erlaubte Toolserforderlich
agent_max_handoffsmax_handoffsGanzzahl, 0 oder mehrerforderlich

Jeder Agententyp hat ein Standard-criterion, es darf also fehlen: sein eigener Typname oder einer, der aus seiner Einstellung gebildet wird (agent_steps_le_8, agent_tool_lookup_called, agent_handoffs_le_2). Siehe Agenten.

Prädiktive Evaluatoren

TypFeldTypStandard
predictive_correct, predictive_recall, predictive_precisionpositivebeliebiger JSON-Werttrue, oder der des predictive:-Blocks
dieselbenfieldAusgabefeldlabel, oder predictive.label_field
dieselbenexpected_fielderwartetes Feldlabel, oder predictive.expected_field
predictive_absolute_errortarget_rangezwei Zahlenerforderlich
predictive_absolute_errorfield, expected_fieldwie obenlabel
predictive_brier, predictive_log_loss, predictive_rankingpositivebeliebiger JSON-Werttrue, oder der des Blocks
dieselbenfieldAusgabefeldscore, oder predictive.score_field
dieselbenexpected_fielderwartetes Feldlabel, oder der des Blocks
predictive_log_lossclipZahl in (0, 0.5)erforderlich

Ein prädiktiver Evaluator, der positive, field oder expected_field nicht angibt, übernimmt sie aus dem predictive:-Block; ein Wert, den er angibt, bleibt erhalten.

predictive

FeldTypStandard
label_fieldStringlabel
score_fieldStringscore
expected_fieldStringlabel
positivebeliebiger JSON-Werttrue
calibration_binsGanzzahl, mindestens 110
thresholdsListe von Zahlenleer
averagemacro oder microfehlt: kein Aggregat

metrics

Jedes Evaluator-Kriterium ist bereits eine Metrik. Ein metrics:-Eintrag fügt eine weitere hinzu, unterschieden durch type.

typeFelderWas es ist
quantileid, source, quantile in (0, 1)Ein Quantil von latency_ms, input_tokens, output_tokens, cost_usd, agent_steps oder agent_tool_calls.
rankingid, criterion, statistic: roc_auc oder average_precisionEine Statistik über die Reihenfolge der Scores eines Ranking-Kriteriums.
human_score, human_preferenceidAbgewiesen: Noch liest keine zugelassene Methode diese Labels.
cost_per_acceptedid, criterion, cost_ceiling_usd, cost_ceiling_sourceAbgewiesen, bis ihre Anbindung durch ein Audit zugelassen ist.
# 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

Die Release-Policy: welche Regeln entscheiden und welche Entscheidungen blockieren. Weggelassene Einstellungen behalten ihre Standardwerte, sodass eine Policy, die nur ihre Regeln nennt, weiterhin auf FAIL, INSUFFICIENT_EVIDENCE und MANUAL_REVIEW blockiert.

# release.yaml
version: 1
rules:
  - id: label_accuracy
    metric: correct_label
    min: 0.8
FeldTypStandardWas es ist
version11Version des Dateiformats.
confidence_levelWahrscheinlichkeit0.95Das Niveau jedes Intervalls, das eine Regel liest.
block_onListe von EntscheidungszuständenFAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEWZustände, die das Gate blockieren lassen und den Exit-Code setzen.
warn_onListe von EntscheidungszuständenleerZustände, die warnen, ohne zu blockieren. Darf sich nicht mit block_on überschneiden.
block_on_partial_runBooleantrueOb ein nicht abgeschlossener Lauf blockiert, mit Exit 5.
require_validated_evaluatorsBooleantrueOb eine Regel über einem Modell-Judge ihre Entscheidung zurückhält, bis der Judge gegen menschliche Labels validiert ist. Deterministische Evaluatoren sind ausgenommen.
minimum_evaluator_agreementZahl in [0, 1]fehltDie Übereinstimmung mit menschlichen Labels, die ein Judge mit seiner unteren Schranke erreichen muss, bevor er validiert werden darf.
maximum_evaluator_biasZahl in (0, 1]fehltWie weit die Bestehensrate eines Judges von der der Menschen entfernt liegen darf, bevor er validiert werden darf.
allow_approximate_methodsBooleanfalseOb eine Regel auf einem Intervall entscheiden darf, das die Engine als approximativ markiert (das geclusterte binäre Intervall). Sonst liest sie MANUAL_REVIEW.
min_clustersGanzzahl, mindestens 1020Bei weniger Clustern liest eine geclusterte Regel INSUFFICIENT_EVIDENCE.
difference_methodbounded_paired_difference@1 oder conditional_exact_paired_difference@1fehlt: die ersteWelche zugelassene Methode eine gepaarte Differenz binärer Raten begrenzt.
early_stoppingBooleanfalseFälle in Batches ausführen und stoppen, sobald jede Regel entschieden ist. Siehe Gating.
early_stopping_seedGanzzahl, 0 oder mehrfehltDer Seed der Fallreihenfolge.
early_stopping_batch_sizeGanzzahl, mindestens 125Fälle pro Batch.
rulesListeerforderlich, mindestens eineDie Regeln. Siehe unten.
familiesListeleerRegeln, deren falsche FAILs gemeinsam kontrolliert werden.
review_ruleMappingfehltAbgewiesen: Die Anbindung ist noch nicht zugelassen.

rules

Eine Liste enthält beide Arten. Eine Laufregel nimmt genau eines von min, max oder max_failures. Eine Vergleichsregel nennt ihre kind und entscheidet eine Differenz zwischen zwei Läufen; siehe Vergleichsregeln.

FeldTypStandardGilt für
idStringerforderlichalle
metriceine Metrik-ID oder ein Kriteriumerforderlichalle
kindinterval_threshold, observed_count, superiority, non_inferiority, equivalencefür Laufregeln abgeleitetalle
minZahlfehltLaufregeln: PASS, wenn die untere Schranke des Intervalls mindestens diesen Wert hat
maxZahlfehltLaufregeln: PASS, wenn die obere Schranke des Intervalls höchstens diesen Wert hat
max_failuresGanzzahl, 0 oder mehrfehltobserved_count: eine Zählung über die ausgeführte Suite, kein Intervall
marginZahl über 0, in den Einheiten der Metrikfehltnon_inferiority und equivalence; bei superiority abgewiesen
directionmin oder maxminnur non_inferiority: ob höher oder niedriger besser ist
max_missing_fractionZahl in [0, 1]fehltIntervall- und Vergleichsregeln
requires_manual_reviewBooleanfalsealle: Die Regel liest immer MANUAL_REVIEW
scopeglobal oder ein SliceglobalIntervall- und Vergleichsregeln
min_supportGanzzahl, mindestens 1fehltVergleichsregeln auf einem Slice

families

FeldTypStandard
idStringerforderlich
correctionholmholm
rulesListe von Regel-IDserforderlich, mindestens eine
# 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

Artefaktarten

Ein Artefakt ist ein typisierter Datensatz, den ein System neben seine Ausgabe schreibt, etwa was es abgerufen hat. Eine Art ist ein kleingeschriebener Name mit optionaler Version, passend zu ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. Evaluatoren, die ein Artefakt brauchen, benennen es, und ein Lauf, dessen System eine erforderliche Art nicht deklariert, wird vor dem Start abgewiesen, statt jeden Fall als fehlend zu zählen.

ArtGeschrieben vonVerlangt von
retrieval/v1current_case().retrieval(...), einem @rag_system oder http.artifactshit_rate, recall, mrr, ndcg
context/v1current_case().context(...) oder einem @rag_systemcitation_validity, groundedness_judge, citation_support_judge
citations/v1current_case().citations(...) oder einem @rag_systemcitation_validity, citation_support_judge
agent_trajectory/v1current_case().agent_trajectory(...)jedem agent_*-Evaluator und den Quellen agent_steps und agent_tool_calls
conversation/v1current_case().artifact(CONVERSATION, ...)ConversationCompleted, ConversationJudge
stage_timings/v1einem @rag_systemkeinem; neben der Latenz angezeigt

Ein Callable-System deklariert die Arten, die es aufzeichnet, in records: (oder @system(records=...)); ein HTTP-System in http.artifacts; ein gestuftes RAG-System zeichnet seine eigenen auf.

Versionen, Cache-Schlüssel und Invalidierung

Oloproof verwendet Arbeit wieder, deren Eingaben sich nicht geändert haben, und entscheidet anhand von Inhalts-Digests, was "unverändert" bedeutet. Jeder wird von der Engine berechnet und mit dem Lauf aufgezeichnet.

DatensatzWiederverwendet, wenn diese identisch sind
Systemversionname, version, config und ein Code-Digest: der Modulquelltext eines Callables (oder jede von code_paths erfasste Datei), bei einem HTTP-System url, method, output_path und artifacts
Ausführungdie Systemversion, der input des Falls und der Replikat-Index. Nur erfolgreiche Ausführungen werden wiederverwendet.
Urteildie Evaluatorversion (ihr Typ und jede Einstellung) und ein Digest jedes Feldes, das er liest, wie in der Evaluator-Tabelle aufgeführt
Analyseder Analyseplan, die Metrik, das Konfidenzniveau, der Suite-Digest und jede Eingabe, die sie gezählt hat
Gatejede Analyse, der Policy-Digest, ob der Lauf abgeschlossen wurde, und der wirksame Status jedes Evaluators, den die Entscheidungen anführen

Was Oloproof nicht sehen kann, müssen Sie deklarieren:

  • Das Verhalten eines HTTP-Systems liegt auf dem Server. Ändern Sie system.version, wann immer sich ändert, was hinter der URL steht, sonst steht eine alte gecachte Ausgabe für das neue System.
  • Die Hilfsmodule eines Callables werden nur gehasht, wenn code_paths sie erfasst. Ohne das ändert das Bearbeiten eines Hilfsmoduls die Version nicht.
  • Eine Methode oder ein aufrufbares Objekt muss eine Version deklarieren, und die Version muss sich ändern, wenn sich der Zustand des Objekts ändert.
  • Ein RAG-Index wird durch index_version identifiziert; ändern Sie sie, wenn der Index neu gebaut wird.
  • Die Identität eines Modell-Judges sind seine Einstellungen, nicht die Gewichte des Providers. Wenn ein Provider das Modell hinter demselben Namen aktualisiert, erkennt der Cache das nicht.
  • Ein eigener @evaluator hasht die Moduldatei, die ihn definiert, und seine Urteile werden über Läufe hinweg nur wiederverwendet, wenn er cacheable=True deklariert. Eingebaute Rubrik-Judges sind cachebar; deterministische Evaluatoren werden neu berechnet, was günstig ist.

Gecachte Arbeit liegt im lokalen Store des Projekts, .oloproof/store.sqlite neben oloproof.yaml (oder unter OLOPROOF_HOME). Das Löschen des Stores verwirft jeden Cache und jeden Lauf. In einem gehosteten Workspace verwendet die Engine gecachte Ausführungen, Urteile oder Analysen nicht wieder, weil ein Push sie schreiben kann; sie berechnet neu.