Avec TsgcAIChat, les deltas déjà décodés
Appelle ChatStream au lieu de Chat et gère OnChatStream. Le composant demande au fournisseur une réponse en streaming, analyse chaque Server-Sent Event et te transmet aChunk, qui contient le nouveau texte et rien d'autre. Tu l'ajoutes, et c'est toute l'implémentation.
Chaque fournisseur diffuse une forme de JSON différente. OpenAI, DeepSeek, Ollama, Grok et Mistral mettent le texte dans choices[0].delta.content, Claude dans delta.text, Gemini plus profond encore dans candidates. TsgcAIChat sait déjà laquelle s'applique au fournisseur que tu as choisi, donc ton handler ne voit jamais de JSON.
Mets Cancel à True dans le handler pour arrêter une réponse qui s'emballe. La requête est abandonnée à ce moment-là, et aucun autre fragment n'arrive. Quand le flux se termine, le texte assemblé est ajouté à l'historique et renvoyé par ChatStream, et OnChatMessage se déclenche une fois avec la réponse complète.