UNPKG

taskflow-ai

Version:

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

267 lines (266 loc) 6.87 kB
/** * 国产大模型提供商 - 统一接口支持多种国产大语言模型 * 支持百度文心、阿里通义千问、腾讯混元、智谱GLM、讯飞星火等 */ import { Logger } from '../../infra/logger'; import { ConfigManager } from '../../infra/config'; /** * 国产大模型类型枚举 */ export declare enum ChineseLLMType { BAIDU_WENXIN = "baidu_wenxin",// 百度文心一言 ALIBABA_QWEN = "alibaba_qwen",// 阿里通义千问 TENCENT_HUNYUAN = "tencent_hunyuan",// 腾讯混元 ZHIPU_GLM = "zhipu_glm",// 智谱GLM XUNFEI_SPARK = "xunfei_spark",// 讯飞星火 DEEPSEEK = "deepseek",// DeepSeek MOONSHOT = "moonshot",// 月之暗面Kimi MINIMAX = "minimax",// MiniMax SENSETIME_NOVA = "sensetime_nova",// 商汤日日新 BAICHUAN = "baichuan" } /** * 模型信息接口 */ export interface ModelInfo { name: string; version: string; maxTokens: number; supportedFeatures: string[]; features?: { supportsFunctions?: boolean; supportsVision?: boolean; supportsStreaming?: boolean; supportsLongContext?: boolean; [key: string]: boolean | undefined; }; pricing?: { inputTokens: number; outputTokens: number; }; } /** * 模型配置接口 */ export interface ModelConfig { apiKey: string; secretKey?: string; baseUrl?: string; model: string; maxTokens?: number; temperature?: number; topP?: number; timeout?: number; retryCount?: number; } /** * 聊天消息接口 */ export interface ChatMessage { role: 'system' | 'user' | 'assistant'; content: string; name?: string; } /** * 聊天请求接口 */ export interface ChatRequest { messages: ChatMessage[]; model?: string; maxTokens?: number; temperature?: number; topP?: number; stream?: boolean; functions?: ((data: unknown) => unknown)[]; userId?: string; } /** * 聊天响应接口 */ export interface ChatResponse { id: string; object: string; created: number; model: string; choices: ChatChoice[]; usage: TokenUsage; error?: string; } /** * 聊天选择接口 */ export interface ChatChoice { index: number; message: ChatMessage; finishReason: string; } /** * Token使用统计 */ export interface TokenUsage { promptTokens: number; completionTokens: number; totalTokens: number; } /** * 流式响应接口 */ export interface StreamResponse { id: string; object: string; created: number; model: string; choices: StreamChoice[]; } /** * 流式选择接口 */ export interface StreamChoice { index: number; delta: { role?: string; content?: string; }; finishReason?: string; } /** * 国产大模型提供商基类 */ export declare abstract class ChineseLLMProvider { protected logger: Logger; protected config: ModelConfig; protected type: ChineseLLMType; constructor(type: ChineseLLMType, config: ModelConfig, logger: Logger); /** * 聊天补全 * @param request 聊天请求 */ abstract chat(request: ChatRequest): Promise<ChatResponse>; /** * 流式聊天补全 * @param request 聊天请求 * @param onChunk 流式数据回调 */ abstract chatStream(request: ChatRequest, onChunk: (chunk: StreamResponse) => void): Promise<void>; /** * 验证API密钥 */ abstract validateApiKey(): Promise<boolean>; /** * 获取模型信息 */ abstract getModelInfo(): Promise<ModelInfo>; /** * 获取支持的模型列表 */ abstract getSupportedModels(): string[]; /** * 计算token数量(估算) * @param text 文本内容 */ protected estimateTokens(text: string): number; /** * 处理API错误 * @param error 错误对象 */ protected handleApiError(error: unknown): string; /** * 重试机制 * @param fn 要重试的函数 * @param maxRetries 最大重试次数 */ protected withRetry<T>(fn: () => Promise<T>, maxRetries?: number): Promise<T>; /** * 格式化消息 * @param messages 原始消息 */ protected formatMessages(messages: ChatMessage[]): Array<{ role: string; content: string; name?: string; }>; /** * 生成请求ID */ protected generateRequestId(): string; /** * 获取当前时间戳 */ protected getCurrentTimestamp(): number; } /** * 国产大模型管理器 */ export declare class ChineseLLMManager { private providers; private logger; private configManager; private defaultProvider?; constructor(logger: Logger, configManager: ConfigManager); /** * 注册模型提供商 * @param type 模型类型 * @param provider 提供商实例 */ registerProvider(type: ChineseLLMType, provider: ChineseLLMProvider): void; /** * 设置默认提供商 * @param type 模型类型 */ setDefaultProvider(type: ChineseLLMType): void; /** * 获取提供商 * @param type 模型类型,不指定则使用默认 */ getProvider(type?: ChineseLLMType): ChineseLLMProvider; /** * 聊天补全(使用默认或指定提供商) * @param request 聊天请求 * @param providerType 指定提供商类型 */ chat(request: ChatRequest, providerType?: ChineseLLMType): Promise<ChatResponse>; /** * 流式聊天补全 * @param request 聊天请求 * @param onChunk 流式数据回调 * @param providerType 指定提供商类型 */ chatStream(request: ChatRequest, onChunk: (chunk: StreamResponse) => void, providerType?: ChineseLLMType): Promise<void>; /** * 获取所有已注册的提供商 */ getRegisteredProviders(): ChineseLLMType[]; /** * 验证所有提供商的API密钥 */ validateAllProviders(): Promise<Map<ChineseLLMType, boolean>>; /** * 获取模型能力对比 */ getModelCapabilities(): Promise<Map<ChineseLLMType, ModelInfo>>; /** * 验证配置 */ private validateConfiguration; /** * 获取提供商特性 * @param type 模型类型 */ getProviderFeatures(type: ChineseLLMType): string[]; /** * 智能选择最佳提供商 * @param task 任务类型 * @param requirements 需求描述 */ selectBestProvider(task: string, _requirements?: string): ChineseLLMType; /** * 批量处理请求(负载均衡) * @param requests 请求列表 * @param options 处理选项 */ batchProcess(requests: ChatRequest[], options?: { maxConcurrency?: number; loadBalance?: boolean; preferredProvider?: ChineseLLMType; }): Promise<ChatResponse[]>; }