الانتقال إلى المحتوى

الأدلة الإرشادية

مرجع التهيئة

كل حقل في oloproof.yaml وrelease.yaml، مع نوعه وقيمته الافتراضية والقيم التي يقبلها ومثال عليه، مأخوذًا من النماذج التي تقرأ الملفين. استخدمه للبحث عن حقل؛ واقرأ صفحتَي البدء السريع والبوابة لتتعلم سير العمل.

يُتحقَّق من الملفين قبل تشغيل أي شيء. فالحقل المجهول، أو الحقل المكتوب خطأً، أو القيمة من نوع خاطئ، خطأ تهيئة ويخرج الأمر بالرمز 2 دون تنفيذ أي حالة. ولكلا الملفين مخطط JSON Schema، يمكن لمحرر يقرأ JSON Schema أن يستخدمه للإكمال التلقائي. وتكتبهما الحزمة المثبّتة، مع مخططات النتائج، في schemas/v1/ تحت المجلد الحالي: python -m oloproof_core.models.schema_export (والاثنان هما project_config.schema.json وrelease_policy.schema.json).

في الجداول أدناه، تعني "مطلوب" أن الملف يُرفض دون الحقل؛ وأي حقل آخر يعرض القيمة المستخدمة حين يُترك.

نظرة سريعة على oloproof.yaml

مشروع صغير كامل. يشغّل دالة Python محليًا، ولا يحتاج إلى شبكة ولا إلى مفاتيح، وهو الشكل الذي ينشئه 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

الحقول العليا

الحقلالنوعالافتراضيما هو
version11نسخة تنسيق الملف. لا توجد إلا 1.
projectسلسلة نصيةمطلوباسم المشروع، يُعرض في التقارير ويُستخدم عند الإرسال.
datasetمسارمطلوبملف مجموعة الاختبار، JSONL، نسبةً إلى المشروع. صفوفه موصوفة في مجموعات الاختبار.
systemتعيينمطلوبالنظام قيد الاختبار. انظر أدناه.
concurrencyتعيينsystem: 8، judge: 4عدد استدعاءات النظام واستدعاءات الحَكَم التي تجري في آن واحد.
evaluatorsقائمةمطلوب، واحد على الأقلما يُقاس على كل حالة. لكل إدخال type.
metricsقائمةفارغمقاييس إضافية تتجاوز المقياس الذي يمثّله أصلًا كل معيار مُقيِّم.
predictiveتعيينغائبأين يوجد وسم المُصنِّف ودرجته والحقيقة. انظر النماذج التنبؤية.
slicesقائمة سلاسل نصيةفارغشرائح استكشافية: metadata.<key>، أو relevant_position، أو context_truncated. ولا تبلغ البوابة أبدًا. انظر الشرائح.
min_slice_supportعدد صحيح، 1 على الأقل30دون هذا العدد من الحالات المؤهَّلة تعرض الشريحة تقديرها دون فترة.
replicatesعدد صحيح، 1 على الأقل1قِس كل حالة هذا العدد من المرات. تبقى الحالة هي الوحدة: تُجمَّع التكرارات داخلها قبل حساب أي فترة.
pricingقائمةفارغما تدفعه لكل مليون رمز، بحسب النموذج. ومن دونه تُبلَّغ التكلفة بالرموز ولا تُبلَّغ بالدولار أبدًا.
egressقائمة سلاسل نصيةفارغأي محتوى خام يجوز لـ oloproof push إرساله إلى مساحة عمل مستضافة. انظر النتائج والتنفيذ.

concurrency

الحقلالنوعالافتراضي
systemعدد صحيح، 1 على الأقل8
judgeعدد صحيح، 1 على الأقل4

إدخالات pricing

لا يأتي Oloproof بجدول أسعار. يسمّي كل إدخال نموذجًا تمامًا كما يسمّيه model: في المُقيِّم.

الحقلالنوعالافتراضي
modelسلسلة نصيةمطلوب
input_per_mtokرقم، 0 أو أكثرمطلوب
output_per_mtokرقم، 0 أو أكثرمطلوب
# 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

