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' },
});模型接入
思考模型接入
历史消息设置
What is Ant Design X?
Ant Design X is a React/Vue AI interaction component library.
系统提示词设置
System prompt:
You are a helpful chatbot自定义 request
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 Provider | AbstractChatProvider<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 说明中的缺口列表。