import { AiCharacters } from "../../schema/schema"; import { AiCharacterConfig } from "../config/AiCharacterConfig"; import { DataId, DataManager } from "../data/DataManager"; import { GlobalData } from "../data/GlobalData"; import { ConfigId, ConfigManager } from "../manager/ConfigManager"; import { logger } from "db://assets/Scripts/Main/Common/Logger"; /** * 角色配置映射 * 将角色ID映射到对应的System Instruction */ export class RoleConfigLoader { /** * 根据角色ID获取对应的System Instruction * @param roleId 角色ID * @returns System Instruction字符串,如果未找到则返回默认Role_1 */ public static getRoleInstruction(roleId: number): string { const aiCharacter = ConfigManager.I.getDataById( ConfigId.AiCharacter ); const globalConfig = DataManager.I.getDataById(DataId.Global); const basePrompt = aiCharacter.getBasePromptById(roleId); const additionPrompt = aiCharacter.getAdditionPromptById(roleId); const globalPrompt = globalConfig.getGirlBasePrompt(); const prompt = globalPrompt + "\n" + basePrompt + "\n" + additionPrompt; logger.log(basePrompt); logger.log(additionPrompt); return prompt; } /** * 根据角色ID获取对应的情绪机器人prompt * @param roleId 角色ID * @returns System Instruction字符串,如果未找到则返回默认Role_1 */ public static getEmotionInstruction(roleId: number): string { const aiCharacter = ConfigManager.I.getDataById( ConfigId.AiCharacter ); const globalConfig = DataManager.I.getDataById(DataId.Global); const basePrompt = aiCharacter.getBasePromptById(roleId); ////globalConfig没有emotionBasePrompt数据 请补充并替换下行 const globalPrompt = globalConfig.getEmotionBasePrompt(); const prompt = globalPrompt + "\n" + basePrompt; return prompt; } /** * 检查角色是否存在配置 * @param roleId 角色ID */ public static hasRole(roleId: number): boolean { const aiCharacter = ConfigManager.I.getDataById( ConfigId.AiCharacter ); return aiCharacter.getBasePromptById(roleId) != null; } /** * 获取所有配置的角色ID */ public static getAllRoles(): AiCharacters[] { const aiCharacter = ConfigManager.I.getDataById( ConfigId.AiCharacter ); return aiCharacter.getAllId(); } }