UNPKG

@artmate/chat

Version:

**开箱即用的AI组件库(基于 Vue3 + ElementPlus)**

56 lines (55 loc) 3.02 kB
import { AnyObject } from '../_util/type'; import { ArtRequestParams } from '../artRequest'; import { ArtStreamOptions, SSEOutput } from '../artStream'; import { ArtAgent } from '../useArtAgent'; export type SimpleType = string | number | boolean | object; export type MessageStatus = 'local' | 'loading' | 'success' | 'error'; type RequestPlaceholderFn<Message extends SimpleType> = (message: Message, info: { messages: Message[]; }) => Message; type RequestFallbackFn<Message extends SimpleType> = (message: Message, info: { error: Error; messages: Message[]; }) => Message | Promise<Message>; type TransformMessageFn<Message, Output> = (info: { originMessage?: Message; chunk: Output; chunks: Output[]; status: MessageStatus; }) => Message; type RequestParams<Message> = Omit<ArtRequestParams, 'message'> & { message: Message; } & AnyObject; export interface ArtChatConfig<AgentMessage extends SimpleType = string, BubbleMessage extends SimpleType = AgentMessage, Input = AgentMessage, Output = AgentMessage> { agent?: ArtAgent<AgentMessage, Input, Output>; defaultMessages?: DefaultMessageInfo<AgentMessage>[]; /** Convert agent message to bubble usage message type */ parser?: (message: AgentMessage) => BubbleMessage | BubbleMessage[]; requestPlaceholder?: AgentMessage | RequestPlaceholderFn<AgentMessage>; requestFallback?: AgentMessage | RequestFallbackFn<AgentMessage>; transformMessage?: TransformMessageFn<AgentMessage, Output>; transformStream?: ArtStreamOptions<AgentMessage>['transformStream']; resolveAbortController?: (abortController: AbortController) => void; } export interface MessageInfo<Message extends SimpleType> { id: number | string; message: Message; status: MessageStatus; } export type DefaultMessageInfo<Message extends SimpleType> = Pick<MessageInfo<Message>, 'message'> & Partial<Omit<MessageInfo<Message>, 'message'>>; export interface RequestResultObject<Message> { message: Message | Message[]; status: MessageStatus; } export type RequestResult<Message extends SimpleType> = Message | Message[] | RequestResultObject<Message> | RequestResultObject<Message>[]; export type StandardRequestResult<Message extends SimpleType> = Omit<RequestResultObject<Message>, 'message' | 'status'> & { message: Message; status?: MessageStatus; }; export default function useArtChat<AgentMessage extends SimpleType = string, ParsedMessage extends SimpleType = AgentMessage, Input = RequestParams<AgentMessage>, Output = SSEOutput>(config: ArtChatConfig<AgentMessage, ParsedMessage, Input, Output>): { readonly onRequest: (value: SimpleType | RequestParams<AgentMessage> | Input) => void; readonly messages: import('vue').Ref<MessageInfo<AgentMessage>[], MessageInfo<AgentMessage>[]>; readonly parsedMessages: import('vue').ComputedRef<MessageInfo<ParsedMessage>[]>; readonly setMessages: (updater: (pre: MessageInfo<AgentMessage>[]) => MessageInfo<AgentMessage>[]) => void; }; export {};