Z TsgcAIChat, delty już zdekodowane
Wywołaj ChatStream zamiast Chat i obsłuż OnChatStream. Komponent prosi dostawcę o odpowiedź strumieniowaną, parsuje każde zdarzenie Server-Sent Event i podaje ci aChunk, czyli nowy tekst i nic więcej. Dopisujesz go, i to jest cała implementacja.
Każdy dostawca strumieniuje inny kształt JSON. OpenAI, DeepSeek, Ollama, Grok i Mistral umieszczają tekst w choices[0].delta.content, Claude w delta.text, a Gemini jeszcze głębiej, wewnątrz candidates. TsgcAIChat już wie, który z nich dotyczy wybranego przez ciebie dostawcy, więc twoja procedura obsługi nigdy nie widzi JSON.
Ustaw Cancel na True wewnątrz procedury obsługi, żeby zatrzymać rozpędzoną odpowiedź. Żądanie jest w tym momencie porzucane i żadne kolejne fragmenty nie przychodzą. Gdy strumień się kończy, złożony tekst trafia do historii i jest zwracany przez ChatStream, a OnChatMessage zgłasza się raz z kompletną odpowiedzią.