ترفند logprobs: LLM بهجای مدل بینایی
خلاصهٔ کاملتر
نویسنده تو یه پست شخصی میگه که از پروژهٔ Jev و نسخههای self-host شدهاش مثل OpenJev به یه ترفند رسیده: خوندن logprobs مدل، یعنی لگاریتم احتمالی که مدل به هر توکن ممکن میده. به گفتهٔ خودش این ترفند برای بعضیها قدیمیه و تو cookbook خود OpenAI هم توضیح داده شده، ولی برای او تازه بوده.
روش کار سادهست. سؤال رو با گزینههای حرفدار مینویسی و آخرش میگی فقط حرف بهترین گزینه رو بده:
State: My order arrived broken and I want a refund.
Question: Which team should handle this?
[A] billing
[B] shipping
[C] returns
Answer with the letter of the best option only.بعد تو درخواست Chat Completions این چند پارامتر رو اضافه میکنی تا مدل فقط یک توکن بده و احتمال گزینههای دیگه رو هم برگردونه:
{
"max_completion_tokens": 1,
"logprobs": true,
"top_logprobs": 20
}نتیجهش اینه که برای هر گزینه یه عدد داری، پس میتونی جوابهای مطمئن رو از مرزیها جدا کنی. تولید فقط یک توکن هم خیلی سریعه، هرچند پردازش ورودی هنوز وقت میبره. هر سؤال یه درخواست جداست، ولی اگه بکاند پشتیبانی کنه میشه پیشوند state مشترک رو با KV-cache دوباره استفاده کرد.
بخش جالب اینه که با مدلهای بینایی هم کار میکنه. فرمت درخواست Jev فعلاً فقط state متنی و JSON رو توضیح میده، پس نویسنده برای آزمایشهای محلی خودش یه فیلد attachments برای تصویر اضافه کرده. مثالش فریم وبکم رو بهصورت JPEG با کدگذاری base64 میفرسته و یه جدول چاپ میکنه: آدم تو تصویر هست، داخل ساختمونیم یا بیرون، و صحنه چقدر روشنه.
با Gemma 4 12B روی RTX 3090 و سه سؤال برای هر فریم، حدود ۱ فریم در ثانیه گرفته. همون اسکریپت روی gpt-6-luna از OpenAI حدود ۰.۲ فریم در ثانیه داده، که به حدس خودش بهخاطر اینه که برای هر سؤال و هر فریم یه اتصال جدا باز میشه. نویسنده قبول داره مدلهای تخصصی بینایی خیلی بهینهترن، ولی چیزی که دوستش داره انعطافه: شرط جدید رو فقط با یه جملهٔ ساده توصیف میکنی.
نکات کلیدی:
- با max_completion_tokens: 1 و فعالکردن logprobs، جواب مدل به یه توزیع احتمال روی گزینهها تبدیل میشه
- هر سؤال یه درخواست جداست، ولی پیشوند state مشترک قابل KV-cache شدنه
- فیلد attachments افزودهٔ خود نویسندهست و تو فرمت رسمی Jev نیست
- Gemma 4 12B روی RTX 3090 حدود ۱ فریم در ثانیه با ۳ سؤال؛ gpt-6-luna حدود ۰.۲
- llama.cpp برای گرفتن logprobs از Chat Completions استفاده میکنه و OpenAI از Responses