يحتاج النظام إلى واحد بالضبط من callable أو http أو rag.

الحقلالنوعالافتراضيما هو
nameسلسلة نصيةمطلوباسم النظام. جزء من هوية نسخته.
versionسلسلة نصيةغائبتسميتك لهذه النسخة. مطلوب لنظام HTTP. جزء من هويته، فتغييره يُبطل عمليات التنفيذ المخزّنة مؤقتًا.
callablemodule:attributeغائبدالة Python، متزامنة أو غير متزامنة. تتلقى input الحالة وتعيد المُخرَج.
httpتعيينغائبنقطة نهاية تُستدعى مرة لكل حالة. انظر أدناه.
ragتعيينغائبصنف RAG مرحلي مُعلَن بـ @rag_system. انظر أدناه.
configتعيينفارغإعدادات حرة تُسجَّل مع نسخة النظام. وتغييرها يغيّر النسخة.
code_pathsقائمة أنماط globفارغملفات مصدرية تدخل محتوياتها في نسخة نظام قابل للاستدعاء. ومن دونه لا تُحسب إلا بصمة وحدة الكائن القابل للاستدعاء نفسها.
timeout_sرقم أكبر من 0120المهلة لكل استدعاء لنظام قابل للاستدعاء. ونظام HTTP يستخدم http.timeout_s بدلًا منه.
recordsقائمة أنواع مُخرَجات فنيةفارغأنواع المُخرَجات الفنية التي يسجّلها نظام قابل للاستدعاء، مثل retrieval/v1. يُرفض على نظام HTTP أو RAG.

system.http

الحقلالنوعالافتراضيما هو
urlسلسلة نصيةمطلوبأين تُرسَل كل حالة.
methodGET أو POST أو PUTPOSTطريقة HTTP.
output_pathمسار منقوطغائبأي حقل في استجابة JSON هو المُخرَج، مثل result.answer. وغيابه يعني الجسم كله.
artifactsتعيين من النوع إلى مسار منقوطفارغحقول الاستجابة التي تُسجَّل مُخرَجات فنية، مثل retrieval/v1: debug.retrieval.
versionسلسلة نصيةغائبيُستخدم نسخةً للنظام حين يغيب system.version. ويحتاج نظام HTTP إلى أحدهما.
timeout_sرقم أكبر من 030المهلة لكل طلب.
# 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

عقد الطلب والاستجابة، وما يحدث عند انتهاء المهلة وأخطاء HTTP، موجودان في النتائج والتنفيذ.

system.rag

الحقلالنوعالافتراضيما هو
objectmodule:attributeمطلوبالصنف المُعلَن بـ @rag_system، أو نسخة منه.
depthعدد صحيح، 1 على الأقلقيمة الصنفعدد المقاطع التي يعيدها الاسترجاع.
top_kعدد صحيح، 1 على الأقلقيمة الصنفعدد ما يبلغ التوليد منها.
token_budgetعدد صحيح، 1 على الأقلقيمة الصنفحد للرموز على السياق. يحتاج إلى count_tokens(passage) في الصنف.
index_versionسلسلة نصيةقيمة الصنفجزء من هوية الاسترجاع. غيّره كلما أُعيد بناء الفهرس.

الإعدادات المعطاة هنا تتجاوز ما يعلنه الصنف. ويسجّل النظام المرحلي مُخرَجاته الفنية retrieval/v1 وcontext/v1 وcitations/v1 بنفسه، لذا يُرفض records بجانبه. انظر RAG.

evaluators

يأخذ كل إدخال type وهذين الحقلين المشتركين:

الحقلالنوعالافتراضيما هو
criterionسلسلة نصيةمطلوب ما لم يكن للنوع قيمة افتراضيةاسم ما يُقاس. كل معيار مقياس، ويسمّيه metric: في القاعدة.
on_execution_errormissing أو failmissingبماذا تُحتسب الحالة التي أخفق استدعاء نظامها لهذا المعيار. يُبقيها missing في المقام غير مرصودة؛ ويحتسبها fail إخفاقًا.

