2.0.0
Skip to content

useXChat ​

管理一轮会话里的消息。必须传入 provider。没有 provider 时,onRequest 和 abort 抛出 provider is required。

ts
const {
  onRequest,
  onReload,
  abort,
  messages,
  parsedMessages,
  setMessages,
  setMessage,
  isRequesting,
} = useXChat({
  provider,
  conversationKey: activeConversationKey,
  requestPlaceholder: { role: 'assistant', content: '' },
  requestFallback: { role: 'assistant', content: 'failed' },
});

模型接入 ​

模型接入

createOpenAIChatProvider + 本地 SSE mock:输入、流式气泡、取消。

思考模型接入 ​

思考模型接入

DeepSeekChatProvider 解析 reasoning_content,配合 Think + XMarkdown;仍走本地 mock。

历史消息设置 ​

What is Ant Design X?

Ant Design X is a React/Vue AI interaction component library.

历史消息设置

defaultMessages 预填用户与助手历史,再继续对话。

系统提示词设置 ​

System prompt: You are a helpful chatbot
系统提示词设置

role: 'developer' 作为系统提示,可在页面上修改。

自定义 request ​

自定义 request

DefaultChatProvider + 自定义 fetch,返回 JSON mock。

API ​

useXChat ​

ts
type useXChat<
  ChatMessage extends SimpleType = string,
  ParsedMessage extends SimpleType = ChatMessage,
  Input = RequestParams<ChatMessage>,
  Output = SSEOutput,
> = (config: XChatConfig<ChatMessage, ParsedMessage, Input, Output>) => {
  onRequest: (requestParams: Partial<Input>, opts?: { extraInfo: AnyObject }) => void;
  onReload: (
    id: string | number,
    requestParams: Partial<Input>,
    opts?: { extraInfo: AnyObject },
  ) => void;
  abort: () => void;
  messages: Ref<MessageInfo<ChatMessage>[]>;
  parsedMessages: ComputedRef<MessageInfo<ParsedMessage>[]>;
  setMessages: (...args: Parameters<UseChatStoreReturn['setMessages']>) => void;
  setMessage: (...args: Parameters<UseChatStoreReturn['setMessage']>) => void;
  isRequesting: ComputedRef<boolean>;
};

XChatConfig ​

属性说明类型默认值版本
provider数据提供者,将不同结构的数据与请求转换为 useXChat 可消费的格式。内置 DefaultChatProvider、OpenAIChatProvider,也可继承 AbstractChatProvider 自行实现。见 Chat ProviderAbstractChatProvider<ChatMessage, Input, Output>--
conversationKey会话 key;可与 useXConversations 的 activeConversationKey 对齐,使每个会话独立消息ConversationData['key'] | ShallowRef<ConversationData['key'] | undefined>--
defaultMessages默认展示消息{ message: ChatMessage; status?: MessageStatus; id?: string | number; extraInfo?: AnyObject }[]--
parser将 ChatMessage 转为 ParsedMessage;未设置时直接消费 ChatMessage。支持一对多(message: ChatMessage) => ParsedMessage | ParsedMessage[]--
requestFallback请求失败时的兜底消息;未提供则不展示兜底ChatMessage | ((requestParams: Partial<Input>, info: { error: Error; messages: ChatMessage[]; messageInfo: MessageInfo<ChatMessage> }) => ChatMessage | Promise<ChatMessage>)--
requestPlaceholder请求中的占位消息;未提供则不展示占位ChatMessage | ((requestParams: Partial<Input>, info: { messages: ChatMessage[] }) => ChatMessage)--

Return ​

属性说明类型默认值版本
abort取消请求() => void--
isRequesting是否正在请求(computed)ComputedRef<boolean>--
messages当前管理的消息列表Ref<MessageInfo<ChatMessage>[]>--
parsedMessages经过 parser 转换后的列表ComputedRef<MessageInfo<ParsedMessage>[]>--
onReload按消息 id 重放,向后端发请求并用返回数据更新该消息(id: string | number, requestParams: Partial<Input>, opts?: { extraInfo: AnyObject }) => void--
onRequest追加消息并触发请求(requestParams: Partial<Input>, opts?: { extraInfo: AnyObject }) => void--
setMessages直接修改消息列表,不触发请求(messages | updater) => void--
setMessage直接修改单条消息,不触发请求(id, info | updater) => void--

MessageInfo ​

ts
interface MessageInfo<ChatMessage> {
  id: number | string;
  message: ChatMessage;
  status: MessageStatus;
  extraInfo?: AnyObject;
}

MessageStatus ​

ts
type MessageStatus = 'local' | 'loading' | 'updating' | 'success' | 'error' | 'abort';

1.x 的 useXChat({ agent }) 现在叫 useLegacyXChat,文档在 useXChat 数据管理。

React 文档还有 openai-node 自定义 request 示例(依赖 openai 包)。Vue 文档暂不引入该依赖,见 PR 说明中的缺口列表。