Przejdź do treści

Przewodniki

Dokumentacja konfiguracji

Każde pole oloproof.yaml i release.yaml, z typem, wartością domyślną, akceptowanymi wartościami i przykładem, wzięte z modeli, które czytają te pliki. Używaj jej, aby sprawdzić pole; aby poznać przebieg pracy, przeczytaj strony szybki start i bramkowanie.

Oba pliki są walidowane, zanim cokolwiek się uruchomi. Nieznane pole, błędnie zapisane pole lub wartość złego typu to błąd konfiguracji, a polecenie kończy się kodem 2 bez wykonania żadnego przypadku. Oba pliki mają schematy JSON Schema, z których edytor czytający JSON Schema może korzystać do podpowiedzi. Zainstalowany pakiet zapisuje je, razem ze schematami wyników, do schemas/v1/ w bieżącym katalogu: python -m oloproof_core.models.schema_export (te dwa to project_config.schema.json i release_policy.schema.json).

W tabelach poniżej "wymagane" oznacza, że plik bez tego pola jest odrzucany; każde inne pole pokazuje wartość używaną, gdy zostanie pominięte.

oloproof.yaml w skrócie

Mały, kompletny projekt. Uruchamia lokalnie funkcję w Pythonie, nie potrzebuje sieci ani kluczy i ma kształt, który tworzy 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

Pola najwyższego poziomu

PoleTypDomyślnieCzym jest
version11Wersja formatu pliku. Istnieje tylko 1.
projectnapiswymaganeNazwa projektu, pokazywana w raportach i używana przy wypychaniu.
datasetścieżkawymaganePlik zestawu, JSONL, względem projektu. Jego wiersze opisują Zestawy.
systemmapowaniewymaganeTestowany system. Zob. niżej.
concurrencymapowaniesystem: 8, judge: 4Ile wywołań systemu i sędziów działa jednocześnie.
evaluatorslistawymagane, co najmniej jedenCo jest mierzone dla każdego przypadku. Każdy wpis ma type.
metricslistapusteDodatkowe metryki ponad tę, którą już jest każde kryterium ewaluatora.
predictivemapowaniebrakGdzie są etykieta, wynik liczbowy i prawda klasyfikatora. Zob. Modele predykcyjne.
sliceslista napisówpusteWycinki eksploracyjne: metadata.<key>, relevant_position lub context_truncated. Nigdy nie docierają do bramki. Zob. Wycinki.
min_slice_supportliczba całkowita, co najmniej 130Poniżej tylu kwalifikujących się przypadków wycinek pokazuje estymatę, ale nie przedział.
replicatesliczba całkowita, co najmniej 11Mierz każdy przypadek tyle razy. Jednostką pozostaje przypadek: replikacje są agregowane w jego obrębie, zanim zostanie policzony jakikolwiek przedział.
pricinglistapusteIle płacisz za milion tokenów, według modelu. Bez tego koszt jest raportowany w tokenach, a nigdy w dolarach.
egresslista napisówpusteKtórą surową treść oloproof push może wysłać do hostowanego obszaru roboczego. Zob. Wyniki i wykonanie.

concurrency

PoleTypDomyślnie
systemliczba całkowita, co najmniej 18
judgeliczba całkowita, co najmniej 14

Wpisy pricing

Oloproof nie dostarcza tabeli cen. Każdy wpis nazywa model dokładnie tak, jak nazywa go model: ewaluatora.

PoleTypDomyślnie
modelnapiswymagane
input_per_mtokliczba, 0 lub więcejwymagane
output_per_mtokliczba, 0 lub więcejwymagane
# 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

System potrzebuje dokładnie jednego z callable, http lub rag.