لا ينطبق fail إلا على مُقيِّمات النجاح/الإخفاق؛ ومُقيِّم الدرجة معه خطأ تهيئة. وon_execution_error حقل في YAML؛ ولا تأخذ أصناف المُقيِّمات في SDK وسيطًا كهذا، وتُحتسب الحالة التي وقع فيها خطأ مفقودة.

أنواع المُقيِّمات

يسرد "يقرأ" ما يعتمد عليه حكم المُقيِّم، وهو أيضًا مفتاح حكمه المخزَّن مؤقتًا. ويسمّي "SDK" الصنف في oloproof.evaluators.

type في YAMLيقرأSDKيحتاج إلى شبكة أو مفتاح
exact_matchoutput، expectedExactMatchلا
containsoutput، expectedContainsلا
regexoutputRegexلا
json_schemaoutputJsonSchemaلا
rubric_judgeinput، output، expectedRubricJudgeنعم، مزوِّد نماذج
model_classifieroutput (أو الحقل الذي يسمّيه text)، واختياريًا premiseYAML فقطنعم، خادم متوافق مع TEI
probability_judgeالحالة والمُخرَجYAML فقطنعم، مزوِّد متوافق مع OpenAI يعيد لوغاريتمات الاحتمالات
cascadeكمرحلتيهYAML فقطنعم
hit_rate، recall، mrr، ndcgartifacts.retrieval، expectedHitRate، Recall، MRR، NDCGلا
citation_validityartifacts.citations، artifacts.contextCitationValidityلا
groundedness_judgeinput، output، artifacts.contextGroundednessنعم
citation_support_judgeinput، output، artifacts.context، artifacts.citationsCitationSupportنعم
agent_max_stepsartifacts.agent_trajectoryAgentMaxStepsلا
agent_tool_calledartifacts.agent_trajectoryAgentToolCalledلا
agent_no_tool_loopartifacts.agent_trajectoryAgentNoToolLoopلا
agent_tool_sequenceartifacts.agent_trajectory، expectedAgentToolSequenceلا
agent_no_undeclared_toolartifacts.agent_trajectory، expectedAgentNoUndeclaredToolلا
agent_constraints_satisfiedartifacts.agent_trajectoryAgentConstraintsSatisfiedلا
agent_routeartifacts.agent_trajectoryAgentRouteلا
agent_tool_permissionsartifacts.agent_trajectoryAgentToolPermissionsلا
agent_max_handoffsartifacts.agent_trajectoryAgentMaxHandoffsلا
predictive_correctحقل الوسم في output وexpectedPredictiveCorrectلا
predictive_recallكما أعلاهPredictiveRecallلا
predictive_precisionكما أعلاهPredictivePrecisionلا
predictive_absolute_errorكما أعلاه، رقميًاAbsoluteErrorلا
predictive_brierحقل الدرجة في output، ووسم expectedBrierلا
predictive_log_lossكما أعلاهLogLossلا
predictive_rankingكما أعلاهPredictiveRankingلا
لا نوع في YAMLartifacts.conversationConversationCompleted (SDK فقط)لا
لا نوع في YAMLexpected، artifacts.conversationConversationJudge (SDK فقط)نعم
لا نوع في YAMLما تعلنه أنت@evaluator وCustomEvaluator (SDK فقط)بحسب شيفرتك

الحَكَم الذي يستدعي نموذجًا مستضافًا يرسل محتوى الحالة إلى ذلك المزوِّد ويحاسبه عليه. وتُقرأ المفاتيح من متغير البيئة المسمّى في api_key_env؛ ولا يخزّنها Oloproof في هذه الملفات أبدًا.

المُقيِّمات الحتمية

النوعالحقلالنوعالافتراضي
exact_matchfieldمسار منقوط في المُخرَجغائب: المُخرَج كله
exact_matchexpected_fieldمسار منقوط في expectedغائب: مثل field
exact_matchstripقيمة منطقيةtrue
exact_matchcasefoldقيمة منطقيةfalse
containsfield، expected_fieldكما في exact_matchغائب
regexpatternتعبير نمطيمطلوب
regexfieldمسار منقوطغائب
regexpass_ifmatch أو no_matchmatch
json_schemaschemaمخطط JSON Schema مضمَّن، أو مسار إلى ملف JSON نسبةً إلى المشروعمطلوب
json_schemafieldمسار منقوطغائب

