import { Logger } from 'pino'; import { Config } from './config.js'; export interface LLMRequestLog { timestamp: string; operationId: string; operationType: 'main' | 'preprocessing' | 'analysis'; model: string; systemPrompt: string; userPrompt: string; maxTokens: number; temperature: number; inputDataLength?: number; inputDataType?: string; instruction?: string; preprocessRequest?: string; startTime: number; } export interface LLMResponseLog { timestamp: string; operationId: string; operationType: 'main' | 'preprocessing' | 'analysis'; model: string; content: string; tokensUsed?: { prompt: number; completion: number; total: number; }; duration: number; success: boolean; error?: string; } export interface LLMPerformanceMetrics { totalOperations: number; totalTokensUsed: number; totalCost: number; averageResponseTime: number; preprocessingStats: { count: number; avgReduction: number; avgTime: number; }; modelStats: Record; } export declare class LLMLogger { private logger; private config; private operationCounter; private metrics; constructor(logger: Logger, config: Config); /** * Creates a new operation ID for tracking */ private createOperationId; /** * Logs an LLM request with detailed information */ logRequest(operationType: 'main' | 'preprocessing' | 'analysis', model: string, systemPrompt: string, userPrompt: string, maxTokens: number, temperature: number, additionalData?: { inputDataLength?: number; inputDataType?: string; instruction?: string; preprocessRequest?: string; }): string; /** * Logs an LLM response with performance metrics */ logResponse(operationId: string, operationType: 'main' | 'preprocessing' | 'analysis', model: string, content: string, tokensUsed: { prompt: number; completion: number; total: number; } | undefined, startTime: number, success?: boolean, error?: string): void; /** * Logs preprocessing analysis and results */ logPreprocessingAnalysis(inputData: string, instruction: string, analysisResponse: string, preprocessRequest: string, originalLength: number, processedLength: number, analysisDuration: number, preprocessingDuration: number): void; /** * Logs detailed preprocessing comparison */ logPreprocessingComparison(operationId: string, originalInput: string, processedInput: string, preprocessRequest: string, originalTokens: number, processedTokens: number, costSaved: number): void; /** * Updates internal performance metrics */ private updateMetrics; /** * Estimates cost based on model and token usage */ private estimateCost; /** * Logs current performance metrics */ private logPerformanceMetrics; /** * Logs final performance summary */ logPerformanceSummary(): void; /** * Truncates text to specified length for logging */ private truncateText; /** * Gets current metrics for external access */ getMetrics(): LLMPerformanceMetrics; /** * Resets metrics (useful for testing or periodic resets) */ resetMetrics(): void; } //# sourceMappingURL=llm-logger.d.ts.map