@aituber-onair/core
Version:
Core library for AITuber OnAir providing voice synthesis and chat processing
116 lines (115 loc) • 3.65 kB
TypeScript
import { ChatService, Message, ChatType, ChatResponseLength, ToolUseBlock, ToolResultBlock } from '@aituber-onair/chat';
import { MemoryManager } from './MemoryManager';
import { EventEmitter } from './EventEmitter';
type ToolCallback = (blocks: ToolUseBlock[]) => Promise<ToolResultBlock[]>;
/**
* ChatProcessor options
*/
export interface ChatProcessorOptions {
/** System prompt */
systemPrompt: string;
/** System prompt for vision mode */
visionSystemPrompt?: string;
/** Vision prompt for describing the image */
visionPrompt?: string;
/** Whether to summarize memory during processing */
useMemory: boolean;
/** Memory note (instructions for AI) */
memoryNote?: string;
/** Maximum number of tool call iterations allowed (default: 6) */
maxHops?: number;
/** Maximum tokens for chat responses (takes precedence over responseLength) */
maxTokens?: number;
/** Response length preset for chat (used if maxTokens is not specified) */
responseLength?: ChatResponseLength;
/** Maximum tokens for vision responses (takes precedence over visionResponseLength) */
visionMaxTokens?: number;
/** Response length preset for vision (used if visionMaxTokens is not specified) */
visionResponseLength?: ChatResponseLength;
}
/**
* Core logic for chat processing
* Combines ChatService and MemoryManager to execute
* AITuber's main processing (text chat, vision chat)
*/
export declare class ChatProcessor extends EventEmitter {
private chatService;
private memoryManager?;
private options;
private chatLog;
private chatStartTime;
private processingChat;
private toolCallback?;
private readonly MAX_HOPS;
/**
* Constructor
* @param chatService Chat service
* @param options Configuration options
* @param memoryManager Memory manager (optional)
*/
constructor(chatService: ChatService, options: ChatProcessorOptions, memoryManager?: MemoryManager, toolCallback?: ToolCallback);
/**
* Add message to chat log
* @param message Message to add
*/
addToChatLog(message: Message): void;
/**
* Get chat log
*/
getChatLog(): Message[];
/**
* Clear chat log
*/
clearChatLog(): void;
/**
* Set chat start time
* @param time Timestamp
*/
setChatStartTime(time: number): void;
/**
* Get chat start time
*/
getChatStartTime(): number;
/**
* Get processing status
*/
isProcessing(): boolean;
/**
* Update options
* @param newOptions New options to merge with existing ones
*/
updateOptions(newOptions: Partial<ChatProcessorOptions>): void;
/**
* Process text chat
* @param text User input text
* @param chatType Chat type
*/
processTextChat(text: string, chatType?: ChatType): Promise<void>;
/**
* Process vision chat
* @param imageDataUrl Image data URL
*/
processVisionChat(imageDataUrl: string): Promise<void>;
/**
* Prepare messages to send to AI
* Create an array of messages with system prompt and memory
*/
private prepareMessagesForAI;
/**
* Set chat log from external source
* @param messages Message array to set as chat log
*/
setChatLog(messages: Message[]): void;
/**
* Get max tokens for chat responses
* @returns Maximum tokens for chat
*/
private getMaxTokensForChat;
/**
* Get max tokens for vision responses
* @returns Maximum tokens for vision
*/
private getMaxTokensForVision;
private runToolLoop;
}
export {};