حُكّام النماذج

يشترك rubric_judge وgroundedness_judge وcitation_support_judge في هذه الحقول. ويتطلب rubric_judge واحدًا بالضبط من rubric_file أو rubric_text؛ ويأخذ حَكَما RAG واحدًا على الأكثر ويستخدمان خلاف ذلك معيارًا مدمجًا. وcriterion فيهما افتراضيًا groundedness وcitation_support.

الحقلالنوعالافتراضي
provideranthropic أو openai أو openai_compatibleمطلوب
modelسلسلة نصيةمطلوب
rubric_fileمسارغائب
rubric_textسلسلة نصيةغائب
api_key_envاسم متغير بيئةANTHROPIC_API_KEY أو OPENAI_API_KEY
base_urlURLالخاص بالمزوِّد
temperatureرقم0
max_tokensعدد صحيح، 1 على الأقل512
timeout_sرقم أكبر من 060

يطرح probability_judge سؤالًا ذا نوع ويقرأ احتمالات النموذج:

الحقلالنوعالافتراضي
provideropenai أو openai_compatibleمطلوب
modelسلسلة نصيةمطلوب
questionسلسلة نصيةمطلوب
formyes_no أو choice أو scoreمطلوب
min_probabilityرقم في (0, 1]مطلوب
optionsتعيين من الإجابة إلى الوصفلـ choice
pass_optionsقائمة إجاباتلـ choice
levelsتعيين من المستوى إلى الوصف، الأدنى أولًالـ score
pass_at_leastمستوىلـ score
calibrationslope (أكبر من 0)، intercept، from_versionغائب
api_key_env، base_urlكما أعلاهغائب
timeout_sرقم أكبر من 060

يشغّل cascade حَكَمًا رخيصًا أولًا ويصعّد الحالات غير المؤكدة:

الحقلالنوعالافتراضي
firstإدخال probability_judgeمطلوب
thenإدخال rubric_judge أو probability_judgeمطلوب
escalate_betweenاحتمالانمطلوب

تحكم المرحلتان على criterion الخاص بالتتالي نفسه؛ والمرحلة التي تسمّي معيارًا مختلفًا تُرفض.

يعطي model_classifier درجة للنص بنموذج مُدرَّب على خادم متوافق مع TEI:

الحقلالنوعالافتراضي
modelسلسلة نصيةمطلوب
base_urlURLمطلوب
labelوسم المُصنِّف الذي يُقرأمطلوب
min_score أو max_scoreرقم في [0, 1]، واحد بالضبطمطلوب
textأي حقل يُصنَّفoutput
premiseنص ثانٍ، لمُصنِّفات الأزواجغائب
api_key_envاسم متغير بيئةغائب
timeout_sرقم أكبر من 030

مُقيِّمات RAG

النوعالحقلالنوعالافتراضي
hit_rate، recall، mrr، ndcgkعدد صحيح، 1 على الأقل5 لـ hit_rate وrecall، و10 لـ mrr وndcg
hit_rate، recall، mrr، ndcgrelevance_unitdoc أو chunkdoc
hit_rate، recall، mrr، ndcgcriterionسلسلة نصية<type>_at_<k>، مثل hit_rate_at_5
citation_validityrequire_citationsقيمة منطقيةfalse
citation_validitycriterionسلسلة نصيةcitations_valid

مُقيِّمات الوكلاء

النوعالحقلالنوعالافتراضي
agent_max_stepsmax_stepsعدد صحيح، 1 على الأقلمطلوب
agent_tool_calledtool_nameسلسلة نصيةمطلوب
agent_tool_calledmin_callsعدد صحيح، 1 على الأقل1
agent_no_tool_loopmax_repeatsعدد صحيح، 1 على الأقل2
agent_tool_sequenceorderedقيمة منطقيةtrue
agent_constraints_satisfiedconstraintsقائمة أسماء قيودفارغ
agent_tool_permissionspermissionsتعيين من الوكيل إلى الأدوات المسموح بهامطلوب
agent_max_handoffsmax_handoffsعدد صحيح، 0 أو أكثرمطلوب

