Chat
Uma conversa sem dependências, em cinco formatos, de uma thread simples a um agente com suas chamadas de ferramenta, com respostas que chegam no lugar.
Importação
import { Chat } from '@vitral/vue';Padrão
Pergunte alguma coisa. A resposta chega um token por vez, com um cursor depois do último caractere, e é anunciada quando se assenta. Anexe um arquivo com o clipe; Enter envia e Shift+Enter quebra a linha.
Duas pessoas
`variant="messenger"`: os dois lados ganham balão e avatar, e uma sequência de mensagens da mesma pessoa fica agrupada sob um só nome.
Um agente e suas ferramentas
`variant="agent"`: cada ferramenta a que o assistente recorreu é um passo que pode ser aberto — o que lhe foi pedido e o que respondeu —, e um que ainda está rodando avisa. Essa é toda a razão de mostrar os passos.
Um copilot ao lado do trabalho
`variant="copilot"`: uma coluna estreita, sem balões e sem avatares, para um painel que fica ao lado do que está sendo escrito.
Legendas
`variant="captions"`: uma transcrição corrida em vez de uma conversa — sem balões, sem lados, o nome de quem fala na frente, e a linha ainda sendo reconhecida levando o cursor.
Um widget
`variant="widget"`: um launcher, e a thread num painel que abre sobre a página. O launcher informa se o painel está aberto e se nomeia em qualquer caso.
Quando uma resposta falha
Uma mensagem com `error` ocupa o seu lugar na thread, e `retryable` coloca embaixo dela o botão de perguntar de novo.
API
Lido de packages/vue/src/components/Chat/types.ts, então diz o que o componente aceita de fato.
Props
| Nome | Tipo | Descrição |
|---|---|---|
| messages | ChatMessage[] | A conversa. `v-model:messages` não é oferecido: o que é dito cabe à aplicação decidir. |
| variant | ChatVariant | — |
| placeholder | string | — |
| suggestions | string[] | Sugestões para começar, mostradas enquanto a conversa está vazia. |
| emptyMessage | string | — |
| typing | boolean | string | `true` para os três pontos, ou as palavras a mostrar no lugar. |
| disabled | boolean | — |
| readonly | boolean | Sem campo de composição: uma transcrição. |
| allowAttachments | boolean | — |
| accept | string | — |
| maxRows | number | Linhas até onde o campo de composição cresce antes de rolar. O padrão é 6. |
| sendOnEnter | boolean | Enter envia e Shift+Enter quebra a linha. False inverte os dois. |
| height | string | Altura da área rolável da conversa. O padrão é `'28rem'`. |
Mais pt, dt e unstyled de BaseProps; veja pass-through e modo sem estilo.
Slots
| Nome | Props do slot | Descrição |
|---|---|---|
| header | — | Acima da conversa: um título, um seletor de modelo, um botão de fechar. |
| footer | — | Abaixo do campo de composição: um aviso, uma contagem de tokens. |
| message | (props: { message: ChatMessage; index: number }) | Substitui todo o corpo de uma mensagem. |
| empty | — | Substitui o que é mostrado enquanto nada foi dito. |
| launcher | (props: { open: boolean }) | O botão que abre o widget. |
| default | — | As partes escritas como filhos. |