Jev बनाम एक भाषा मॉडल

वे एक ही काम के लिए नहीं भिड़ रहे। भाषा मॉडल लिखता है; Jev तय करता है। उपयोगी तुलना यह नहीं कि कौन अधिक चतुर है, बल्कि यह कि उत्तर के साथ आपके कोड को क्या करना पड़ेगा — और वह अंतर इतना बड़ा है कि उसके चारों ओर का पूरा प्रोग्राम लिखने का तरीक़ा ही बदल जाए।

वही निर्णय, दोनों तरीक़ों से लिखा हुआ

एक सहायता टिकट को चार क़तारों में से एक की ओर भेजिए। कोड में हर पक्ष की असल लागत यह रही।

एक भाषा मॉडल के साथ

const res = await llm.chat({
  messages: [{ role: "user", content:
    `Route this ticket. Reply with JSON: {"queue": "Billing"|"Technical"|"Account"|"Sales"}
     Ticket: ${ticket}` }],
  response_format: { type: "json_object" }
});

let queue;
try {
  queue = JSON.parse(res.content).queue;        // may not be JSON
} catch {
  return retry();                               // ...so there is a retry
}
if (!QUEUES.includes(queue)) return retry();    // may be a queue you never had
// and no idea how close the call was

Jev के साथ

const { answers } = await jev.systemOne({
  state: ticket,
  model: "jev-latest",
  questions: { queue: { type: "choice", instructions:
    "Which team should own this ticket?", criteria: QUEUES } }
});

const { choice, probabilities, confidence } = answers.queue;
// choice is one of QUEUES. It cannot be anything else.
if (confidence < 0.7) return humanReview(ticket, probabilities);
route(choice);

पुनःप्रयास का लूप ही असली संकेत है। पहले संस्करण में वह इसलिए है कि उत्तर ऐसे टेक्स्ट के रूप में आता है जो शायद पार्स न हो, या ऐसी क़तार में पार्स हो जाए जो सूची में कभी थी ही नहीं। दूसरे में उसके रहने की जगह ही नहीं: उत्तर बनावट से ही QUEUES में से एक है। उसकी जगह जो आता है वह बिल्कुल अलग शाखा है — वह जो तब चलती है जब मॉडल अनिश्चित हो, न कि तब जब आउटपुट बिगड़ा हो।

दूसरा संस्करण क्या देख सकता है

वही टिकट, सचमुच Jev से गुज़ारा हुआ। विजेता चौंकाता नहीं; दूसरे स्थान वाला वह हिस्सा है जिसे सूखा लेबल फेंक देता।

“आज सुबह 4.2 रिलीज़ के बाद से हमारा SSO लॉगिन 500 दे रहा है। टीम में कोई अंदर नहीं जा पा रहा। Chrome और Safari दोनों पर वही हाल, दो अलग टेनेंट पर।”
4 विकल्पों में से तकनीकी, 87% पर
87% तकनीकी

तकनीकी 87% पर जीतती है, पर खाता 13% थामे है — और यही सही असहमति है, क्योंकि SSO की विफलता सचमुच दोनों की सीमा पर बैठती है। एक सूखा लेबल इसे छिपा देता। अगर आपकी रूटिंग के ग़लत होने की कोई क़ीमत है, तो 13% ही वह संख्या है जिस पर सीमा रखनी चाहिए।

आमने-सामने

आप क्या भेजते हैं
Jev

एक अवस्था और टाइप किए हुए प्रश्नों का एक मानचित्र।

भाषा मॉडल

एक प्रॉम्प्ट, जो आम तौर पर स्कीमा और नियम गद्य में ढोता है।

क्या लौटकर आता है
Jev

प्रति प्रश्न एक टाइप किया हुआ उत्तर, हर विकल्प के लिए एक प्रायिकता के साथ।

भाषा मॉडल

टेक्स्ट। JSON, अगर आपने विनम्रता से माँगा हो और वह मोड समर्थित हो।

