पाठ 9 / 31

Streaming और Async

आउटपुट बनते ही दिखाएँ और calls समवर्ती चलाएँ।

पहले शब्द तक तेज़

Language models token-दर-token बनाते हैं, इसलिए पूरे उत्तर का इंतज़ार धीमा लगता है। हर runnable में stream (और async astream) है जो टुकड़े आते ही देता है, ताकि UI पाठ तुरंत दिखाए; कुल समय समान होने पर भी अनुभव की latency घटती है। Async methods (ainvoke, abatch, astream) server को threads रोके बिना कई अनुरोध समवर्ती सँभालने देते हैं। Parser के रास्ते stream करते समय सुनिश्चित करें कि parser आंशिक आउटपुट समर्थित करता है (StrOutputParser करता है; JSON parser आंशिक objects दे सकता है)। stream के बीच होने वाली त्रुटियाँ सँभालना याद रखें।

Streaming टुकड़े, चलाकर

मैंने यह Python virtual environment में langchain-core 1.6.6, langchain-text-splitters 1.1.2 और llama-index-core 0.14.25 के साथ ऑफ़लाइन चलाया। किसी API key या network call की ज़रूरत नहीं क्योंकि असली मॉडल की जगह fake मॉडल या खिलौना embedding है। Fake मॉडल अपना तैयार उत्तर एक-एक अक्षर में stream करता है (यहाँ 15 टुकड़े); असली मॉडल tokens stream करते हैं। टुकड़े जोड़ने पर पूरा पाठ मिलता है।

from langchain_core.language_models.fake_chat_models import FakeListChatModel
from langchain_core.output_parsers import StrOutputParser

chain = FakeListChatModel(responses=["streaming works"]) | StrOutputParser()
pieces = list(chain.stream("hi"))
print(pieces[:5], "...", len(pieces), "pieces")
print("".join(pieces))

Output:

['s', 't', 'r', 'e', 'a'] ... 15 pieces
streaming works

त्वरित जाँच: Streaming क्या सुधारता है?

  • शब्दावली आकार
  • मॉडल की सटीकता
  • अनुभव की latency: users को पाठ जल्दी दिखता है
  • प्रशिक्षण डेटा
Answer

अनुभव की latency: users को पाठ जल्दी दिखता है — Streaming आंशिक आउटपुट तुरंत दिखाता है।