# Applications में Streaming: UI, Backends और Cancellation — Claude API / OpenAI API की बुनियाद

Source: https://www.geekswithgeeks.com/hi/llm-apis/s-ui

> Streams को अपने backend से browser तक पहुँचाएँ और stream के बीच की समस्याएँ सँभालें।

## आपका backend बिचौलिया है

Browsers को आपकी API key नहीं रखनी चाहिए, इसलिए browser **आपके backend** को बुलाता है, जो provider को streaming के साथ बुलाता है और **टुकड़े** browser तक **आगे भेजता** है (जैसे Server-Sent Events या WebSockets से)। अप्रिय रास्तों के लिए डिज़ाइन करें: **user page बंद करे या stop दबाए** (upstream अनुरोध रद्द करें ताकि tokens का भुगतान बंद हो), **stream बीच में विफल हो** (जो आया दिखाएँ और retry दें; आंशिक पाठ को चुपचाप पूरा न मानें), **proxy stream को buffer करे** (buffering बंद करें वरना पाठ एक साथ आता है), और **moderation या validation** जिसे पूरा उत्तर चाहिए (stream समाप्त होने के बाद validate करें, या सुरक्षा जाँच के बाद ही stream करें)। बिलिंग के लिए usage अंतिम event से दर्ज करें।

## Streaming relay (उदाहरण)

Web framework शैली में backend endpoint का रेखाचित्र; function नाम placeholders हैं। यहाँ चलाया नहीं गया।

```python
def chat_stream(request):
    user = authenticate(request)                       # your auth, not the provider key
    check_rate_limit(user)
    def events():
        try:
            with client.messages.stream(model=MODEL, max_tokens=500,
                                         messages=load_history(user, request)) as stream:
                for piece in stream.text_stream:
                    if request.is_disconnected():          # user pressed stop / closed the page
                        return                              # leaving the block closes the upstream request
                    yield f"data: {piece}\n\n"
                final = stream.get_final_message()
                record_usage(user, final.usage)             # bill from the final event
        except Exception:
            yield "event: error\ndata: stream failed, please retry\n\n"
    return EventStreamResponse(events())
```

**Quiz:** User stop दबाए तो upstream अनुरोध रद्द क्यों करें?

- [x] ताकि उन tokens का भुगतान बंद हो जो कोई नहीं पढ़ेगा
- [ ] Key हटाने के लिए
- [ ] मॉडल तेज़ करने के लिए
- [ ] HTTP में यह ज़रूरी है

*Answer:* ताकि उन tokens का भुगतान बंद हो जो कोई नहीं पढ़ेगा. अनुरोध बंद होने तक generation जारी रहती और बिल होती है।
