taskflow-ai
Version:
TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具
186 lines (185 loc) • 4.52 kB
TypeScript
/**
* 模型工厂 - 统一创建和管理各种国产大模型提供商
* 支持配置驱动的模型初始化和智能选择
*/
import { Logger } from '../../infra/logger';
import { ConfigManager } from '../../infra/config';
import { ChineseLLMManager, ChineseLLMType, ModelConfig } from './chinese-llm-provider';
/**
* 模型提供商配置接口
*/
export interface ProviderConfig {
enabled: boolean;
config: ModelConfig;
priority?: number;
capabilities?: string[];
costPerToken?: number;
maxConcurrency?: number;
}
/**
* 模型工厂配置接口
*/
export interface ModelFactoryConfig {
providers: Record<ChineseLLMType, ProviderConfig>;
defaultProvider?: ChineseLLMType;
fallbackProviders?: ChineseLLMType[];
loadBalancing?: {
enabled: boolean;
strategy: 'round_robin' | 'least_cost' | 'least_latency' | 'random';
healthCheck: boolean;
};
monitoring?: {
enabled: boolean;
metricsInterval: number;
alertThresholds: {
errorRate: number;
latency: number;
tokenUsage: number;
};
};
}
/**
* 提供商健康状态
*/
export interface ProviderHealth {
isHealthy: boolean;
lastCheck: Date;
errorRate: number;
averageLatency: number;
totalRequests: number;
failedRequests: number;
lastError?: string;
}
/**
* 模型使用统计
*/
export interface ModelUsageStats {
provider: ChineseLLMType;
totalRequests: number;
successfulRequests: number;
failedRequests: number;
totalTokens: number;
totalCost: number;
averageLatency: number;
lastUsed: Date;
}
/**
* 模型工厂类
*/
export declare class ModelFactory {
private logger;
private configManager;
private llmManager;
private config;
private providerHealth;
private usageStats;
private roundRobinIndex;
private monitoringInterval?;
constructor(logger: Logger, configManager: ConfigManager);
/**
* 初始化模型工厂
*/
initialize(): Promise<void>;
/**
* 获取LLM管理器
*/
getLLMManager(): ChineseLLMManager;
/**
* 智能选择最佳提供商
* @param task 任务描述
* @param requirements 特殊需求
*/
selectBestProvider(task: string, requirements?: {
maxLatency?: number;
maxCost?: number;
requiredCapabilities?: string[];
excludeProviders?: ChineseLLMType[];
}): ChineseLLMType;
/**
* 获取提供商健康状态
* @param providerType 提供商类型
*/
getProviderHealth(providerType: ChineseLLMType): ProviderHealth | undefined;
/**
* 获取所有提供商健康状态
*/
getAllProviderHealth(): Map<ChineseLLMType, ProviderHealth>;
/**
* 获取使用统计
* @param providerType 提供商类型
*/
getUsageStats(providerType?: ChineseLLMType): ModelUsageStats | Map<ChineseLLMType, ModelUsageStats>;
/**
* 重新加载配置
*/
reloadConfig(): Promise<void>;
/**
* 记录请求统计
* @param providerType 提供商类型
* @param success 是否成功
* @param latency 延迟时间
* @param tokens 使用的token数
* @param cost 成本
*/
recordUsage(providerType: ChineseLLMType, success: boolean, latency: number, tokens?: number, cost?: number): void;
/**
* 销毁模型工厂
*/
destroy(): void;
/**
* 加载配置
*/
private loadConfig;
/**
* 创建提供商
*/
private createProviders;
/**
* 创建单个提供商
*/
private createProvider;
/**
* 初始化提供商统计信息
*/
private initializeProviderStats;
/**
* 获取可用提供商
*/
private getAvailableProviders;
/**
* 基于负载均衡策略选择提供商
*/
private selectByLoadBalancing;
/**
* 轮询选择
*/
private selectRoundRobin;
/**
* 选择成本最低的提供商
*/
private selectLeastCost;
/**
* 选择延迟最低的提供商
*/
private selectLeastLatency;
/**
* 启动健康检查
*/
private startHealthCheck;
/**
* 启动监控
*/
private startMonitoring;
/**
* 收集指标
*/
private collectMetrics;
/**
* 检查告警
*/
private checkAlerts;
/**
* 更新提供商健康状态
*/
private updateProviderHealth;
}