لكل نوع من أنواع الوكلاء criterion افتراضي، لذا يجوز تركه: اسم نوعه نفسه، أو اسم مبني من إعداده (agent_steps_le_8، agent_tool_lookup_called، agent_handoffs_le_2). انظر الوكلاء.

المُقيِّمات التنبؤية

النوعالحقلالنوعالافتراضي
predictive_correct، predictive_recall، predictive_precisionpositiveأي قيمة JSONtrue، أو قيمة كتلة predictive:
كذلكfieldحقل المُخرَجlabel، أو predictive.label_field
كذلكexpected_fieldالحقل المتوقعlabel، أو predictive.expected_field
predictive_absolute_errortarget_rangeرقمانمطلوب
predictive_absolute_errorfield، expected_fieldكما أعلاهlabel
predictive_brier، predictive_log_loss، predictive_rankingpositiveأي قيمة JSONtrue، أو قيمة الكتلة
كذلكfieldحقل المُخرَجscore، أو predictive.score_field
كذلكexpected_fieldالحقل المتوقعlabel، أو قيمة الكتلة
predictive_log_lossclipرقم في (0, 0.5)مطلوب

المُقيِّم التنبؤي الذي لا يكتب positive أو field أو expected_field يأخذها من كتلة predictive:؛ والقيمة التي يكتبها تُحفظ.

predictive

الحقلالنوعالافتراضي
label_fieldسلسلة نصيةlabel
score_fieldسلسلة نصيةscore
expected_fieldسلسلة نصيةlabel
positiveأي قيمة JSONtrue
calibration_binsعدد صحيح، 1 على الأقل10
thresholdsقائمة أرقامفارغ
averagemacro أو microغائب: لا تجميع

metrics

كل معيار مُقيِّم هو مقياس أصلًا. ويضيف إدخال metrics: مقياسًا آخر، يُميَّز بـ type.

typeالحقولما هو
quantileid، source، quantile في (0, 1)مِئين لـ latency_ms أو input_tokens أو output_tokens أو cost_usd أو agent_steps أو agent_tool_calls.
rankingid، criterion، statistic: roc_auc أو average_precisionإحصاء على ترتيب درجات معيار ترتيبي.
human_score، human_preferenceidمرفوض: لا توجد بعد طريقة معتمدة تقرأ هذه الوسوم.
cost_per_acceptedid، criterion، cost_ceiling_usd، cost_ceiling_sourceمرفوض حتى تُعتمد توصيلاته بالتدقيق.
# 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

سياسة الإصدار: أي القواعد تقرر، وأي القرارات تحجب. الإعدادات المتروكة تحتفظ بقيمها الافتراضية، لذا فالسياسة التي لا تسمّي إلا قواعدها تظل تحجب على FAIL وINSUFFICIENT_EVIDENCE وMANUAL_REVIEW.

# release.yaml
version: 1
rules:
  - id: label_accuracy
    metric: correct_label
    min: 0.8