PoleTypDomyślnieCzym jest
namenapiswymaganeNazwa systemu. Część tożsamości jego wersji.
versionnapisbrakTwoja etykieta dla tej wersji. Wymagana dla systemu HTTP. Część tożsamości, więc jej zmiana unieważnia wykonania z cache.
callablemodule:attributebrakFunkcja w Pythonie, synchroniczna lub asynchroniczna. Otrzymuje input przypadku i zwraca wynik.
httpmapowaniebrakPunkt końcowy wywoływany raz na przypadek. Zob. niżej.
ragmapowaniebrakEtapowa klasa RAG zadeklarowana przez @rag_system. Zob. niżej.
configmapowaniepusteDowolne ustawienia zapisywane z wersją systemu. Ich zmiana zmienia wersję.
code_pathslista wzorców globpustePliki źródłowe, których zawartość wchodzi do wersji systemu z funkcją wywoływalną. Bez tego hashowany jest tylko własny moduł funkcji.
timeout_sliczba powyżej 0120Limit czasu na wywołanie dla systemu z funkcją wywoływalną. System HTTP używa zamiast tego http.timeout_s.
recordslista rodzajów artefaktówpusteRodzaje artefaktów, które zapisuje system z funkcją wywoływalną, takie jak retrieval/v1. Odrzucane w systemie HTTP lub RAG.

system.http

PoleTypDomyślnieCzym jest
urlnapiswymaganeDokąd jest wysyłany każdy przypadek.
methodGET, POST lub PUTPOSTMetoda HTTP.
output_pathścieżka z kropkamibrakKtóre pole odpowiedzi JSON jest wynikiem, na przykład result.answer. Brak oznacza całą treść.
artifactsmapowanie rodzaju na ścieżkę z kropkamipustePola odpowiedzi zapisywane jako artefakty, na przykład retrieval/v1: debug.retrieval.
versionnapisbrakUżywana jako wersja systemu, gdy brak system.version. System HTTP potrzebuje jednej z tych dwóch.
timeout_sliczba powyżej 030Limit czasu na żądanie.
# 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

Kontrakt żądania i odpowiedzi oraz to, co dzieje się przy przekroczeniach limitu czasu i błędach HTTP, opisują Wyniki i wykonanie.

system.rag

PoleTypDomyślnieCzym jest
objectmodule:attributewymaganeKlasa zadeklarowana przez @rag_system lub jej instancja.
depthliczba całkowita, co najmniej 1z klasyIle fragmentów zwraca wyszukiwanie.
top_kliczba całkowita, co najmniej 1z klasyIle z nich trafia do generowania.
token_budgetliczba całkowita, co najmniej 1z klasyLimit tokenów kontekstu. Wymaga count_tokens(passage) klasy.
index_versionnapisz klasyCzęść tożsamości wyszukiwania. Zmieniaj ją przy każdej przebudowie indeksu.

Ustawienia podane tutaj nadpisują te, które deklaruje klasa. System etapowy sam zapisuje swoje artefakty retrieval/v1, context/v1 i citations/v1, więc records obok niego jest odrzucane. Zob. RAG.

evaluators

Każdy wpis przyjmuje type i te dwa wspólne pola:

PoleTypDomyślnieCzym jest
criterionnapiswymagane, chyba że typ ma wartość domyślnąNazwa tego, co jest mierzone. Każde kryterium jest metryką, a metric: reguły je nazywa.
on_execution_errormissing lub failmissingJak dla tego kryterium liczy się przypadek, którego wywołanie systemu się nie powiodło. missing zostawia go w mianowniku jako niezaobserwowany; fail liczy go jako niepowodzenie.

fail dotyczy tylko ewaluatorów pass/fail; ewaluator wyniku liczbowego z nim to błąd konfiguracji. on_execution_error to pole YAML; klasy ewaluatorów w SDK nie przyjmują takiego argumentu, a przypadek z błędem liczy się jako brakujący.

Typy ewaluatorów

"Czyta" wymienia to, od czego zależy werdykt ewaluatora, a zarazem to, czym kluczowana jest jego ocena w cache. "SDK" podaje klasę w oloproof.evaluators.

