Skip to main content
POST /chats/{id}/messages antwortet mit einem Stream im UI Message Stream-Format des Vercel AI SDK. Der Stream enthält den Antworttext, Tool Calls mit ihren Ergebnissen und Freigabe-Anfragen, während der Assistent noch arbeitet.

Format

Server-Sent Events: ein JSON-Objekt pro data:-Zeile, am Ende data: [DONE]. Der Content-Type ist text/plain. Lies den Body als Stream, nicht erst nach Abschluss.

React: useChat

@ai-sdk/react parst den Stream und verwaltet die Nachrichtenliste. Transport auf die Messages-Route zeigen lassen, Token in prepareSendMessagesRequest setzen:
ChatView.tsx
Zum Rendern über message.parts iterieren: Text-Parts durch einen Markdown-Renderer, Tool-Parts als Status-Anzeige.
Die Versionen müssen zum Service passen: ai@6 und @ai-sdk/react@3. Ältere Major-Versionen verwenden ein anderes Stream-Protokoll.

Tool-Freigaben

Manche Tools verändern Daten (Prompt speichern, Automation anlegen, in eine Integration schreiben). Dafür fragt der Assistent vorher nach: Der Tool-Part kommt mit state: "approval-requested", der Stream endet. Antworte mit addToolApprovalResponse. Mit dem sendAutomaticallyWhen von oben schickt useChat den Verlauf erneut und der Assistent macht weiter.
Die Freigabe liegt im Verlauf. Deshalb akzeptiert der Endpoint messages als Body. Ein Client, der nur text sendet, kann keine Tools freigeben.

Ohne SDK

Body an Leerzeilen splitten, data:-Zeilen parsen, text-delta-Parts zusammensetzen. Ein fetch-Beispiel steht unter Beispiele.