الحقلالنوعالافتراضيما هو
version11نسخة تنسيق الملف.
confidence_levelاحتمال0.95مستوى كل فترة تقرؤها قاعدة.
block_onقائمة حالات قرارFAIL، INSUFFICIENT_EVIDENCE، MANUAL_REVIEWالحالات التي تجعل البوابة تحجب، وتحدد رمز الخروج.
warn_onقائمة حالات قرارفارغحالات تحذّر دون أن تحجب. يجب ألّا تتداخل مع block_on.
block_on_partial_runقيمة منطقيةtrueهل يحجب التشغيل الذي لم يكتمل، برمز الخروج 5.
require_validated_evaluatorsقيمة منطقيةtrueهل تحجب القاعدة المبنية على حَكَم نموذج قرارها حتى يُتحقَّق من الحَكَم مقابل وسوم بشرية. والمُقيِّمات الحتمية مستثناة.
minimum_evaluator_agreementرقم في [0, 1]غائبالاتفاق مع الوسوم البشرية الذي يجب أن يبلغه الحَكَم، بحده الأدنى، قبل أن يُتحقَّق منه.
maximum_evaluator_biasرقم في (0, 1]غائبإلى أي حد يجوز أن يبتعد معدل نجاح الحَكَم عن معدل الأشخاص قبل أن يُتحقَّق منه.
allow_approximate_methodsقيمة منطقيةfalseهل يجوز للقاعدة أن تقرر بناءً على فترة يَسِمها المحرك بأنها تقريبية (الفترة الثنائية العنقودية). وإلا فإنها تقرأ MANUAL_REVIEW.
min_clustersعدد صحيح، 10 على الأقل20بعناقيد أقل من هذا تقرأ القاعدة العنقودية INSUFFICIENT_EVIDENCE.
difference_methodbounded_paired_difference@1 أو conditional_exact_paired_difference@1غائب: الأولىأي طريقة معتمدة تحصر فرقًا مزدوجًا بين معدلين ثنائيين.
early_stoppingقيمة منطقيةfalseشغّل الحالات على دفعات وتوقف حين تُحسم كل قاعدة. انظر البوابة.
early_stopping_seedعدد صحيح، 0 أو أكثرغائببذرة ترتيب الحالات.
early_stopping_batch_sizeعدد صحيح، 1 على الأقل25الحالات في كل دفعة.
rulesقائمةمطلوب، واحدة على الأقلالقواعد. انظر أدناه.
familiesقائمةفارغقواعد تُضبط حالات FAIL الكاذبة فيها معًا.
review_ruleتعيينغائبمرفوض: لم تُعتمد توصيلاته بعد.

rules

قائمة واحدة تحمل النوعين. تأخذ قاعدة التشغيل واحدًا بالضبط من min أو max أو max_failures. وتسمّي قاعدة المقارنة kind الخاص بها وتحسم فرقًا بين تشغيلين؛ انظر قواعد المقارنة.

الحقلالنوعالافتراضيينطبق على
idسلسلة نصيةمطلوبالكل
metricمعرّف مقياس أو معيارمطلوبالكل
kindinterval_threshold، observed_count، superiority، non_inferiority، equivalenceيُستنتج لقواعد التشغيلالكل
minرقمغائبقواعد التشغيل: PASS حين لا يقل الحد الأدنى للفترة عن هذا
maxرقمغائبقواعد التشغيل: PASS حين لا يزيد الحد الأعلى للفترة عن هذا
max_failuresعدد صحيح، 0 أو أكثرغائبobserved_count: عدٌّ على مجموعة الاختبار المنفَّذة، دون فترة
marginرقم أكبر من 0، بوحدات المقياسغائبnon_inferiority وequivalence؛ يُرفض على superiority
directionmin أو maxminnon_inferiority فقط: هل الأعلى أفضل أم الأدنى
max_missing_fractionرقم في [0, 1]غائبقواعد الفترة والمقارنة
requires_manual_reviewقيمة منطقيةfalseالكل: تقرأ القاعدة دائمًا MANUAL_REVIEW
scopeglobal أو شريحةglobalقواعد الفترة والمقارنة
min_supportعدد صحيح، 1 على الأقلغائبقواعد المقارنة على شريحة

families

الحقلالنوعالافتراضي
idسلسلة نصيةمطلوب
correctionholmholm
rulesقائمة معرّفات قواعدمطلوب، واحدة على الأقل
# 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

أنواع المُخرَجات الفنية

المُخرَج الفني سجل ذو نوع يكتبه النظام بجانب مُخرَجه، مثل ما استرجعه. والنوع اسم بحروف صغيرة مع نسخة اختيارية، يطابق ^[a-z][a-z0-9_]*(/v[1-9][0-9]*)?$. والمُقيِّمات التي تحتاج إلى مُخرَج فني تسمّيه، والتشغيل الذي لا يعلن نظامه نوعًا مطلوبًا يُرفض قبل أن يبدأ، بدلًا من احتساب كل حالة مفقودة.