type w YAMLCzytaSDKWymaga sieci lub klucza
exact_matchoutput, expectedExactMatchnie
containsoutput, expectedContainsnie
regexoutputRegexnie
json_schemaoutputJsonSchemanie
rubric_judgeinput, output, expectedRubricJudgetak, dostawcy modelu
model_classifieroutput (lub pole wskazane przez text), opcjonalnie premisetylko YAMLtak, serwera zgodnego z TEI
probability_judgeprzypadek i wyniktylko YAMLtak, dostawcy zgodnego z OpenAI zwracającego logarytmy prawdopodobieństw
cascadejak jego dwa etapytylko YAMLtak
hit_rate, recall, mrr, ndcgartifacts.retrieval, expectedHitRate, Recall, MRR, NDCGnie
citation_validityartifacts.citations, artifacts.contextCitationValiditynie
groundedness_judgeinput, output, artifacts.contextGroundednesstak
citation_support_judgeinput, output, artifacts.context, artifacts.citationsCitationSupporttak
agent_max_stepsartifacts.agent_trajectoryAgentMaxStepsnie
agent_tool_calledartifacts.agent_trajectoryAgentToolCallednie
agent_no_tool_loopartifacts.agent_trajectoryAgentNoToolLoopnie
agent_tool_sequenceartifacts.agent_trajectory, expectedAgentToolSequencenie
agent_no_undeclared_toolartifacts.agent_trajectory, expectedAgentNoUndeclaredToolnie
agent_constraints_satisfiedartifacts.agent_trajectoryAgentConstraintsSatisfiednie
agent_routeartifacts.agent_trajectoryAgentRoutenie
agent_tool_permissionsartifacts.agent_trajectoryAgentToolPermissionsnie
agent_max_handoffsartifacts.agent_trajectoryAgentMaxHandoffsnie
predictive_correctpole etykiety w output i expectedPredictiveCorrectnie
predictive_recalljak wyżejPredictiveRecallnie
predictive_precisionjak wyżejPredictivePrecisionnie
predictive_absolute_errorjak wyżej, liczboweAbsoluteErrornie
predictive_brierpole wyniku liczbowego w output, etykieta w expectedBriernie
predictive_log_lossjak wyżejLogLossnie
predictive_rankingjak wyżejPredictiveRankingnie
brak typu YAMLartifacts.conversationConversationCompleted (tylko SDK)nie
brak typu YAMLexpected, artifacts.conversationConversationJudge (tylko SDK)tak
brak typu YAMLto, co zadeklarujesz@evaluator i CustomEvaluator (tylko SDK)zależy od Ciebie

Sędzia, który wywołuje hostowany model, wysyła treść przypadków do tego dostawcy i jest przez niego rozliczany. Klucze są czytane ze zmiennej środowiskowej wskazanej w api_key_env; Oloproof nigdy nie przechowuje ich w tych plikach.

Ewaluatory deterministyczne

TypPoleTypDomyślnie
exact_matchfieldścieżka z kropkami w wynikubrak: cały wynik
exact_matchexpected_fieldścieżka z kropkami w expectedbrak: tak samo jak field
exact_matchstripwartość logicznatrue
exact_matchcasefoldwartość logicznafalse
containsfield, expected_fieldjak exact_matchbrak
regexpatternwyrażenie regularnewymagane
regexfieldścieżka z kropkamibrak
regexpass_ifmatch lub no_matchmatch
json_schemaschemaJSON Schema w treści albo ścieżka do pliku JSON względem projektuwymagane
json_schemafieldścieżka z kropkamibrak

Sędziowie-modele

rubric_judge, groundedness_judge i citation_support_judge mają wspólne te pola. rubric_judge wymaga dokładnie jednego z rubric_file lub rubric_text; dwaj sędziowie RAG przyjmują co najwyżej jedno, a w przeciwnym razie używają wbudowanej rubryki. Ich criterion domyślnie to groundedness i citation_support.

PoleTypDomyślnie
provideranthropic, openai lub openai_compatiblewymagane
modelnapiswymagane
rubric_fileścieżkabrak
rubric_textnapisbrak
api_key_envnazwa zmiennej środowiskowejANTHROPIC_API_KEY lub OPENAI_API_KEY
base_urlURLdostawcy
temperatureliczba0
max_tokensliczba całkowita, co najmniej 1512
timeout_sliczba powyżej 060

probability_judge zadaje typowane pytanie i czyta prawdopodobieństwa modelu:

PoleTypDomyślnie
provideropenai lub openai_compatiblewymagane
modelnapiswymagane
questionnapiswymagane
formyes_no, choice lub scorewymagane
min_probabilityliczba w (0, 1]wymagane
optionsmapowanie odpowiedzi na opisdla choice
pass_optionslista odpowiedzidla choice
levelsmapowanie poziomu na opis, od najniższegodla score
pass_at_leastpoziomdla score
calibrationslope (powyżej 0), intercept, from_versionbrak
api_key_env, base_urljak wyżejbrak
timeout_sliczba powyżej 060

