route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
75 lines • 2.38 kB
TypeScript
/**
* 安全的Max Tokens处理器 - 避免无限重试风险
* Project Owner: Jason Zhang
*
* 改进方案:
* 1. 预处理检查:发送前估算token,超限时主动截断
* 2. 渐进式截断:多级截断策略,确保成功
* 3. 用户控制:返回选项让用户决定是否重试
* 4. 透明化:清晰告知用户发生了什么
*/
import { BaseRequest } from '@/types';
import { TruncationResult } from './max-tokens-error-handling-module';
export interface SafeHandlingResult {
action: 'proceed' | 'truncate' | 'user_choice' | 'abort';
truncatedRequest?: BaseRequest;
warning?: {
type: 'token_limit_approaching' | 'truncation_required' | 'context_loss_risk';
message: string;
estimatedTokens: number;
maxTokens: number;
truncationDetails?: TruncationResult;
};
userChoices?: {
autoTruncate: boolean;
manualEdit: boolean;
useSimplified: boolean;
};
}
export interface SafeHandlingOptions {
enablePreemptiveCheck: boolean;
maxRetryAttempts: number;
tokenSafetyMargin: number;
userChoiceTimeout: number;
enableProgressiveReduction: boolean;
}
export declare class SafeMaxTokensHandler {
private handlingModule;
private options;
private retryCounters;
constructor(options?: Partial<SafeHandlingOptions>);
/**
* 预发送检查 - 在发送请求前检查token使用
*/
preflightCheck(request: BaseRequest, maxTokens: number, requestId: string): Promise<SafeHandlingResult>;
/**
* 响应时错误处理 - 收到max_tokens错误后的处理
*/
handleMaxTokensError(originalRequest: BaseRequest, errorResponse: any, requestId: string): Promise<SafeHandlingResult>;
/**
* 渐进式截断 - 多级截断策略
*/
private performProgressiveTruncation;
/**
* 估算token数量
*/
private estimateTokens;
/**
* 从错误响应估算最大token数
*/
private estimateMaxTokensFromError;
/**
* 清理请求的重试计数器
*/
clearRetryCounter(requestId: string): void;
/**
* 获取统计信息
*/
getStats(): {
activeRetries: number;
totalRequestsHandled: number;
averageRetryRate: number;
};
}
export default SafeMaxTokensHandler;
//# sourceMappingURL=safe-max-tokens-handler.d.ts.map