taskflow-ai
Version:
TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具
267 lines (266 loc) • 6.87 kB
TypeScript
/**
* 国产大模型提供商 - 统一接口支持多种国产大语言模型
* 支持百度文心、阿里通义千问、腾讯混元、智谱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[]>;
}