Chat 智能对话

智能对话组件,基于 re-chat 系列子组件构建,支持消息列表、操作栏、发送器与思考过程,用于搭建 AI 对话界面

演示

9:41

代码示例

<re-tabs :value="tabValue" :spaceEvenly="false" :scrollable="true" @change="onTabChange">
  <re-tab-panel label="基础使用" :value="0">
  <re-chat class="demo-chat" :data="baseMessages" :reverse="true" :showActionbar="true" :actionBar="baseActionBar" :likedIds="baseLikedIds" :dislikedIds="baseDislikedIds" @action="onChatAction(0, $event)">
  <re-chat-sender :value="baseDraft" :loading="baseSending" :showThink="false" :showSearch="false" :showUpload="false" :tips="baseTips" @update:value="onSenderValueChange(0, $event)" @send="onSend(0)" @stop="onStop(0)">
  <re-tab-panel label="组合式用法" :value="1">
  <re-chat class="demo-chat" :data="hookMessages" :reverse="true" :showActionbar="true" :actionBar="hookActionBar" @action="onChatAction(1, $event)">
  <re-chat-sender :value="hookDraft" :loading="hookSending" :showThink="true" :showSearch="false" :showUpload="false" :thinkActive="hookThink" :tips="hookTips" placeholder="输入问题,体验组合式问答" @update:value="onSenderValueChange(1, $event)" @toggle-think="toggleThink(1)" @send="onSend(1)" @stop="onStop(1)">
  <re-tab-panel label="文案助手" :value="4">
  <re-chat class="demo-chat" :data="docsMessages" :reverse="true" :showActionbar="true" :actionBar="docsActionBar" :likedIds="docsLikedIds" @action="onChatAction(2, $event)">
  <re-chat-sender :value="docsDraft" :loading="docsSending" :showThink="false" :showSearch="false" :showUpload="true" :files="docsFiles" :tips="docsTips" placeholder="输入文案主题,例如:春季露营新品发布" @update:value="onSenderValueChange(2, $event)" @upload-file="appendFile(2)" @upload-image="appendImage(2)" @upload-photo="appendPhoto(2)" @remove-file="removeFile(2, $event)" @send="onSend(2)" @stop="onStop(2)">
  <re-tab-panel label="图像生成" :value="5">
  <re-chat class="demo-chat" :data="imageMessages" :reverse="true" :showActionbar="true" :actionBar="imageActionBar" @action="onChatAction(3, $event)">
  <re-chat-sender :value="imageDraft" :loading="imageSending" :showThink="true" :showSearch="false" :showUpload="true" :thinkActive="imageThink" :files="imageFiles" :tips="imageTips" placeholder="输入生成图像的描述,例如:极简风露营海报" @update:value="onSenderValueChange(3, $event)" @toggle-think="toggleThink(3)" @upload-file="appendFile(3)" @upload-image="appendImage(3)" @upload-photo="appendPhoto(3)" @remove-file="removeFile(3, $event)" @send="onSend(3)" @stop="onStop(3)">
  <re-tab-panel label="任务规划" :value="6">
  <re-chat class="demo-chat" :data="agentMessages" :reverse="true" :showActionbar="true" :actionBar="agentActionBar" @action="onChatAction(4, $event)">
  <re-chat-sender :value="agentDraft" :loading="agentSending" :showThink="true" :showSearch="true" :showUpload="false" :thinkActive="agentThink" :searchActive="agentSearch" :tips="agentTips" placeholder="输入一个任务目标,例如:规划一次新品上线活动" @update:value="onSenderValueChange(4, $event)" @toggle-think="toggleThink(4)" @toggle-search="toggleSearch(4)" @send="onSend(4)" @stop="onStop(4)">

引入

推荐使用 easycom 模式,配置后无需手动 import 即可直接使用 <re-chat />。

API

Chat Props

名称类型默认值描述必传
dataArray<ChatItem> as Array<ChatItem>-N
layoutstring'both'-N
reversebooleantrue-N
customStylestring''自定义样式N
emptyTextstringtranslate('chat', 'empty', '暂无对话内容')-N
autoScrollbooleantrue-N
showActionbarbooleanfalse-N
actionBarArray<string>'replay', 'copy', 'good', 'bad' as Array<string>-N
likedIdsArray<string> as Array<string>-N
dislikedIdsArray<string> as Array<string>-N

Chat Events

名称参数描述
scrolldetail: UTSJSONObject滚动时触发
actiondetail: UTSJSONObject-

Chat Slots

名称描述
footer-

ChatActionbar Props

名称类型默认值描述必传
actionBarArray<string>'replay', 'copy', 'good', 'bad' as Array<string>-N
likedbooleanfalse-N
dislikedbooleanfalse-N

ChatActionbar Events

名称参数描述
actionname: string-

ChatContent Props

名称类型默认值描述必传
contentstring''内容文字N
rolestring'assistant'-N
statusstring''-N

ChatMessage Props

名称类型默认值描述必传
chatIdstring''-N
rolestring'assistant'-N
namestring''标识名称N
avatarstring''-N
avatarColorstring''无头像图片时文字头像的底色(为空用主题变量)N
datetimestring''-N
contentstring''内容文字N
statusstring''-N
layoutstring'both'-N
likedbooleanfalse-N
dislikedbooleanfalse-N
showActionbarbooleanfalse-N
actionBarArray<string>'replay', 'copy', 'good', 'bad' as Array<string>-N
thinkingTitlestring''-N
thinkingTextstring''-N
thinkingCollapsedbooleanfalse-N

头像策略:优先展示 avatar 图片;无图片时用 name 首字渲染彩色文字头像(无需外链、随发送者动态变化);连 name 也为空则不显示头像。

ChatMessage Events

名称参数描述
actionname: string-
mouseenterid: string-
mouseleaveid: string-
update:thinkingCollapsedvalue: boolean-

ChatSender Props

名称类型默认值描述必传
valuestring''当前值N
loadingbooleanfalse是否显示加载状态N
placeholderstringtranslate('chatSender', 'placeholder', '请输入消息...')占位提示文字N
maxlengthnumber320-N
thinkActivebooleanfalse-N
searchActivebooleanfalse-N
showThinkbooleantrue-N
showSearchbooleanfalse-N
showUploadbooleanfalse-N
filesArray<string> as Array<string>-N

ChatSender Events

名称参数描述
update:valuevalue: string-
send--
stop--
upload-file--
upload-image--
upload-photo--
remove-fileindex: number-
toggle-think--
toggle-search--

ChatThinking Props

名称类型默认值描述必传
titlestring''标题N
textstring''-N
statusstring'pending'-N
collapsedbooleanfalse-N
maxHeightnumber120-N

ChatThinking Events

名称参数描述
update:collapsedvalue: boolean-