La chat è tutto ciò che sta tra i tuoi utenti e un modello. Crea una NuiChatSession con una funzione respond e <nui-chat> fa il resto: trasmette la risposta in streaming come Markdown, la segue verso il basso finché chi legge non scorre in su e, mentre arriva, trasforma il pulsante di invio in un pulsante di stop.

respond restituisce testo, una promise, una async function* o un Observable, quindi va bene qualsiasi API. Oltre al testo, una risposta può contenere il ragionamento del modello, le sue chiamate ai tool (disegnate dai tuoi template) e le fonti usate. nuiEventStream legge i server-sent events che la maggior parte delle API dei modelli invia in streaming.

Non si perde nulla: una risposta rigenerata o una domanda modificata diventa una nuova versione accanto alla vecchia, e la conversazione conserva ogni ramo. Gli screen reader annunciano ogni risposta quando è completa, non parola per parola.

Un assistente

I suggerimenti avviano la conversazione. Le risposte arrivano in streaming come Markdown; fermale, rigenerale, valutale o modifica la domanda. attach accetta file scelti, incollati o trascinati.

Ragionamento, tool e fonti

I delta aggiungono alla risposta il ragionamento del modello, le chiamate ai tool e le fonti. nuiChatTool disegna il tool del meteo come una card; gli altri tool restano chiusi, con il loro input e output.

Streaming da un server

nuiEventStream legge uno stream di eventi in stile OpenAI, e un NuiChatError ne mostra il messaggio. all() salva la conversazione, versioni comprese.