
Jeeves nima?
Jeeves — tuzilgan qaror qabul qilishdan oldin fikrlash zanjirini yaratadigan Jev uslubidagi klassifikator. U LoRA adapterlari, pointer head, kalibrlangan ehtimollar va block-4 diffusion drafter bilan Qwen3.5-9B asosida qurilgan. Repozitoriyda model va drafter kodi, o‘qitish pipeline'i, baholash vositalari hamda o‘qitish, ishlab chiqish va test ma’lumotlari mavjud.
Loyiha oddiy erkin shakldagi matn yaratishdan ko‘prog‘ini talab qiladigan ilovalar uchun mo‘ljallangan. Umumiy holat va bir yoki bir nechta savol berilganda, Jeeves Jev bilan mos API orqali tuzilgan javoblar va ehtimollarni qaytaradi. Bir nechta savolni bir xil so‘rovda qayta ishlash mumkin.
Asosiy imkoniyatlar
- Uch xil qaror turi: ikkilik
noul, kategoriyalichoiceva tartibliscoresavollar. - Qarorlardan oldingi fikrlash: model fikrlash zanjirini yaratishi, so‘ng mavjud variantlarni baholash uchun pointer head’dan foydalanishi mumkin.
- Kalibrlangan chiqish: yakuniy variant ehtimollari ishlab chiqish to‘plamida moslangan temperatura orqali hisoblanadi.
- Jev bilan mos API: mavjud Jev mijozlari asosiy so‘rov formatini yuborishi mumkin, Jeeves’ga xos parametrlar esa fikrlashni boshqaradi.
- Python SDK: kiritilgan
sdk/paketi Jev’ningtypesafe-sdkpaketi o‘rniga bevosita ishlatilishi mumkin. - Diffusion drafting: block-4 drafter fikrlash zanjirini yaratishni tezlashtiradi va Qwen3.5’ning Gated DeltaNet qatlamlarini qo‘llab-quvvatlaydi.
- O‘qitish kodi: repozitoriyda SFT, CISPO, kalibrlash, baholash, eksport va drafter’ni o‘qitish komponentlari mavjud.
2 560 token bilan cheklangan greedy fikrlashda README yopiq va domen tashqarisidagi test to‘plamida 0.889 aniqlik, 231 ta ommaviy JevBench topshirig‘ida esa 0.935 natijani qayd etadi. Biroq uning bilimga oid natijalari MMLU va MMLU-Pro’da Jev’dan past, shuning uchun benchmark’ga mosligi vazifaga bog‘liq.
Talablar
Sizga Python 3.12 va CUDA GPU kerak. Inference implementatsiyasidagi FP8 yadrosi Hopper GPU’ni talab qiladi. Quyidagi buyruqlarni repozitoriy ildiz katalogidan ishga tushiring.
Bog‘liqliklarni o‘rnating
pip install -r requirements.txt
Chiqarilgan og‘irliklarni yuklab oling
E’lon qilingan 9B checkpoint va uning block-4 drafter’ini yuklab olish uchun Hugging Face CLI’dan foydalaning:
hf download PostHog/jeeves --local-dir jeeves-weights
Chiqarilgan modelni Hugging Face orqali olish mumkin.
API serverini ishga tushiring
python -m inference.serve --model jeeves-weights --drafter jeeves-weights/drafter_k4.safetensors --port 8009
Bu Jev bilan mos xizmatni 8009 portida ishga tushiradi. Birga kiritilgan Python mijoz sukut bo‘yicha http://127.0.0.1:8009 manzilidan foydalanadi, API kalitini talab qilmaydi va javob uchun 120 soniyagacha kutadi.
Birinchi qaror so‘rovingizni yuboring
/v1/systemone endpoint’i state, questions xaritasi va ixtiyoriy inference boshqaruv parametrlarini qabul qiladi. Quyidagi so‘rov Jeeves’dan mijoz muammosini tegishli bo‘limga yo‘naltirish, eskalatsiya zarurligini aniqlash va mijozning norozilik darajasini baholashni so‘raydi.
curl -s localhost:8009/v1/systemone \
-H 'content-type: application/json' \
-d '{
"state": "Shoes arrived two weeks late and in the wrong size. Also I see two charges on my card.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"returns": "Exchanges, refunds, wrong or damaged items",
"shipping": "Delivery status, delays, lost packages",
"billing": "Charges, invoices, payment problems"
}
},
"escalate": {
"type": "noul",
"instructions": "Does this need urgent human attention?"
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
},
"options": {"max_think": 512}
}'
Savol turlarini tushunish
choice: nomlangan variantlardan birini tanlaydi va tanlangan kalit, ehtimollar hamda ishonch darajasini qaytaradi.noul: ha/yo‘q uslubidagi qarorni ifodalaydi va raqamlinoulqiymatini qaytaradi.score: tartiblangan yorliqlar ro‘yxatini baholaydi va raqamli ball, legenda, ehtimollar hamda ishonch darajasini qaytaradi.
Javobda foydalanish haqidagi ma’lumotlar, jumladan kirish, chiqish va fikrlash tokenlari soni hamda umumiy kechikish vaqti ham mavjud. Bir xil so‘rovdagi savollar parallel ravishda fikrlashi mumkin.
Jeeves’dan Python orqali foydalaning
Birga kiritilgan SDK’ni o‘rnating
pip install ./sdk
Tiplangan savollarni yarating
from jeeves_sdk import Choice, Noul, Score, TypeSafeClient
with TypeSafeClient() as client:
result = client.system_one(
state="I was charged twice. Please help.",
questions={
"billing": Noul(
instructions="Is this about billing?"
),
"tone": Choice(
instructions="What is the tone?",
criteria={"calm": None, "angry": None},
),
"urgency": Score(
instructions="How urgent is this?",
criteria=["can wait", "this week", "today"],
),
},
max_think=768,
return_reasoning=True,
)
print(result.nouls["billing"].noul)
print(result.choices["tone"].choice)
print(result.scores["urgency"].score)
print(result.reasoning["tone"].text)
TypeSafeClient qaytarilgan qiymatlarni savol turiga ko‘ra guruhlaydi. return_reasoning=True o‘rnatilsa, har bir savolga oid mulohaza matni ham mavjud bo‘ladi. README’da ta’kidlanishicha, trening davomida til izchilligi uchun mukofotdan foydalanilmagan, shuning uchun mulohaza zanjirlarini talqin qilish har doim ham oson emas.
Boshqa serverga ulanish
Mijoz sukut bo‘yicha http://127.0.0.1:8009 manzilidan foydalanadi. Server boshqa manzilda ishlayotgan bo‘lsa, JEEVES_BASE_URL muhit o‘zgaruvchisini o‘rnating.
export JEEVES_BASE_URL=http://your-server:8009
Mulohaza yuritish va kechikishni boshqarish
Ixtiyoriy options obyekti mulohaza yuritishni boshqarish uchun to‘rtta parametrni taqdim etadi. Mos server bayroqlari server miqyosidagi standart qiymatlarni belgilashi mumkin.
think: sukut bo‘yichatrue. Mulohaza zanjirini hosil qilmasdan, to‘g‘ridan-to‘g‘ri prompt asosida javob berish uchun unifalsega o‘rnating.max_think: sukut bo‘yicha2560. Model javob berishidan oldin har bir mulohaza zanjirini ko‘rsatilgan tokenlar sonida qisqartiradi.nothink_threshold: sukut bo‘yichanull. Sozlanganda, Jeeves mulohaza yuritmaslik ishonchi chegaraga teng yoki undan yuqori bo‘lsa, mulohaza yuritishni chetlab o‘tadi.return_reasoning: sukut bo‘yichafalse. Javobga mulohaza matnini qo‘shish uchun uni yoqing.
Kechikish profilini tanlash
README’dagi 325 ta savoldan iborat ishlab chiqish baholashida to‘liq mulohaza yuritish 0.825 aniqlikni, o‘rtacha 1,138 ta mulohaza tokenini va 3.3 soniyalik median kechikishni ta’minladi. max_think qiymatini 768, nothink_threshold qiymatini 0.9 qilib o‘rnatish 0.806 aniqlik, o‘rtacha 344 ta mulohaza tokeni va 2.0 soniyalik median kechikishni berdi. Mulohaza yuritishni o‘chirish esa taxminan 0.3 soniyada 0.775 aniqlikni ta’minladi.
Amaliy muvozanatli konfiguratsiya:
{
"options": {
"max_think": 768,
"nothink_threshold": 0.9,
"return_reasoning": false
}
}
To‘liq mulohaza yuritishda kechikishning yuqori qismi uzun: xabar qilingan p90 ko‘rsatkichi 17.1 soniya. Javob vaqti muhim bo‘lsa, qisqaroq zanjirlardan yoki ishonchga asoslangan mulohaza yuritishdan foydalaning.
Jeeves qanday qaror qabul qiladi
Jeeves holat, savol ko‘rsatmalari va javob variantlarini Qwen tokenayzeridagi kam uchraydigan tokenlar bilan formatlaydi. So‘ngra think markeridan boshlanadigan mulohaza zanjirini hosil qiladi. Mulohazadan keyin qaror markeridan oldin savol va variantlar takrorlanadi.
Pointer head qaror markeridagi so‘rov proyeksiyasi bilan har bir variant chegarasidagi kalit proyeksiyalari o‘rtasidagi masshtablangan skalyar ko‘paytmani hisoblaydi. Softmax bu ballarni ehtimollarga aylantiradi, rivojlantirish to‘plamida moslangan temperatura esa ularni kalibrlaydi. README’dagi ablyatsiyalarga ko‘ra, maxsus prompt tokenlarini oddiy yorliqlar bilan almashtirish yoki mulohazadan keyingi takroriy savolni olib tashlash unumdorlikni pasaytirgan.
Diffusion drafter
Ixtiyoriy drafter spekulyativ dekodlash orqali mulohaza hosil qilishni tezlashtiradi. U Orthrus diffusion yondashuvini Qwen3.5’ning Gated DeltaNet qatlamlariga moslashtirib, mask tokenlariga konvolyutsiyadan keyingi kalitlar va qiymatlarga o‘zaro e’tibor qaratish imkonini beradi.
Hisobotga ko‘ra, bitta savol uchun o‘tkazuvchanlik oddiy graphed greedy dekodlashdagi soniyasiga 109 ta zanjir tokenidan 4-blok bilan soniyasiga 176 ta tokengacha oshadi. 8-blok soniyasiga 193 ta tokenga yetadi, biroq bir nechta savol paketlanganda ham arzon bo‘lgani sababli 4-blok sukut bo‘yicha tanlanadi. 4-blok bilan paketlangan sakkizta savol jami soniyasiga taxminan 960 ta zanjir tokeniga yetadi.
O‘zingiz o‘qitgan checkpoint’ni ishga tushirish
Jeeves trening vaqtida LoRA’dan foydalanadi. O‘qitilgan checkpoint’ni ishga tushirishdan oldin uni mustaqil modelga birlashtiring va mos drafter faylini ko‘rsating:
python export.py runs/cispo/final --out runs/fused
python -m inference.serve \
--model runs/fused \
--drafter runs/drafter_k4/drafter.safetensors \
--port 8009
Trening jarayonini qayta tiklash
Ma’lumotlar to‘plamlarini tayyorlash
Tayyorlash skriptlari prep/public.py faylida belgilangan reviziyalardan Hugging Face’dagi ommaviy ma’lumotlar to‘plamlarini yuklab oladi. Har bir manba ma’lumotlar to‘plami o‘z litsenziyasi ostida qoladi.
python -m prep.prep
Trening va baholashni ishga tushirish
Hujjatlashtirilgan qayta tiklash jarayonida sakkizta GPU ishlatiladi. Unda nazorat ostida nozik sozlash, CISPO treningi, test va JevBench baholashi, model eksporti, zanjir hosil qilish hamda 4-blok drafter treningi bajariladi.
torchrun --nproc_per_node 8 train.py sft --run-dir runs/sft
torchrun --nproc_per_node 8 train.py cispo \
--run-dir runs/cispo \
--init runs/sft/final
torchrun --nproc_per_node 8 test.py runs/cispo/final
torchrun --nproc_per_node 8 jevbench.py runs/cispo/final
python export.py runs/cispo/final --out runs/fused
torchrun --nproc_per_node 8 -m drafter.gen --model runs/fused
torchrun --nproc_per_node 8 train.py drafter \
--model runs/fused \
--block 4 \
--run-dir runs/drafter_k4
Nashr etilgan retsept avval 12 ta ochiq ma’lumotlar to‘plami va sintetik siyosat ma’lumotlaridagi 19,126 ta savol ustida ikki SFT epochini bajaradi. Keyin har bir savol uchun sakkizta rollout, 1 harorat va 2,560 tokenlik fikrlash chegarasi bilan CISPO qo‘llanadi. Keyingi qadamlar to‘yingan reinforcement learning havzasida pointer head’ni haddan tashqari keskinlashtirgani sababli, rejalashtirilgan 624 qadamlik jadvalning 402-qadamida trening to‘xtatildi. Nihoyat, ishlab chiqish to‘plamida bitta kalibrlash harorati moslashtirildi.
Kengaytirilgan foydalanish bo‘yicha maslahatlar
- Bog‘liq qarorlarni guruhlang. Bir nechta savolni bitta umumiy holatga joylashtiring, shunda server ularning fikrlash zanjirlarini parallel qayta ishlay oladi.
- Oson holatlar uchun to‘g‘ridan-to‘g‘ri javoblardan foydalaning. Fikrlashni fikrlamasdan olingan ishonchlilik darajasi siz tanlagan chegaradan past bo‘lgan qarorlar uchun saqlab qolish maqsadida
nothink_thresholdni sozlang. - Kechikishga sezgir xizmatlarda fikrlashni cheklang. Tezlik va aniqlik o‘rtasida muvozanat istasangiz, fikrlashni butunlay o‘chirish o‘rniga
max_thinkqiymatini pasaytiring. - Fikrlashni tanlab qaytaring. Ilovaga matn kerak bo‘lmasa,
return_reasoningni o‘chirilgan holda qoldiring, ayniqsa zanjirlar oson talqin qilinishi kafolatlanmagani sababli. - O‘z sohangizda baholang. Jeeves loyihaning test bo‘linmasi va ochiq JevBench darajalarida kuchli natija ko‘rsatadi, biroq xabar qilingan MMLU va MMLU-Pro bilim baholashlarida Jevdan ortda qoladi.
- Taqqoslashlarni ehtiyotkorlik bilan talqin qiling. JevBench’dan tashqarida e’lon qilingan Kev va Jev taqqoslashlarida bir xil asosiy manbalardan olingan, ammo turli elementlardan foydalanilgan.
Xulosa
Jeeves tuzilgan Jev uslubidagi chiqishlarni test vaqtida fikrlash, kalibrlangan ehtimollar va tezlashtirilgan zanjir yaratish bilan birlashtiradi. Chiqarilgan og‘irliklar va Jev bilan mos HTTP endpoint’dan boshlang, tiplashtirilgan ilova kodi uchun Python SDK’dan foydalaning hamda aniqlik va kechikishni muvozanatlash uchun max_think va nothink_threshold ni sozlang. Chuqurroq moslashtirish uchun repozitoriyda to‘liq SFT, CISPO, kalibrlash, eksport va drafter pipeline’lari taqdim etilgan.