cascade uruchamia najpierw taniego sędziego i eskaluje niepewne przypadki:

PoleTypDomyślnie
firstwpis probability_judgewymagane
thenwpis rubric_judge lub probability_judgewymagane
escalate_betweendwa prawdopodobieństwawymagane

Etapy oceniają własne criterion kaskady; etap, który nazywa inne, jest odrzucany.

model_classifier ocenia tekst wytrenowanym modelem na serwerze zgodnym z TEI:

PoleTypDomyślnie
modelnapiswymagane
base_urlURLwymagane
labeletykieta klasyfikatora do odczytaniawymagane
min_score lub max_scoreliczba w [0, 1], dokładnie jednowymagane
textktóre pole jest klasyfikowaneoutput
premisedrugi tekst, dla klasyfikatorów parbrak
api_key_envnazwa zmiennej środowiskowejbrak
timeout_sliczba powyżej 030

Ewaluatory RAG

TypPoleTypDomyślnie
hit_rate, recall, mrr, ndcgkliczba całkowita, co najmniej 15 dla hit_rate i recall, 10 dla mrr i ndcg
hit_rate, recall, mrr, ndcgrelevance_unitdoc lub chunkdoc
hit_rate, recall, mrr, ndcgcriterionnapis<type>_at_<k>, na przykład hit_rate_at_5
citation_validityrequire_citationswartość logicznafalse
citation_validitycriterionnapiscitations_valid

Ewaluatory agentów

TypPoleTypDomyślnie
agent_max_stepsmax_stepsliczba całkowita, co najmniej 1wymagane
agent_tool_calledtool_namenapiswymagane
agent_tool_calledmin_callsliczba całkowita, co najmniej 11
agent_no_tool_loopmax_repeatsliczba całkowita, co najmniej 12
agent_tool_sequenceorderedwartość logicznatrue
agent_constraints_satisfiedconstraintslista nazw ograniczeńpuste
agent_tool_permissionspermissionsmapowanie agenta na dozwolone narzędziawymagane
agent_max_handoffsmax_handoffsliczba całkowita, 0 lub więcejwymagane

Każdy typ agenta ma domyślne criterion, więc można je pominąć: własna nazwa typu albo nazwa zbudowana z jego ustawienia (agent_steps_le_8, agent_tool_lookup_called, agent_handoffs_le_2). Zob. Agenci.

Ewaluatory predykcyjne

TypPoleTypDomyślnie
predictive_correct, predictive_recall, predictive_precisionpositivedowolna wartość JSONtrue lub z bloku predictive:
to samofieldpole wynikulabel lub predictive.label_field
to samoexpected_fieldpole oczekiwanelabel lub predictive.expected_field
predictive_absolute_errortarget_rangedwie liczbywymagane
predictive_absolute_errorfield, expected_fieldjak wyżejlabel
predictive_brier, predictive_log_loss, predictive_rankingpositivedowolna wartość JSONtrue lub z bloku
to samofieldpole wynikuscore lub predictive.score_field
to samoexpected_fieldpole oczekiwanelabel lub z bloku
predictive_log_lossclipliczba w (0, 0.5)wymagane

Ewaluator predykcyjny, który nie zapisuje positive, field ani expected_field, bierze je z bloku predictive:; wartość, którą zapisuje, zostaje zachowana.

predictive

PoleTypDomyślnie
label_fieldnapislabel
score_fieldnapisscore
expected_fieldnapislabel
positivedowolna wartość JSONtrue
calibration_binsliczba całkowita, co najmniej 110
thresholdslista liczbpuste
averagemacro lub microbrak: bez agregatu

metrics

Każde kryterium ewaluatora już jest metryką. Wpis metrics: dodaje jeszcze jedną, rozróżnianą przez type.

typePolaCzym jest
quantileid, source, quantile w (0, 1)Kwantyl latency_ms, input_tokens, output_tokens, cost_usd, agent_steps lub agent_tool_calls.
rankingid, criterion, statistic: roc_auc lub average_precisionStatystyka po kolejności wyników liczbowych kryterium rankingowego.
human_score, human_preferenceidOdrzucane: żadna przyjęta metoda nie czyta jeszcze tych etykiet.
cost_per_acceptedid, criterion, cost_ceiling_usd, cost_ceiling_sourceOdrzucane, dopóki jego podłączenie nie zostanie przyjęte po audycie.
# 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

