/** * API配置管理 * 统一管理所有API相关的配置信息 */ import { DataId, DataManager } from "../data/DataManager"; import { GlobalData } from "../data/GlobalData"; import { ConfigManager } from "../manager/ConfigManager"; import { logger } from "db://assets/Scripts/Main/Common/Logger"; export interface AIConfig { /** API密钥 */ apiKey: string; /** 模型名称 */ model: string; /** 生成温度参数 */ temperature: number; /** 最大令牌数 */ maxTokens?: number; /** 请求超时时间(毫秒) */ timeout?: number; } /** * API配置管理器 */ export class ApiConfig { private static _instance: ApiConfig; private config: AIConfig; private baseUrl: "https://generativelanguage.googleapis.com"; private constructor() { this.initConfig(); } public static get Instance(): ApiConfig { if (!this._instance) { this._instance = new ApiConfig(); } return this._instance; } /** * 初始化配置 * TODO: 应该从环境变量或安全配置文件中读取 */ private initConfig(): void { //const config = DataManager.I.getDataById(DataId.Global).getApiKey(); this.config = { // 警告: API密钥不应该硬编码在代码中 // 生产环境中应该从环境变量或安全配置文件中读取 apiKey: DataManager.I.getDataById(DataId.Global).getApiKey(), model: DataManager.I.getDataById(DataId.Global).getModel(), temperature: DataManager.I.getDataById( DataId.Global ).getTemperature(), maxTokens: DataManager.I.getDataById( DataId.Global ).getMaxTokens(), timeout: DataManager.I.getDataById( DataId.Global ).getTimeout(), // 30秒 }; //logger.warn(this.config.apiKey); } /** * 获取AI配置 */ public getAIConfig(): AIConfig { return { ...this.config }; } /** * 获取情绪AI配置 */ public getEmotionAIConfig(): AIConfig { return { apiKey: DataManager.I.getDataById( DataId.Global ).getEmotionApiKey(), model: DataManager.I.getDataById(DataId.Global).getModel(), temperature: 0.2, maxTokens: DataManager.I.getDataById( DataId.Global ).getMaxTokens(), timeout: DataManager.I.getDataById( DataId.Global ).getTimeout(), }; } /** * 更新生成参数 * @param temperature 温度参数 */ public updateTemperature(temperature: number): void { if (temperature >= 0 && temperature <= 2) { this.config.temperature = temperature; } else { logger.warn("Temperature should be between 0 and 2"); } } public getTimeout() { return this.config.timeout; } public getBaseUrl() { return this.baseUrl; } /** * 验证配置是否有效 */ public validateConfig(): boolean { if (!this.config.apiKey || this.config.apiKey.trim() === "") { logger.error("API key is missing"); return false; } if (!this.config.model || this.config.model.trim() === "") { logger.error("Model name is missing"); return false; } return true; } }