जब कोई स्ट्रीमिंग कॉल बिगड़ती है तो हाथ में event और data पंक्तियों की एक दीवार होती है, और जो तीन बातें आप जानना चाहते हैं वे उसी में बिखरी होती हैं: मॉडल ने असल में क्या कहा, वह क्यों रुका, और उसने कितना ख़र्च किया। पाठ टुकड़ों में आता है, उपकरण के तर्क अधूरे JSON के रूप में जो आख़िरी टुकड़ा आने पर ही पढ़ा जाता है, और खपत पहली और आख़िरी घटना के बीच बँटी होती है। यहाँ यह सब दोबारा जोड़ा जाता है। स्ट्रीम के दोनों आम रूप सँभाले जाते हैं, क्योंकि व्यवहार में लोग दोनों चिपकाते हैं, और जो घटनाएँ पढ़ी नहीं जातीं वे चुपचाप छोड़ी नहीं, बताई जाती हैं।
विशेषताएँ
डेल्टा से पाठ क्रम में दोबारा जोड़ा गया
अधूरे JSON से उपकरण के तर्क दोबारा बनाए और सजाए गए
रुकने का कारण, मॉडल और खपत निकाली जाती है
ब्लॉक-डेल्टा रूप और choices/delta रूप दोनों
दोहराई गई data पंक्तियाँ मानक के अनुसार जोड़ी जाती हैं
जीवित रखने वाली टिप्पणियाँ घटना नहीं गिनी जातीं
त्रुटि घटनाएँ छोड़ी नहीं, दिखाई जाती हैं
हर घटना खोली जा सकती है, नाम के हिसाब से गिनती भी
SSE स्ट्रीम व्यूअर का उपयोग कैसे करें
कच्ची स्ट्रीम चिपकाइए
दोबारा जुड़ा पाठ पढ़िए
रुकने का कारण और खपत देखिए
कुछ अब भी समझ न आए तो अलग-अलग घटनाएँ खोलिए
उदाहरण
इनपुट
delta: {"type":"text_delta","text":"Order 4471 "}
आउटपुट
Order 4471 shipped on 30 August.
छह घटनाओं में बिखरे टुकड़े, क्रम में दोबारा जोड़े गए।
सामान्य त्रुटियाँ और समस्या निवारण
कोई पाठ निकलता ही नहीं। — हो सकता है सामग्री आने से पहले ही स्ट्रीम ख़त्म हो गई — घटनाओं की सूची और रुकने का कारण देखिए। इनकार या कोई त्रुटि घटना वैध पर ख़ाली स्ट्रीम देती है।
उपकरण के तर्क अधूरे कट गए हैं। — वे कई घटनाओं में अधूरे JSON के रूप में आते हैं। स्ट्रीम बीच में कटी हो तो JSON कभी बंद नहीं होता, और पढ़े हुए के बजाय कच्चा टुकड़ा दिखता है।
कुछ घटनाएँ पढ़ी नहीं जातीं। — आम तौर पर कॉपी करते समय घटना के बीच से कटी स्ट्रीम। ऐसी घटनाएँ छोड़ी नहीं, अपने क्रमांक के साथ बताई जाती हैं।
खपत के आँकड़े अधूरे लगते हैं। — वे स्ट्रीम में बँटे हैं: इनपुट टोकन शुरू में, आउटपुट टोकन अंत में। जिस स्ट्रीम में आख़िरी घटनाएँ नहीं, उसमें आधे नहीं होंगे।
अक्सर पूछे जाने वाले प्रश्न
server-sent events क्या है?
एक सरल स्ट्रीमिंग प्रारूप: फ़ील्ड और मान की पंक्तियाँ, घटनाएँ ख़ाली पंक्तियों से अलग। स्ट्रीमिंग API जवाब यही इस्तेमाल करते हैं, इसीलिए बिगड़ी कॉल आपके हाथ में यही दीवार छोड़ जाती है।
स्ट्रीम के कौन-से रूप चलते हैं?
ब्लॉक वाला रूप, जहाँ पाठ सामग्री-ब्लॉकों के भीतर टाइप वाले डेल्टा के रूप में आता है, और choices/delta रूप। दोनों अपने आप पहचाने जाते हैं, क्योंकि लोग वही चिपकाते हैं जो उनके क्लाइंट ने दर्ज किया।
तर्क टुकड़ों में क्यों आते हैं?
वे अधूरे JSON के रूप में भेजे जाते हैं ताकि क्लाइंट कॉल पूरी होने से पहले दिखाना शुरू कर सके। इसका मतलब यह कि टुकड़े आख़िरी के आने पर ही पढ़े जाते हैं, और कटी हुई स्ट्रीम अमान्य JSON छोड़ जाती है।
क्या ख़र्च दिख सकता है?
खपत का ब्लॉक मौजूद हो तो निकाला जाता है, कैश पढ़ाई समेत। वह बताता है कि कॉल ने क्या ख़र्च किया; उसके आगे ख़र्च वाले औज़ार सँभालते हैं।
क्या स्ट्रीम कहीं भेजी जाती है?
नहीं। स्ट्रीम में पूरा जवाब होता है और अक्सर वह प्रॉम्प्ट भी जिससे वह बना, और सारा पढ़ना ब्राउज़र में ही होता है।