import './chat-list'; import '../chat-sender'; import '../button'; import { Component, OmiProps } from 'omi'; import ChatEngine from '../chat-engine'; import { AIMessageContent, type ChatMessagesData, ChatMessageSetterMode, type ChatMessageStore, type ChatRequestParams, type ChatStatus } from '../chat-engine/type'; import type ChatSender from '../chat-sender/chat-sender'; import type Chatlist from './chat-list'; import type { TdChatbotApi, TdChatListScrollToOptions, TdChatProps } from './type'; export default class Chatbot extends Component implements TdChatbotApi { static css: any[]; static propTypes: { clearHistory: BooleanConstructor; layout: StringConstructor; autoSendPrompt: ObjectConstructor; reverse: BooleanConstructor; defaultMessages: ArrayConstructor; messageProps: (ObjectConstructor | FunctionConstructor)[]; listProps: ObjectConstructor; senderProps: ObjectConstructor; chatServiceConfig: (ObjectConstructor | FunctionConstructor)[]; injectCSS: ObjectConstructor; onMessageChange: FunctionConstructor; onChatReady: FunctionConstructor; onChatAfterSend: FunctionConstructor; }; static defaultProps: { autoSendPrompt: string; clearHistory: boolean; layout: string; reverse: boolean; defaultMessages: any[]; }; listRef: Partial>; ChatSenderRef: Partial>; chatEngine: ChatEngine; chatStatus: ChatStatus; isChatEngineReady: boolean; private chatMessages; private uploadedAttachments; private unsubscribeMsg?; private files; /** * 默认消息角色配置 */ private messageRoleProps; provide: { messageStore: {}; chatEngine: any; }; /** * 获取插槽名称列表 */ get slotNames(): any[]; get senderLoading(): boolean; install(): void; ready(): void; /** * 获取当前聊天消息值 * @returns {Array} 当前聊天消息数组 */ get chatMessageValue(): ChatMessagesData[]; /** * 初始化聊天 * 合并消息配置、初始化引擎、同步状态、订阅聊天 */ private initChat; /** * 同步聊天状态 * @param {ChatMessagesData[]} state - 新的状态值 */ private syncState; uninstall(): void; /** * 发送用户消息 */ sendUserMessage(requestParams: ChatRequestParams): Promise; /** * 发送AI消息 */ sendAIMessage(options?: { params?: ChatRequestParams; content?: AIMessageContent[]; sendRequest?: boolean; }): Promise; /** * 重新回答 */ regenerate(keepVersion?: boolean): Promise; /** * 发送系统消息 */ sendSystemMessage(msg: string): void; /** * 清空消息列表 */ clearMessages(): void; /** * 批量设置消息 * @param messages 要设置的消息数组 * @param mode 模式: * - replace: 完全替换当前消息(默认) * - prepend: 将消息添加到现有消息前面 * - append: 将消息追加到现有消息后面 */ setMessages(messages: ChatMessagesData[], mode?: ChatMessageSetterMode): void; /** * 中止聊天 */ abortChat(): Promise; /** * 注册自定义消息内容合并策略 */ registerMergeStrategy(type: T['type'], // 使用类型中定义的type字段作为参数类型 handler: (chunk: T, existing?: T) => T): void; /** * 添加提示信息到输入框 */ addPrompt(prompt: string, autoFocus?: boolean): void; /** * 选择文件 */ selectFile(): void; /** * 最后一条AI消息 */ get messagesStore(): ChatMessageStore; /** * 受控滚动 */ scrollList(options: TdChatListScrollToOptions): void; /** * 订阅聊天状态变化 */ private subscribeToChat; /** * 处理发送消息事件 */ private handleSend; /** * 处理停止聊天事件 */ private handleStop; private handleClickAction; /** * 渲染消息项 */ private renderItems; /** * 渲染输入框插槽 */ private renderInputSlots; private getChatActionBar; beforeRender(): void; render({ layout, injectCSS, senderProps, listProps }: OmiProps): JSX.Element; }