Mit einem Hersteller-Client, rohe Ereignisse
Die REST-Clients streamen ebenfalls. Weise OnHTTPAPISSE zu und rufe die Streaming-Abkürzung auf: _CreateMessageStream bei Claude und bei Ollama, und bei OpenAI ein TsgcOpenAIClass_Request_ChatCompletion mit Stream auf True gesetzt. Das Ereignis gibt dir aEvent, den Namen des Server-Sent Event, und aData, die Nutzlast dieses Ereignisses, genau so, wie der Hersteller sie geschickt hat.
Auf dieser Ebene parst du das JSON selbst, und genau darum geht es: Du siehst Tool-Call-Deltas, Stoppgründe, Nutzungsdaten und alles andere, was der Hersteller auf die Leitung legt. Teilweise Netzwerklesevorgänge sind bereits für dich zusammengesetzt, ein Ereignis, das über zwei TCP-Lesevorgänge verteilt ist, kommt also vollständig an, und Ollamas zeilengetrenntes JSON wird über dasselbe Ereignis geliefert.
Die Abschlusskennungen unterscheiden sich je Hersteller. OpenAI schließt mit dem Literal [DONE], Claude mit einem Ereignis namens message_stop. Behandle beide, wenn dein Code beide anspricht.