Product
Jev روی وطن: پاسخی با نوع مشخص، نه یک پاراگراف
مسیریاب شما نباید مجبور به خواندن متن باشد.
By Ehsan Gazar, ۲۸ شهریور ۱۴۰۵
یک تیکت پشتیبانی میرسد و کد شما باید تصمیم بگیرد آن را به کجا بفرستد. پس از یک مدل چت میپرسید و او با یک جمله پاسخ میدهد. حالا باید برای آن جمله یک تجزیهگر نگهداری کنید.
نقطهی ضعف تجزیهگر است، نه مدل.
پاراگرافی که دور میریزید
یک کلمه خواسته بودید و پاسخ گرفتید: «به نظر میرسد این یک مشکل صورتحساب باشد.» هفتهی بعد همان مدل یک مقدمه اضافه میکند، یا میان دو تیم دودل میماند. تطبیق رشتهای شما بیصدا شکست میخورد و تیکت در صف اشتباه میافتد.
در ضمن، هزینهی تکتک کلمههای آن پاسخ را پرداختهاید و فقط یکی را نگه داشتهاید. یک جمله هیچ میزان اطمینانی هم ندارد که بتوانید بر اساس آن عمل کنید، پس چیزی نیست که برایش آستانه تعیین کنید.
یک تصمیم باید به شکل یک مقدار برگردد، نه به شکل متنی دربارهی یک مقدار.
مدلی که فقط به پرسشها پاسخ میدهد
Jev یک مدل تصمیمگیری ساخت TypeSafe است که درگاه وطن آن را در POST /v1/decisions ارائه میکند. این مدل گفتوگو نمیکند. آنچه باید دربارهاش داوری شود را در قالب state میفرستید، همراه با چند پرسش نامدار که هر کدام یکی از سه نوع زیر است.
noul یک پرسش بله یا خیر است که پاسخش احتمال «بله» بودن است.choice یکی از گزینههایی را که نام بردهاید انتخاب میکند و برای هر گزینه یک احتمال میدهد.score ورودی را روی یک مقیاس مرتب که خودتان تعریف میکنید قرار میدهد و برای هر پله یک احتمال میدهد.
پاسخها با همان نامهایی که به پرسشها دادهاید برمیگردند. کد شما answers.team.choice را میخواند و بر اساس آن مسیر را انتخاب میکند. چیزی برای تجزیه وجود ندارد، چون متنی در کار نیست.
این مدل پشت همان کلیدی است که همهی مدلهای دیگر روی وطن پشت آناند. بودجه، سقف نرخ درخواست و فهرست مجاز آن پیش از فراخوانی مدل اعمال میشوند. هر فراخوانی، حتی فراخوانی ردشده، یک ردیف مصرف ثبت میکند؛ بنابراین یک یکپارچهسازی خراب به شکل خطا دیده میشود، نه سکوت. توکنهای خروجی در Jev رایگاناند و ورودی مانند هر مدل دیگری روی کلید شما محاسبه و صورتحساب میشود.
چه زمانی سراغ آن بروید
هر جا کد شما به مقداری برای انتخاب مسیر و احتمالی برای تعیین آستانه نیاز دارد، از آن استفاده کنید.
- مسیریابی یک درخواست به مدل درست یا تیم درست.
- طبقهبندی تیکتها یا پیامها در مجموعهای ثابت از دستهها.
- دروازههای بله یا خیر: آیا این هرزنامه است، آیا به بررسی انسانی نیاز دارد.
- امتیازدهی به فوریت یا کیفیت روی مقیاسی که خودتان تعریف میکنید.
برای هر کاری که خروجیاش متن است، از آن استفاده نکنید: یک پاسخ، یک خلاصه، یا استدلالی که باید نوشته شود. همچنین این مدل حداکثر ۳۲٬۰۰۰ توکن میخواند و هرگز پاسخ را بهصورت جریانی (stream) نمیفرستد.
فراخوانی آن
یک تیکت، دو پرسش: کدام تیم، و آیا فوری است.
curl https://gateway.vatan.one/v1/decisions \
-H "authorization: Bearer $VATAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "I was charged twice for my March invoice and I need the second payment refunded today.",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Payments, invoices, refunds",
"technical": "Bugs, errors, outages",
"account": "Sign-in, access, settings"
}
},
"urgent": {
"type": "noul",
"instructions": "Does this need a reply today?"
}
}
}'
پاسخ درگاه به همین درخواست، در ۱۸ سپتامبر ۲۰۲۶:
{
"id": "req_mu7kkqvsh8vrgipgbd",
"object": "decision",
"model": "openrouter/typesafe/jev-1.13",
"answers": {
"team": {
"type": "choice",
"choice": "billing",
"probabilities": { "technical": 0, "billing": 1, "account": 0 },
"confidence": 1
},
"urgent": { "type": "noul", "noul": 0.89 }
},
"usage": { "input_tokens": 365, "output_tokens": 55 }
}
این مدل ۳۶۵ توکن ورودی خواند و ۵۳۵ میلیثانیه درون درگاه صرف کرد. پرسش score هم با همین شکل پاسخ میدهد: پلهی انتخابشده، یک راهنما و یک احتمال برای هر پله.
اگر قرار است کد شما بر اساس یک پاسخ مسیر را انتخاب کند، آن پاسخ نباید به شکل یک جمله برسد.