मुख्य कंटेंट तक स्किप करें

स्ट्रीमिंग और मल्टी-टर्न बातचीत

मध्यम
What you'll learn
  • प्रतिक्रियाओं को टोकन-दर-टोकन स्ट्रीम करें ताकि उपयोगकर्ता आउटपुट तुरंत देख सकें
  • समझें कि API स्टेटलेस क्यों है और आप बातचीत का इतिहास ख़ुद कैसे संभालें
  • पूरे पिछले आदान-प्रदान को दोबारा भेजकर मल्टी-टर्न बातचीत जारी रखें
  • लंबी बातचीत को कॉन्टेक्स्ट विंडो और लागत बढ़ाने से रोकें

API पर चैट-जैसे अनुभव बनाना दो व्यावहारिक वास्तविकताओं पर आधारित है: स्ट्रीम करें ताकि उपयोगकर्ता आउटपुट तुरंत देखें, और इतिहास का प्रबंधन ख़ुद करें क्योंकि API स्टेटलेस है। दोनों में महारत हासिल करें और आपका चैट UX तेज़ महसूस होगा और सब कुछ याद रखेगा।

स्ट्रीमिंग

स्ट्रीमिंग के बिना, उपयोगकर्ता पूरे उत्तर का इंतज़ार करता है। स्ट्रीमिंग के साथ, टोकन उत्पन्न होते ही आते हैं — कहीं बेहतर अनुभवित गति।

Pro tip
  • कच्चे इवेंट्स को हाथ से पार्स करने के बजाय SDK के स्ट्रीमिंग हेल्पर का उपयोग करें — यह आपके लिए इवेंट लाइफसाइकल को प्रबंधित करता है।
with client.messages.stream(
model="claude-sonnet-5", max_tokens=1024,
messages=[{"role": "user", "content": "Explain RAG in two sentences."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

मल्टी-टर्न: इतिहास आप संभालते हैं

API में कॉल्स के बीच कोई मेमोरी नहीं होती (क्यों)। बातचीत जारी रखने के लिए, हर बार पूरा पिछला आदान-प्रदान वापस भेजें।

Guided walkthrough1 of 4
  1. messages सूची में पहला उपयोगकर्ता संदेश भेजें।
messages = [{"role": "user", "content": "Hi, I'm planning a trip."}]
# ... get assistant reply, then append both turns:
messages.append({"role": "assistant", "content": assistant_text})
messages.append({"role": "user", "content": "Make it 3 days."})
# send the full `messages` list again

लंबी बातचीत विंडो को भर देती है

जैसे-जैसे इतिहास बढ़ता है यह कॉन्टेक्स्ट विंडो को खाता है और लागत बढ़ती है। इसे नियंत्रण में रखने की रणनीतियाँ:

  • पुराने टर्न को एक छोटे रीकैप में सारांशित/संपीड़ित करें जिसे आप आगे ले जाते हैं।
  • अप्रासंगिक पुराने टर्न को छाँटें
  • एक स्थिर प्रीफ़िक्स के लिए फिर से भुगतान करने से बचने हेतु प्रॉम्प्ट कैशिंग के साथ जोड़ें।
Watch out
  • हर कॉल पूरा इतिहास दोबारा भेजती है — लंबी बातचीत में ज़्यादा लागत आती है और अगर आप कभी संपीड़ित या छाँटते नहीं हैं तो यह अंततः कॉन्टेक्स्ट विंडो को पार कर सकती है।
Key takeaways
  • तेज़ अनुभवित गति के लिए टोकन स्ट्रीम करें; SDK हेल्पर इवेंट लाइफसाइकल को संभालता है।
  • API स्टेटलेस है — कॉल्स के बीच इसकी कोई मेमोरी नहीं होती।
  • हर टर्न जोड़कर और पूरी messages सूची दोबारा भेजकर बातचीत जारी रखें।
  • लंबी बातचीत की लागत और आकार को नियंत्रित करने के लिए संपीड़ित करें, छाँटें और कैश करें।

ख़ुद को परखें

0/3
  1. स्ट्रीमिंग चैट अनुभव को क्यों बेहतर बनाती है?
  2. इस API पर आप मल्टी-टर्न बातचीत कैसे जारी रखते हैं?
  3. लंबी बातचीत को कॉन्टेक्स्ट विंडो भरने से रोकने के लिए कौन सी रणनीति सुझाई नहीं गई है?

आगे