چیتشیت
ابزارهای تصمیمگیری، تغییرات و توتوریال
Decision, Change and Tutorial Tools
چهار ابزار مبتنی بر شواهد: امتیازدهی به گزینهها، گزارش تغییرات صفحات، بررسی توتوریالهای API و مقایسهی اجرای مدلهای محلی.
فهرست مطالب
چهار پروژه در کنار یکدیگر
مقایسه| فاکتور | کاوشگر ارزیابی تصمیمات (Decision Tradeoff Explorer) | گزارش تغییرات وب (Web Change Brief) | اجراکنندهی توتوریال API (API Tutorial Runner) | بستر ارزیابی مدل محلی (Local Model Eval Harness) |
|---|---|---|---|---|
| زبان | Node 22.18+ | Go 1.22 یا جدیدتر | Node 22.18 یا جدیدتر | Python 3.10+ |
| ورودی | criteria، options | دو اسنپشات HTML، یا خط مبنا و URL | tutorial، fixture یا endpoint | manifest، source، labels، records |
| خروجیها | criteria.csv، decision-record.json، index.html | index.html، changes.json، baseline.json | requests.json، results.json، junit.xml، report.html | scorecard.json، reliability.html |
| گیت (شرط تایید) | گزینهی انتخابی باید واجد شرایط باشد | --accept جایگزین خط مبنا میشود | --allow-network برای اندپوینتهای واقعی | --min-accuracy با کد 2 خارج میشود |
| هرگز این کارها را نمیکند | تصمیمگیری به جای کاربر | اجرای JavaScript یا واکشی منابع پیونددادهشده | تست بار (Load testing) | دانلود یا اجرای یک مدل |
اجرای نسخهی مرجع
دستورها| دستور | عملکرد |
|---|---|
node --experimental-strip-types cli.ts fixtures/exhibition.json /tmp/decision-board | بورد تصمیمگیری را مینویسد |
python3 -m http.server 8123 --directory /tmp/decision-board | روی localhost:8123 سرو میکند؛ پس از استفاده متوقفش کنید |
go run . --before fixtures/before.html --after fixtures/after.html --url <url> --out ./web-change-output | دو اسنپشات ذخیرهشده را مقایسه میکند |
go run . --fetch <url> --baseline ./web-change-output/baseline.json --out ./next-report | یک صفحهی زنده را در برابر خط مبنا واکشی میکند |
node cli.ts sample.json output | توتوریال را روی یک مجموعهدادهی نمونه در لوپبک اجرا میکند |
python3 cli.py samples/input.json --output scorecard.json --html reliability.html | به فایل ثبتشدهی نمونه امتیاز میدهد |
python3 scripts/project_test.py <project> --all --solution --strict | به نسخهی مرجع نمره میدهد |
قوانین امتیازدهی تصمیمگیری
مفهومها- منفعت
(v - c.min) / (c.max - c.min).- هزینه
(c.max - v) / (c.max - c.min).- امتیاز
- مجموع حاصلضرب مقادیر نرمالشده در وزنها، تقسیم بر مجموع وزنها.
- مقدار ناموجود
- گزینه فاقد شرایط است، حتی اگر وزن آن 0 باشد.
- محدودیت
- یک حد سختگیرانه؛ هزینهی بالاتر از آن یا منفعت پایینتر از آن رد میشود.
- تساویها
- مرتبسازی بر اساس شناسه گزینه.
- غلبهشده
- گزینهی دیگری در تمام معیارها همتراز و در یکی برتر است.
- حساسیت
- تغییر پیوستهی یک وزن از 0 تا 1 در طی چند
steps.
گزارش تغییرات وب
معمارییک بلوک درخواست توتوریال
کدtext
# توتوریال شامل JSON درون حصار درخواست (request fence) است
{"id": "create-loan", "method": "POST", "path": "/loans",
"status": 201, # وضعیت مورد انتظار، 100..599
"capture": {"loanId": {"path": "id", "type": "number"}}} # استخراج مقادیر تایپشده
{"id": "read-loan", "method": "GET",
"path": "/loans/{{loanId}}", # فقط متغیرهای تعریفشده
"status": 200,
"assert": {"bookName": "Neighborhood Trees"}} # فیلد منسوخ، شکست میخورد
گامهای اجراکنندهی توتوریال API
گامبهگام- extractRequestsهر حصار درخواست را میخواند؛ حداکثر 20 گام مجاز است.
- CLIدر صورت نبود
endpoint، سرور لوپبک را از رویfixtureاجرا میکند. - runTutorialمقدار
{{name}}را از استخراجهای قبلی پر میکند؛ نام تعریفنشده منجر به خطا میشود. - runTutorialدرخواست را بدون بازهدایتها، با مهلت زمانی و محدودیت بایت ارسال میکند.
- runTutorialوضعیت و تمام مسیرهای
assertرا چک کرده و سپس استخراجها را ذخیره میکند. - runTutorialپس از یک شکست، گامهای بعدی رد شده و درخواستی ارسال نمیشود.
- exportResultsگزارشهای JUnit، HTML و
corrections.jsonرا برای هر خطا تولید میکند.
ثبت و مقایسهی مدل محلی
کدbash
python3 record.py samples/cases.json \ # فقط اندپوینت HTTP لوپبک
--endpoint http://127.0.0.1:11434/v1/chat/completions \
--model <model> --revision <rev> --hardware <hw> \
--output measured.json # manifest، source، labels، records
python3 cli.py measured.json --baseline samples/input.json \
--output compared.json # برچسبهای نامطابق مجموعهداده را رد میکند
python3 cli.py <recording> --min-accuracy <n> # خروج با کد 2 در صورت پایینتر بودن از گیت
فیلدهای Scorecard
مفهومها- accuracy
- پاسخ دقیق پس از یکسانسازی حروف بزرگ/کوچک و فاصلهها، روی کل برچسبها.
- coverage
- پیشبینیها تقسیم بر برچسبها.
- ece
- شکاف اطمینان در هر بازه (bin)، وزندهیشده با تعداد اعضای بازه.
- p50_ms, p95_ms
- صدکهای تاخیر بر اساس نزدیکترین رتبه.
- dataset_sha256
- هش برچسبها؛ خط مبنا باید با آن مطابقت داشته باشد.
- manifest
- به
model،model_revision،prompt_revision،hardwareوconfidence_methodنیاز دارد.
پیشفرضها و محدودیتها
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
--out | web-change-output | پوشهی گزارش مختصر وب |
MaxHTMLBytes | 2_000_000 | 2 مگابایت به ازای هر صفحه |
timeoutMs | 1500 | به ازای هر درخواست، 1 تا 30000 |
maxBytes | 65536 | محدودیت بایت پاسخ |
Request steps | 20 | حداکثر به ازای هر توتوریال |
bins | 5 | بازههای کالیبراسیون |
--min-accuracy | 0 | کد خروج 2 زیر این مقدار |
Sensitivity `steps` | 10 | 1 تا 100 |
پیامهای خطا و راهحلها
عیبیابیchosen option must be eligible- علت
- گزینه فاقد مقدار است یا از محدودیتی عبور کرده
- راهحل
- یک گزینهی دارای امتیاز را انتخاب کنید
value outside declared range- علت
- مقدار درون بازهی
minوmaxنیست - راهحل
- مقدار یا بازه را اصلاح کنید
Snapshots must refer to the same canonical URL- علت
- دو URL متفاوت
- راهحل
- اسنپشاتهای مربوط به یک صفحه را مقایسه کنید
Live fetch requires --baseline JSON- علت
--fetchبدون مشخص کردن خط مبنا- راهحل
- ابتدا حالت فایلهای ذخیرهشده را اجرا کنید
Baseline checksum mismatch- علت
- فایل خط مبنا دستکاری شده است
- راهحل
- یک خط مبنای جدید بسازید
Network endpoint requires explicit allowNetwork- علت
- اندپوینت روی لوپبک نیست
- راهحل
- پرچم
--allow-networkرا اضافه کنید
Earlier step failed; no request sent- علت
- گام قبلی با خطا مواجه شد
- راهحل
- اولین گام ناموفق را برطرف کنید
cannot compare different datasets- علت
- برچسبها با خط مبنا مغایرت دارند
- راهحل
- همان نمونهها را مجدداً ضبط کنید
نمونههای حلشده
پرسش و پاسخ- کدام گزینه در نمونهی نمایشگاهی برنده میشود؟
podsبا 0.68؛ در حالی کهopenدارای 0.67 است.- چرا
archiveرتبهبندی نشده است؟ - مقدار
flowآن null است، بنابراین فاقد شرایط است. - چه زمانی
openبرنده میشود؟ - در پیمایش وزن
access، در وزن 0.6 یا بیشتر. - چرا
read-loanناموفق میشود؟ - روی فیلد منسوخشدهی
bookNameشرط assert گذاشته است. - نمونهی ارزیابی چه امتیازی میگیرد؟
- دقت 2/3، پوشش کامل، صدک p95 معادل 200 میلیثانیه.
نکات کاربردی
نکتهها- از یک سیاست فیلتر یکسان برای هر دو اسنپشات استفاده کنید؛ عبارتهای فیلتر میتوانند تغییرات را پنهان کنند.
- خط مبنا دستنخورده باقی میماند مگر اینکه پرچم
--acceptرا وارد کنید. - وزنها اولویتهای ترجیحی هستند، نه احتمال.
- میزان اطمینان گزارششده، خوداظهاریِ مدل است؛ ECE بر اساس بازهها و تعداد نمونهها تغییر میکند.
- دستور توتوریال پس از ثبت شواهد با موفقیت پایان مییابد؛ رسیدها و گزارشها را بررسی کنید.