用法
ChatPromptSubmit 组件用于 ChatPrompt 组件内部,以提交提示。它自动处理不同的 status
值来控制聊天。
它扩展了 Button 组件,因此您可以传递任何属性,例如 color
、variant
、size
等。
<template>
<UChatPrompt>
<UChatPromptSubmit />
</UChatPrompt>
</template>
ChatPrompt
组件的 footer
插槽内部。就绪 (Ready)
当其状态为 ready
时,使用 color
、variant
和 icon
属性来自定义按钮。默认为
color="primary"
variant="solid"
icon="i-lucide-arrow-up"
<template>
<UChatPromptSubmit color="primary" variant="solid" icon="i-lucide-arrow-up" />
</template>
已提交 (Submitted)
当其状态为 submitted
时,使用 submitted-color
、submitted-variant
和 submitted-icon
属性来自定义按钮。默认为
submittedColor="neutral"
submittedVariant="subtle"
submittedIcon="i-lucide-square"
stop
事件。<template>
<UChatPromptSubmit
submitted-color="neutral"
submitted-variant="subtle"
submitted-icon="i-lucide-square"
status="submitted"
/>
</template>
流式传输中 (Streaming)
当其状态为 streaming
时,使用 streaming-color
、streaming-variant
和 streaming-icon
属性来自定义按钮。默认为
streamingColor="neutral"
streamingVariant="subtle"
streamingIcon="i-lucide-square"
stop
事件。<template>
<UChatPromptSubmit
streaming-color="neutral"
streaming-variant="subtle"
streaming-icon="i-lucide-square"
status="streaming"
/>
</template>
错误 (Error)
当其状态为 error
时,使用 error-color
、error-variant
和 error-icon
属性来自定义按钮。默认为
errorColor="error"
errorVariant="soft"
errorIcon="i-lucide-rotate-ccw"
reload
事件。<template>
<UChatPromptSubmit
error-color="error"
error-variant="soft"
error-icon="i-lucide-rotate-ccw"
status="error"
/>
</template>
示例
在页面内
在页面内使用 ChatPromptSubmit 组件与 useChat
可组合函数一起显示聊天提示。
传递 status
属性并监听 stop
和 reload
事件来控制聊天。
<script setup lang="ts">
import { useChat } from '@ai-sdk/vue'
const { messages, input, handleSubmit, reload, stop, status, error } = useChat()
</script>
<template>
<UDashboardPanel>
<template #body>
<UContainer>
<UChatMessages :messages="messages" :status="status">
<template #content="{ message }">
<MDC :value="message.content" :cache-key="message.id" unwrap="p" />
</template>
</UChatMessages>
</UContainer>
</template>
<template #footer>
<UContainer>
<UChatPrompt v-model="input" :error="error" @submit="handleSubmit">
<UChatPromptSubmit :status="status" @stop="stop" @reload="reload" />
</UChatPrompt>
</UContainer>
</template>
</UDashboardPanel>
</template>
API
属性
属性 | 默认值 | 类型 |
---|---|---|
status |
|
|
streamingColor |
|
|
streamingVariant |
|
|
submittedColor |
|
|
submittedVariant |
|
|
errorColor |
|
|
errorVariant |
|
|
icon |
|
当状态为 |
label |
| |
color |
|
当状态为 |
size |
|
|
variant |
|
当状态为 |
streamingIcon |
|
当状态为 |
submittedIcon |
|
当状态为 |
errorIcon |
|
当状态为 |
ui |
|
插槽
插槽 | 类型 |
---|---|
前置 |
|
默认 |
|
后置 |
|
事件
事件 | 类型 |
---|---|
停止 |
|
重新加载 |
|
主题
export default defineAppConfig({
uiPro: {
chatPromptSubmit: {
slots: {
base: ''
}
}
}
})
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
uiPro: {
chatPromptSubmit: {
slots: {
base: ''
}
}
}
})
]
})
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import uiPro from '@nuxt/ui-pro/vite'
export default defineConfig({
plugins: [
vue(),
uiPro({
uiPro: {
chatPromptSubmit: {
slots: {
base: ''
}
}
}
})
]
})