Handleidingen
Referentie voor resultaten en uitvoering
Wat een run naar een HTTP-systeem stuurt en terugverwacht, hoe elke case in de noemer van een metriek terechtkomt, de beslissingstoestanden en de redencodes die ze verklaren, de exitcodes, en welke gegevens lokaal blijven of naar een gehoste workspace gaan. Voor de ideeën erachter lees je Kernbegrippen; voor de beleidsvelden lees je de Configuratiereferentie.
Het contract van een HTTP-systeem
Een HTTP-systeem (system.http in oloproof.yaml) wordt één keer per case aangeroepen, en één keer per replicaat.
| Aspect | Gedrag |
|---|---|
| Verzoek | Standaard POST (GET en PUT worden geaccepteerd). De body is de input-waarde van de case als JSON. |
| Headers en authenticatie | Er is niets te configureren. Het verzoek draagt alleen de standaardwaarden van de HTTP-client. Een endpoint dat een sleutel nodig heeft, hoort achter een Python-systeem (een callable) dat die toevoegt. |
| Antwoord | Moet JSON zijn. output_path kiest de output via een pad met punten, zoals result.answer; zonder dat pad is de hele body de output. Een ontbrekend output_path-veld wordt voor die case vastgelegd als uitvoeringsfout. |
| Artefacten | Elk http.artifacts-item leest een pad met punten uit het antwoord. Een gedeclareerd veld dat in een antwoord ontbreekt is een contractfout, en de run stopt met exit 2. |
| Timeout | http.timeout_s per verzoek, standaard 30 seconden. |
| Nieuwe pogingen | Timeouts, verbindingsfouten en HTTP 408, 429 en 5xx worden opnieuw geprobeerd, tot vier pogingen in totaal, met exponentiële backoff met jitter die Retry-After respecteert. Andere 4xx-antwoorden worden niet opnieuw geprobeerd. |
| Na de laatste poging | De uitvoering van de case wordt als fout vastgelegd en de case telt als ontbrekend (of als mislukt, onder on_execution_error: fail). De run gaat door. |
| Gelijktijdigheid | Hooguit concurrency.system verzoeken tegelijk, standaard 8. |
De URL, methode, het outputpad en de artefacttoewijzing gaan mee in de versie van het systeem, maar wat de server doet niet. Wijzig system.version telkens als het gedrag van de server verandert; zie de Configuratiereferentie voor de reden.
Drie verschillende woordenschatten
Een resultaat kent drie soorten toestand, en ze vervangen elkaar nooit.
| Soort | Waarden | Beantwoordt |
|---|---|---|
| Beslissingstoestand | PASS, FAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEW | Wat het bewijs zegt over één regel. |
| Uitvoeringstoestand | Runstatus RUN_ERROR of CANCELLED; volledigheid van de run PARTIAL; uitvoering van een case ERROR of TIMEOUT | Wat er met de run of met de aanroep van één case gebeurde. Geen kwaliteitsresultaat. |
| Releaseactie | ALLOW, WARN, BLOCK | Wat je beleid met elke beslissing doet: toestanden in block_on blokkeren, toestanden in warn_on waarschuwen, de rest laat door. |
Een run die normaal eindigt is DECIDED, of DECIDED_EARLY als vroeg stoppen hem beëindigde. Een run die door Ctrl-C of het annuleren van een taak wordt onderbroken is CANCELLED; een run waarvan het harnas een fout opwierp is RUN_ERROR. Beide laten de run PARTIAL, bewaren de cases die klaar waren, en laten de volgende run hun gecachete records hergebruiken. Zie Fouten.
Voor een minimumdrempel T en een interval [L, U] is een regel PASS als L >= T, FAIL als U < T, en anders INSUFFICIENT_EVIDENCE. Een maximumdrempel is symmetrisch. Voordat een regel het interval leest, controleert hij of hij überhaupt moet beslissen: eerst de redenen voor MANUAL_REVIEW, dan die voor INSUFFICIENT_EVIDENCE. Het eerste niveau met een reden beslist, en noemt elke reden die het vond.
Redencodes
Elke beslissing draagt een of meer redencodes.
MANUAL_REVIEW
| Code | Betekenis |
|---|---|
| policy_requires_review | De regel zet requires_manual_review: true. |
| unsupported_method | Er bestaat voor deze metriek in deze situatie geen toegelaten interval. Zie hieronder. |
| unsupported_dependence_structure | De suite declareert clusters (group_id) en geen toegelaten methode behandelt die voor deze metriek. |
| approximate_method_not_permitted | Het enige interval is benaderend, en het beleid zet allow_approximate_methods: true niet. |
| evaluator_retired | Een evaluator achter de metriek is uit dienst genomen. |
INSUFFICIENT_EVIDENCE
| Code | Betekenis |
|---|---|
| no_observations | Voor deze metriek is geen enkele case waargenomen. |
| missingness_exceeds_policy | Er ontbreken meer van de in aanmerking komende cases dan de max_missing_fraction van de regel toestaat. |
| missingness_unbounded | De methode laat ontbrekende cases vallen in plaats van ze te begrenzen, en de regel declareert geen max_missing_fraction. |
| evaluator_not_validated | Een modeljudge achter de metriek is niet gevalideerd tegen menselijke labels, en require_validated_evaluators staat aan (de standaard). |
| evaluator_recalibration_required | De judge is gevalideerd op een geserveerd model waar de oordelen van deze run niet vandaan kwamen. |
| interval_unavailable | De metriek heeft geen interval om te lezen. |
| insufficient_clusters | Minder clusters dan de min_clusters van het beleid. |
| interval_monte_carlo_uncertain | De drempel valt binnen de simulatieonzekerheid van een geclusterde grens. |
| interval_overlaps_threshold | Het interval bevat de drempel. Meer cases zouden het smaller maken. |
| interval_unbounded | Het interval heeft geen grens aan de kant die de regel leest. |
| missing_could_change_outcome | Een observed_count-regel: de ontbrekende cases zouden de mislukkingen voorbij max_failures kunnen brengen. |
| interval_overlaps_zero, interval_overlaps_margin, interval_overlaps_margins | Een vergelijking waarvan het verschilinterval nul of een marge overspant. |
| insufficient_support | Een vergelijkingsregel op een slice met minder cases dan zijn min_support. |
| family_correction_withheld | Een regel in een families:-item waarvoor de Holm-correctie eerder stopte. |
PASS en FAIL
| Code | Toestand |
|---|---|
| lower_bound_meets_minimum, upper_bound_meets_maximum | PASS |
| upper_bound_below_minimum, lower_bound_above_maximum | FAIL |
| observed_failures_within_limit | PASS |
| observed_failures_exceed_limit | FAIL |
| difference_above_zero, lower_bound_above_margin, interval_within_margins | PASS (vergelijking) |
| difference_below_zero, upper_bound_below_margin, interval_outside_margins | FAIL (vergelijking) |
| cost_ceiling_exceeded | Genoemd naast de toestand van een kostenregel waarvan een vastgelegde uitvoering het gedeclareerde plafond overschreed |
Alleen in een gehoste workspace
Een workspace die zelf over een gepushte run beslist, kan een beslissing achterhouden met ppi_not_verified (hij heeft het interval waarop de beslissing rust niet geverifieerd), execution_not_verified (de outputs kwamen niet van een geregistreerde runner) of workspace_cannot_decide (hij heeft geen kopie van het beleid, of kon het bewijs niet lezen). Zie Gating.
Hoe elke case in de noemer komt
Elke metriek rapporteert vier aantallen: n_total (cases in de suite), n_eligible, n_observed en n_missing, met n_eligible = n_observed + n_missing. Cases buiten n_eligible staan onder exclusions, met een reden.
| Wat er met de case gebeurde | Telt als | In de noemer |
|---|---|---|
| De evaluator gaf geslaagd of mislukt | waargenomen, succes of mislukking | ja |
| De evaluator verklaarde zichzelf niet van toepassing (bijvoorbeeld: geen verwachte waarde om mee te vergelijken) | uitgesloten, met de reden | nee |
| De aanroep van het systeem gaf een fout of timeout | ontbrekend, of mislukking onder on_execution_error: fail | ja |
| De evaluator wierp een fout op, of het antwoord van een judge was niet te lezen | ontbrekend | ja |
| De case draaide nooit omdat de run werd onderbroken | ontbrekend, en de run is PARTIAL | ja |
Een ontbrekende case wordt begrensd, niet weggelaten. Voor een slagingspercentage behandelt de ondergrens van het interval elke ontbrekende case als mislukking en de bovengrens als succes, dus een run met veel ontbrekende cases heeft een breed interval dat geen veeleisende regel kan halen; een begrensd gemiddelde vult op dezelfde manier de uiteinden van zijn gedeclareerde bereik in. Een methode die ontbrekende cases niet kan begrenzen (een rangschikkingsstatistiek, bijvoorbeeld) laat ze vallen en legt die aanname vast, en een regel erover leest missingness_unbounded totdat hij max_missing_fraction declareert.
Een observed_count-regel telt mislukkingen over de uitgevoerde suite en leest geen interval. Hij slaagt alleen als de waargenomen mislukkingen plus elke ontbrekende case nog binnen max_failures passen.
Metrieken zonder toegelaten interval
Een regel beslist alleen op een interval waarvan de methode door een audit is toegelaten. Waar er geen bestaat, wordt de metriek nog steeds berekend en getoond, en een regel erover leent geen ongevalideerde methode:
| Situatie | Wat een regel erover leest |
|---|---|
| Een score-metriek (gemiddelde) zonder gedeclareerd bereik, zoals een eigen score-evaluator zonder score_range | MANUAL_REVIEW, unsupported_method |
| Een gemiddelde-, kwantiel-, rangschikkings- of kostenmetriek op een suite die group_id declareert | MANUAL_REVIEW, unsupported_dependence_structure |
| Een slagingspercentage op een geclusterde suite | een benaderend interval: MANUAL_REVIEW tenzij allow_approximate_methods: true, daarna de clustercontroles hierboven |
| Een kwantiel- of rangschikkingsmetriek met replicates boven 1 | MANUAL_REVIEW, unsupported_method |
| Elke metriek op een suite met zowel group_id als replicaten | MANUAL_REVIEW, unsupported_dependence_structure |
| Een vergelijking op een geclusterde suite | MANUAL_REVIEW |
| Een slice onder min_slice_support | geen interval, maar slices bereiken de gate nooit |
| human_score-, human_preference- of cost_per_accepted-metrieken | geweigerd bij het lezen van het bestand, exit 2 |
Exitcodes
oloproof gate, oloproof run met een beleid, en de andere commando's die beslissen gebruiken allemaal dezelfde codes.
| Code | Betekenis |
|---|---|
| 0 | Niets waarop het beleid blokkeert: elke regel slaagde, of de regels die dat niet deden vallen buiten block_on. |
| 1 | Een regel in block_on mislukte. |
| 2 | De configuratie of aanroep was fout, of een systeem brak zijn contract; er is niets beslist. |
| 3 | Een regel in block_on las INSUFFICIENT_EVIDENCE. |
| 4 | Een regel in block_on las MANUAL_REVIEW. |
| 5 | De run is niet voltooid en block_on_partial_run staat aan (de standaard). |
Als er meerdere van toepassing zijn, is de gerapporteerde code de eerste van 1, 5, 4, 3. Een toestand die buiten block_on blijft kan de exitcode niet veranderen: met block_on: [FAIL] en warn_on: [INSUFFICIENT_EVIDENCE] waarschuwt een onbesliste regel en eindigt de gate met 0. Exit 0 betekent dus alleen dat er niets gebeurde waarop je beleid blokkeert, niet dat elke regel slaagde. Zie Gating.
Waar het werk draait en waar de gegevens heen gaan
Lokaal, de standaard
oloproof run, oloproof gate en de SDK draaien op je eigen machine. Elk record (cases, outputs, artefacten, oordelen, metrieken en beslissingen) wordt geschreven naar .oloproof/store.sqlite naast oloproof.yaml, of onder OLOPROOF_HOME als die is gezet. Er wordt niets naar Oloproof gestuurd. Het enige netwerkverkeer is wat je configuratie veroorzaakt: aanroepen naar de URL van je HTTP-systeem, en aanroepen die een modeljudge of modelclassifier naar zijn provider doet, die de beoordeelde caseinhoud ontvangt en je ervoor factureert.
Pushen naar een gehoste workspace
oloproof push stuurt het bewijs van een run naar de workspace die je met oloproof login hebt verbonden. Standaard stuurt het metrieken, intervallen, beslissingen en geaggregeerde slices, en van elk record de identiteit, status, tijden en verbruik, maar niet de inhoud. Ruwe inhoud wordt veld voor veld geredigeerd voordat er iets de machine verlaat, en een geredigeerd record zegt welke categorieën zijn achtergehouden. Een categorie gaat alleen mee als egress: in oloproof.yaml hem noemt:
| Categorie | Wat ze omvat |
|---|---|
| raw_inputs | Scenario-inputs, verwachte waarden en casemetadata: de rijen van de dataset |
| raw_outputs | Wat het geteste systeem voor elke case teruggaf |
| judge_rationales | De tekst waarin een judge een oordeel uitlegt, die de output citeert |
| artifacts | Retrievalcontext, citaties en trajecten die tijdens een run zijn vastgelegd |
| error_detail | Foutmeldingen en details, die vaak de input letterlijk bevatten |
| system_config | De gedeclareerde configuratie van het geteste systeem en van zijn evaluators |
| label_notes | De notitie die iemand naast een label schreef, die vaak de output citeert |
| span_names | Trace-, span-, tool- en agentnamen die een instrumentatie vastlegde |
Recorddigests worden na redactie niet opnieuw berekend, dus een gehost record noemt nog steeds het oorspronkelijke bewijs, dat op je machine blijft. Redactie is geen versleuteling, en een metriek over een heel kleine slice kan de cases erachter nog steeds herkenbaar maken.
Als reviewers cases labelen in de gehoste reviewwachtrij, haalt hun browser de caseinhoud op bij oloproof collect dat aan jouw kant draait; die gaat niet door de workspace. Providersleutels die een workspace gebruikt worden opgeslagen met oloproof credentials set, en oloproof credentials list toont hun namen, nooit hun waarden. Een beheerde job draait op een worker die Oloproof beheert en die je Python-code niet uitvoert; oloproof job rapporteert het resultaat en eindigt op de gate ervan.
In een gehoste workspace hergebruikt de engine nooit gecachete uitvoeringen, oordelen of analyses, omdat een push die caches kan beschrijven; hij berekent ze opnieuw.