النوعيكتبهيتطلبه
retrieval/v1current_case().retrieval(...)، أو @rag_system، أو http.artifactshit_rate، recall، mrr، ndcg
context/v1current_case().context(...) أو @rag_systemcitation_validity، groundedness_judge، citation_support_judge
citations/v1current_case().citations(...) أو @rag_systemcitation_validity، citation_support_judge
agent_trajectory/v1current_case().agent_trajectory(...)كل مُقيِّم agent_*، والمصدران agent_steps وagent_tool_calls
conversation/v1current_case().artifact(CONVERSATION, ...)ConversationCompleted، ConversationJudge
stage_timings/v1@rag_systemلا شيء؛ يُعرض بجانب زمن الاستجابة

يعلن النظام القابل للاستدعاء الأنواع التي يسجّلها في records: (أو @system(records=...))؛ ونظام HTTP في http.artifacts؛ والنظام المرحلي لـ RAG يسجّل أنواعه بنفسه.

النسخ ومفاتيح التخزين المؤقت والإبطال

يعيد Oloproof استخدام العمل الذي لم تتغير مدخلاته، ويحدد معنى "لم يتغير" من بصمات المحتوى. ويحسب المحرك كلًّا منها ويسجّلها مع التشغيل.

السجليُعاد استخدامه حين تتطابق هذه
نسخة النظامname، version، config، وبصمة الشيفرة: مصدر وحدة الكائن القابل للاستدعاء (أو كل ملف يطابقه code_paths)، وurl وmethod وoutput_path وartifacts لنظام HTTP
التنفيذنسخة النظام، وinput الحالة، وفهرس التكرار. لا يُعاد استخدام إلا عمليات التنفيذ الناجحة.
الحكمنسخة المُقيِّم (نوعه وكل إعداد له) وبصمة كل حقل يقرؤه، كما في جدول المُقيِّمات
التحليلخطة التحليل، والمقياس، ومستوى الثقة، وبصمة مجموعة الاختبار، وكل مُدخَل احتسبه
البوابةكل تحليل، وبصمة السياسة، وهل اكتمل التشغيل، والحالة الفعلية لكل مُقيِّم تستشهد به القرارات

ما لا يستطيع Oloproof رؤيته عليك أنت أن تعلنه:

  • سلوك نظام HTTP موجود على الخادم. غيّر system.version كلما تغيّر ما وراء عنوان URL، وإلا فسيمثّل مُخرَج قديم مخزَّن مؤقتًا النظامَ الجديد.
  • لا تُحسب بصمة الوحدات المساعدة للكائن القابل للاستدعاء إلا حين يطابقها code_paths. ومن دونه، لا يغيّر تعديل وحدة مساعدة النسخة.
  • يجب أن يعلن التابع أو الكائن القابل للاستدعاء نسخة، ويجب أن تتغير النسخة حين تتغير حالة الكائن.
  • يُعرَّف فهرس RAG بـ index_version؛ غيّره حين يُعاد بناء الفهرس.
  • هوية حَكَم النموذج هي إعداداته، لا أوزان المزوِّد. وتحديث المزوِّد للنموذج خلف الاسم نفسه لا يكتشفه التخزين المؤقت.
  • يحسب @evaluator المخصّص بصمة ملف الوحدة الذي يعرّفه، ولا يُعاد استخدام أحكامه عبر التشغيلات إلا حين يعلن cacheable=True. وحُكّام المعايير المدمجة قابلة للتخزين المؤقت؛ أما المُقيِّمات الحتمية فيُعاد حسابها، وهذا رخيص.

يقيم العمل المخزَّن مؤقتًا في المخزن المحلي للمشروع، .oloproof/store.sqlite بجانب oloproof.yaml (أو تحت OLOPROOF_HOME). وحذف المخزن يتخلص من كل ذاكرة تخزين مؤقت ومن كل تشغيل. وفي مساحة العمل المستضافة لا يعيد المحرك استخدام عمليات التنفيذ أو الأحكام أو التحليلات المخزّنة مؤقتًا، لأن الإرسال يستطيع كتابتها؛ بل يعيد الحساب.