UNPKG

taskflow-ai

Version:

TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具

186 lines (185 loc) 4.52 kB
/** * 模型工厂 - 统一创建和管理各种国产大模型提供商 * 支持配置驱动的模型初始化和智能选择 */ 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; }