UNPKG

@ant-design/pro-chat

Version:
112 lines (111 loc) 3.4 kB
import { ModelConfig } from "../types/config"; import { MetaData } from "../types/meta"; import { ChatMessage } from "../../types/message"; import { AutoCompleteProps } from 'antd'; import { TextAreaProps } from 'antd/es/input'; import { TextAreaRef } from 'antd/es/input/TextArea'; import { ReactNode } from 'react'; import { FlexBasicProps } from 'react-layout-kit/lib/FlexBasic'; import { Locale } from '../../locale'; import { ProChatChatReference } from '../container/StoreUpdater'; import { MixRequestResponse, SSEFinishType } from '../utils/fetch'; export type ChatRequest = (messages: ChatMessage[], config: ModelConfig, signal: AbortSignal | undefined) => MixRequestResponse; export interface ChatPropsState<T extends Record<string, any> = Record<string, any>> { /** * 语言模型角色设定 */ config: ModelConfig; /** * 聊天记录 */ chats: ChatMessage<T>[]; onChatsChange?: (chats: ChatMessage<T>[]) => void; chatRef?: ProChatChatReference; displayMode: 'chat' | 'docs'; userMeta: MetaData; assistantMeta: MetaData; /** * SSE 时候每一条特殊处理转换的方法,处理完后才进行拼接 * @returns string */ transformToChatMessage?: (preChatMessage: string, currentContent: string) => Promise<string> | string; /** * 帮助消息 */ helloMessage?: ReactNode; request?: string | ChatRequest; /** * 生成消息 id * @param message * @returns message id */ genMessageId?: (message: ChatMessage<T>[], parentId: string) => Promise<string>; /** * 重置消息 * @returns */ onResetMessage?: () => Promise<void>; /** * 获取自动完成列表的 request * @param value * @returns */ autocompleteRequest?: (value: string) => Promise<{ value: string; label?: string; }[]>; /** * 输入框的 placeholder */ placeholder?: string; /** * 国际化 */ locale?: Locale; /** * 输入框的 props,优先级最高 */ inputAreaProps?: TextAreaProps & React.RefAttributes<TextAreaRef> & { autoCompleteProps?: AutoCompleteProps; value?: string; onChange?: (value: string) => void; }; /** * 信息框额外渲染 */ messageItemExtraRender?: (message: ChatMessage<T>, type: 'assistant' | 'user') => React.ReactNode; /** * 信息框顶部的操作列表 */ actions?: { /** * 控制 input 顶部的操作区域的 flex 布局 */ flexConfig?: FlexBasicProps; /** * 控制 input 顶部的操作区域的操作按钮 * @param defaultDoms * @returns */ render?: (defaultDoms: JSX.Element[]) => JSX.Element[]; }; /** * 对话结束时候的回掉 */ onChatEnd?: (id: string, type: SSEFinishType) => void; /** * 对话开始时候的回掉 */ onChatStart?: (messages: ChatMessage<Record<string, any>>[]) => void; /** * 对话生成时候的回掉 */ onChatGenerate?: (chunkText: string) => void; } export interface ChatState extends ChatPropsState { init?: boolean; abortController?: AbortController; chatLoadingId?: string; } export declare const initialModelConfig: ModelConfig; export declare const initialState: ChatState;