Polityka wydań: które reguły rozstrzygają i które decyzje blokują. Pominięte ustawienia zachowują wartości domyślne, więc polityka, która nazywa tylko swoje reguły, nadal blokuje na FAIL, INSUFFICIENT_EVIDENCE i MANUAL_REVIEW.

# release.yaml
version: 1
rules:
  - id: label_accuracy
    metric: correct_label
    min: 0.8
PoleTypDomyślnieCzym jest
version11Wersja formatu pliku.
confidence_levelprawdopodobieństwo0.95Poziom każdego przedziału, który czyta reguła.
block_onlista stanów decyzjiFAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEWStany, przy których bramka blokuje i ustawia kod wyjścia.
warn_onlista stanów decyzjipusteStany, które ostrzegają bez blokowania. Nie mogą pokrywać się z block_on.
block_on_partial_runwartość logicznatrueCzy przebieg, który się nie zakończył, blokuje z kodem 5.
require_validated_evaluatorswartość logicznatrueCzy reguła na sędzi-modelu wstrzymuje decyzję, dopóki sędzia nie zostanie zwalidowany względem ludzkich etykiet. Ewaluatory deterministyczne są zwolnione.
minimum_evaluator_agreementliczba w [0, 1]brakZgodność z ludzkimi etykietami, którą sędzia musi osiągnąć dolną granicą, zanim będzie mógł zostać zwalidowany.
maximum_evaluator_biasliczba w (0, 1]brakJak daleko odsetek zaliczeń sędziego może leżeć od odsetka ludzi, zanim będzie mógł zostać zwalidowany.
allow_approximate_methodswartość logicznafalseCzy reguła może rozstrzygać na przedziale, który silnik oznacza jako przybliżony (klastrowany przedział binarny). W przeciwnym razie pokazuje MANUAL_REVIEW.
min_clustersliczba całkowita, co najmniej 1020Przy mniejszej liczbie klastrów reguła klastrowana pokazuje INSUFFICIENT_EVIDENCE.
difference_methodbounded_paired_difference@1 lub conditional_exact_paired_difference@1brak: pierwszaKtóra przyjęta metoda ogranicza sparowaną różnicę odsetków binarnych.
early_stoppingwartość logicznafalseUruchamiaj przypadki partiami i zatrzymaj się, gdy każda reguła zostanie rozstrzygnięta. Zob. Bramkowanie.
early_stopping_seedliczba całkowita, 0 lub więcejbrakZiarno kolejności przypadków.
early_stopping_batch_sizeliczba całkowita, co najmniej 125Przypadki na partię.
ruleslistawymagane, co najmniej jednaReguły. Zob. niżej.
familieslistapusteReguły, których fałszywe FAIL są kontrolowane łącznie.
review_rulemapowaniebrakOdrzucane: podłączenie nie zostało jeszcze przyjęte.

rules

Jedna lista zawiera oba rodzaje. Reguła przebiegu przyjmuje dokładnie jedno z min, max lub max_failures. Reguła porównania nazywa swój kind i rozstrzyga różnicę między dwoma przebiegami; zob. Reguły porównań.

PoleTypDomyślnieDotyczy
idnapiswymaganewszystkich
metricidentyfikator metryki lub kryteriumwymaganewszystkich
kindinterval_threshold, observed_count, superiority, non_inferiority, equivalencewywnioskowane dla reguł przebieguwszystkich
minliczbabrakreguł przebiegu: PASS, gdy dolna granica przedziału jest co najmniej taka
maxliczbabrakreguł przebiegu: PASS, gdy górna granica przedziału jest co najwyżej taka
max_failuresliczba całkowita, 0 lub więcejbrakobserved_count: liczność na wykonanym zestawie, bez przedziału
marginliczba powyżej 0, w jednostkach metrykibraknon_inferiority i equivalence; odrzucane przy superiority
directionmin lub maxmintylko non_inferiority: czy lepsza jest wyższa, czy niższa wartość
max_missing_fractionliczba w [0, 1]brakreguł przedziałowych i porównania
requires_manual_reviewwartość logicznafalsewszystkich: reguła zawsze pokazuje MANUAL_REVIEW
scopeglobal lub wycinekglobalreguł przedziałowych i porównania
min_supportliczba całkowita, co najmniej 1brakreguł porównania na wycinku

