AI 组件 · AIChatDialogue
AI对话
用户展示 AI 聊天中的对话信息

使用场景

AIChatDialogue 组件可搭配 AIChatInput 使用,实现更丰富的、功能覆盖更全面、定制更加便捷的 AI 会话场景。 组件消息格式以 OpenAI 的 Response Object 为原型,默认支持 OpenAI 社区 Response / Chat Completion 格式标准,对 GPT-5、GPT-4o 系列模型的响应均支持开箱即用,详见消息数据转换

代码演示

如何引入

基本用法

通过设置 chatsonChatsChange 实现基础对话显示和交互。
使用 align 属性可以设置对话的布局,支持左右分布(leftRight, 默认)和左对齐(leftAlign)。

消息状态

chats 类型为 Message[]Message 包含对话的各种信息,如角色 role、内容 content、状态 status 、唯一标识 id、创建时间 createdAt 等,具体见 Message。其中 status 和 Response API Status 相同,存在 6 种状态,对应 3 种官方样式(成功 / 请求中 / 失败)。

消息展示

消息内容展示的类型为 ContentItem[],支持文本 text、文件 file、图片 image、代码 code、思考块 reasoning、参考来源 annotation、工具调用 tool call 等消息块的展示,同时提供 AIChatDialogue.Step 组件用于步骤等信息的分步展示。

引用

通过 references 字段定义当前消息引用的文件或者文本, showReference 配置当前消息是否显示可被引用样式, onReferenceClick 配置引用按钮点击回调。具体和 AIChatInput 的搭配使用见 AI 组件构建对话

选择

提示

通过 hints 可设置提示区域内容, 点击提示内容后,提示内容将成为新的用户输入内容,并触发 onHintClick 回调。

自定义渲染提示

通过 renderHintBox 可自定义提示区域内容, 参数如下

自定义渲染会话框

通过 chatBoxRenderConfig 传入自定义渲染配置, chatBoxRenderConfig 类型如下
自定义渲染头像和标题,可通过 renderChatBoxAvatarrenderChatBoxTitle 实现。

自定义渲染消息内容

通过 renderDialogueContentItem 按照消息类型返回内容渲染,用法如下

消息数据转换

当前组件的对话消息以 OpenAI 的 Response Object 为原型,为了支持用户更好地无缝集成 Chat Completion APIResponse API,我们提供了四种 Adapter 转换函数,用户可直接使用该函数转换 API 的返回结果,得到可直接用于消息展示的数据,提供两种 Adapter 用于将 ChatInput 组件的数据处理成适配于 Response APIinput Message 或者 Chat Completion API 中的 Input Message 格式。
比如,当用户使用 Chat Completion API 接口返回非流式数据时,可以通过 chatCompletionToMessage 函数将 Chat Completion Object 转换为 Dialogue Message 消息块格式。注意,因为 Chat Completion API 可以通过 n 来控制每条输入消息生成多少个结果所以该函数的返回值为数组。(注意:如果 n > 1,用户需要自行决定将哪条数据添加到 message 中展示)
比如,当用户使用 Chat Completion API 接口返回流式数据时,可以通过 streamingChatCompletionToMessage 函数将 Chat Completion Chunk Object List 转换为 Dialogue Message 消息块格式。
当用户使用 Response API 接口返回非流式数据时,可以通过 responseToMessage 函数将 Response Object 转换为 Dialogue Message 消息块格式。
当用户使用 Response API 接口返回流式数据时,可以通过 streamingResponseToMessage 函数将 Response Chunk Object List 转换为 Dialogue Message 消息块格式。

API 参考

属性说明类型默认值
align对话布局方式'leftRight' | 'leftAlign''leftRight'
chats受控对话消息列表Message[]-
className自定义类名string-
disabledFileItemClick是否禁用文件点击booleanfalse
hintCls提示区最外层样式类名string-
hints提示信息string[]-
hintStyle提示区最外层样式CSSProperties-
markdownRenderProps该参数将透传给对话框渲染所用的 MarkdownRender 组件,详见 MarkdownRenderPropsMarkdownRenderProps-
messageEditRender自定义消息编辑渲染(props: MessageContent) => React.ReactNode-
mode对话模式'bubble' | 'noBubble' | 'userBubble''bubble'
onAnnotationClickannotation 点击回调(annotation?: Annotation) => void-
onChatsChange对话消息列表变更回调(chats?: Message[]) => void-
onFileClick附件文件点击回调(file?: InputFile) => void-
onHintClick点击提示词回调(hint: string) => void-
onImageClick图片点击回调(image?: InputImage) => void-
onMessageBadFeedback消息负向反馈回调(message?: Message) => void-
onMessageCopy复制消息回调(message?: Message) => void-
onMessageDelete删除消息回调(message?: Message) => void-
onMessageEdit编辑消息回调(message?: Message) => void-
onMessageGoodFeedback消息正向反馈回调(message?: Message) => void-
onMessageReset重置消息回调(message?: Message) => void-
onMessageShare分享消息回调(message?: Message) => void-
onReferenceClick引用按钮点击回调(item?: Reference) => void-
onSelect选择项变更回调(selectedIds: string[]) => void-
renderConfig自定义各区块渲染DialogueRenderConfig-
renderDialogueContentItem按消息类型返回内容渲染映射DialogueContentItemRendererMap-
renderHintBox自定义提示项渲染(props: { content: string; index: number; onHintClick: () => void }) => React.ReactNode-
roleConfig角色配置(user/assistant/system 等元数据)RoleConfig必填
selecting是否开启选择模式booleanfalse
showReset是否展示重置操作booleantrue
showReference是否在文字或者文件消息中展示可被引用图标,仅对用户消息生效booleanfalse
style样式CSSProperties-

RoleConfig

属性说明类型默认值
user用户信息Metadata | Map<string, Metadata>-
assistant助手信息Metadata | Map<string, Metadata>-
system系统信息Metadata | Map<string, Metadata>-

MetaData

属性说明类型默认值
name名称string-
avatar头像string-
color头像背景色,同 Avatar 组件的 color 参数, 支持 amberbluecyangreengreyindigolight-bluelight-greenlimeorangepinkpurpleredtealvioletyellowstringgrey

Message

属性说明类型默认值
role角色string-
name名称string-
id唯一标识string| number-
content消息内容string| ContentItem[]-
createdAt创建时间number-
model模型名称string-
status消息状态,可选值为 queued | in_progress | incomplete | completed | failed | cancelledstringcompleted

Reference

属性说明类型默认值
id唯一标识string | number-
type类型string-
name名称string-
url地址string-
content文本内容string-

Methods

方法说明
selectAll全选所有消息
deselectAll取消全选所有消息
scrollToBottom(animation: boolean)滚动到最底部, animation 为 true,则有动画,反之无动画

ContentItem

ContentItem 支持所有 OpenAI Response InputItemOutputItem 类型,具体类型定义如下

设计变量