Met TsgcAIChat, delta's al gedecodeerd
Roep ChatStream aan in plaats van Chat en handel OnChatStream af. De component vraagt de provider om een gestreamd antwoord, parseert elk Server-Sent Event en geeft je aChunk, wat de nieuwe tekst is en verder niets. Jij plakt die eraan vast, en dat is de hele implementatie.
Elke provider streamt een andere JSON-vorm. OpenAI, DeepSeek, Ollama, Grok en Mistral zetten de tekst in choices[0].delta.content, Claude in delta.text, Gemini nog dieper in candidates. TsgcAIChat weet al welke vorm geldt voor de provider die je hebt gekozen, dus je handler ziet nooit JSON.
Zet Cancel op True in de handler om een op hol geslagen antwoord te stoppen. Het verzoek wordt op dat moment afgebroken, en er komen geen chunks meer binnen. Als de stream eindigt, wordt de samengestelde tekst aan de geschiedenis toegevoegd en door ChatStream teruggegeven, en OnChatMessage vuurt één keer af met het volledige antwoord.