families

PoleTypDomyślnie
idnapiswymagane
correctionholmholm
ruleslista identyfikatorów regułwymagane, co najmniej jeden
# 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

Rodzaje artefaktów

Artefakt to typowany rekord, który system zapisuje obok swojego wyniku, na przykład to, co wyszukał. Rodzaj to nazwa małymi literami z opcjonalną wersją, pasująca do ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. Ewaluatory, które potrzebują artefaktu, go nazywają, a przebieg, którego system nie deklaruje wymaganego rodzaju, jest odrzucany przed startem, zamiast liczyć każdy przypadek jako brakujący.

RodzajZapisywany przezWymagany przez
retrieval/v1current_case().retrieval(...), @rag_system lub http.artifactshit_rate, recall, mrr, ndcg
context/v1current_case().context(...) lub @rag_systemcitation_validity, groundedness_judge, citation_support_judge
citations/v1current_case().citations(...) lub @rag_systemcitation_validity, citation_support_judge
agent_trajectory/v1current_case().agent_trajectory(...)każdy ewaluator agent_* oraz źródła agent_steps i agent_tool_calls
conversation/v1current_case().artifact(CONVERSATION, ...)ConversationCompleted, ConversationJudge
stage_timings/v1@rag_systemżaden; pokazywany obok opóźnienia

System z funkcją wywoływalną deklaruje zapisywane rodzaje w records: (lub @system(records=...)); system HTTP w http.artifacts; etapowy system RAG zapisuje własne.

Wersje, klucze cache i unieważnianie

Oloproof ponownie używa pracy, której wejścia się nie zmieniły, a o tym, co znaczy "bez zmian", decyduje na podstawie skrótów treści. Każdy jest liczony przez silnik i zapisywany z przebiegiem.

RekordUżywany ponownie, gdy te są identyczne
Wersja systemuname, version, config i skrót kodu: kod źródłowy modułu funkcji wywoływalnej (lub każdy plik dopasowany przez code_paths), a dla systemu HTTP jego url, method, output_path i artifacts
Wykonaniewersja systemu, input przypadku i indeks replikacji. Ponownie używane są tylko udane wykonania.
Ocenawersja ewaluatora (jego typ i każde ustawienie) oraz skrót każdego pola, które czyta, jak wymienia tabela ewaluatorów
Analizaplan analizy, metryka, poziom ufności, skrót zestawu i każde wejście, które policzyła
Bramkakażda analiza, skrót polityki, to, czy przebieg się zakończył, oraz efektywny status każdego ewaluatora, na który powołują się decyzje

To, czego Oloproof nie widzi, musisz zadeklarować sam:

  • Zachowanie systemu HTTP żyje na serwerze. Zmieniaj system.version za każdym razem, gdy zmienia się to, co jest pod URL, w przeciwnym razie stary wynik z cache będzie reprezentował nowy system.
  • Moduły pomocnicze funkcji wywoływalnej są hashowane tylko wtedy, gdy dopasowuje je code_paths. Bez tego edycja modułu pomocniczego nie zmienia wersji.
  • Metoda lub obiekt wywoływalny muszą zadeklarować wersję, a wersja musi się zmienić, gdy zmienia się stan obiektu.
  • Indeks RAG jest identyfikowany przez index_version; zmieniaj go przy przebudowie indeksu.
  • Tożsamością sędziego-modelu są jego ustawienia, a nie wagi dostawcy. Aktualizacji modelu przez dostawcę pod tą samą nazwą cache nie wykrywa.
  • Własny @evaluator hashuje plik modułu, który go definiuje, a jego oceny są ponownie używane między przebiegami tylko wtedy, gdy deklaruje cacheable=True. Wbudowani sędziowie z rubryką są cache'owalni; ewaluatory deterministyczne są liczone od nowa, co jest tanie.

Praca z cache żyje w lokalnym magazynie projektu, .oloproof/store.sqlite obok oloproof.yaml (lub pod OLOPROOF_HOME). Usunięcie magazynu odrzuca każdy cache i każdy przebieg. W hostowanym obszarze roboczym silnik nie używa ponownie wykonań, ocen ani analiz z cache, ponieważ push może je zapisywać; liczy od nowa.