आपके कोड की अगली पंक्ति
Jev

ऐसे मान पर एक स्विच जो केवल आपके ही मानों में से एक हो सकता है।

भाषा मॉडल

पहले पार्स, फिर सत्यापन, फिर उस स्थिति के लिए एक शाखा जब इनमें से कोई विफल हो जाए।

यह कैसे विफल होता है
Jev

यह आपके टेक्स्ट के बारे में ग़लत हो सकता है। जो आकार आपने तय नहीं किया वह लौटा नहीं सकता।

भाषा मॉडल

यह आकार के बारे में भी ग़लत हो सकता है — कोई क्षेत्र ग़ायब, ऐसा लेबल जो आपने कभी सूचीबद्ध नहीं किया, JSON के चारों ओर लिपटा गद्य।

दस चीज़ें पूछना
Jev

एक अनुरोध में दस प्रश्न, अवस्था के सापेक्ष समानांतर आँके गए।

भाषा मॉडल

एक ठसाठस भरा प्रॉम्प्ट, या दस कॉल।

अनिश्चितता
Jev

हर Choice और Score पर एक वितरण और एक विश्वास-मान।

भाषा मॉडल

टेक्स्ट अपनी निश्चितता के बारे में जो भी दावा करे।

आँकड़े

ये TypeSafe प्रकाशित करता है; ये विक्रेता के अपने आँकड़े हैं, हमारी माप नहीं।

70–500 ms

छोर-से-छोर प्रतिक्रिया, अग्रणी मॉडलों के 3–329 s की तुलना में

40–200×

System One आकार वाले प्रश्नों पर तेज़

$0.042

प्रति दस लाख इनपुट टोकन, आउटपुट निःशुल्क

हम जो माप सकते हैं: इस साइट से किए गए 14 रन में, आने-जाने का माध्य समय 329 मि॰से॰ है — और उनमें से अधिकतर अनुरोध एक नहीं, नौ प्रश्न ढो रहे थे।

कब भाषा मॉडल ही सही औज़ार है

अधिकतर समय, अगर आपको भाषा चाहिए। Jev के पास न कोई राय है जिसे वह समझा सके, न कहने को कुछ।

  • आपको गद्य चाहिए — एक उत्तर, एक सारांश, एक कमिट संदेश, निर्णय के बजाय निर्णय की व्याख्या।
  • आपको कोड लिखवाना है, या कोई योजना, या कुछ भी खुला-अंत जहाँ उत्तरों का समुच्चय कॉल से पहले ज्ञात न हो।
  • संभावित उत्तरों का समुच्चय सचमुच असीमित हो। किसी मनमाने नाम को निकालना 255 विकल्पों पर Choice नहीं है।
  • आपको तर्क की ऐसी शृंखला चाहिए जिसे आप जाँच सकें। Jev एक निर्णय लौटाता है, उसके पीछे के क़दम नहीं।
  • मात्रा कम हो और आकार ढीला। दिन में दो बार चलने वाले पुनःप्रयास लूप को डिज़ाइन से हटाना सार्थक नहीं।

ये दोनों भिड़ने के बजाय मिलकर बेहतर बनते हैं। TypeSafe का अपना ढाँचा यही है: तेज़ संरचित निर्णय के लिए System One और उसके पीछे System Two के रूप में एक सामान्य मॉडल — इनपुट को Noul से छानिए, Choice से रूट कीजिए, और जो बचे उसे उस मॉडल को सौंपिए जो सचमुच लिख सकता है।

आगे पढ़िए

यह तुलना ख़ुद चलाइए

एक टिकट, एक मसौदा, एक प्रॉम्प्ट चिपकाइए — कुछ भी जिसके चारों ओर आपने वरना एक पार्सिंग लूप लिखा होता — और देखिए कि एक अनुरोध से नौ टाइप किए हुए उत्तर लौटते हैं।

प्रयोगशाला खोलें