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