Files
18xchat/assets/Scripts/chat18x/core/RoleConfigLoader.ts
T

73 lines
2.4 KiB
TypeScript
Raw Normal View History

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";
/**
* 角色配置映射
* 将角色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);
return prompt;
}
/**
* 根据角色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;
return prompt;
}
/**
* 检查角色是否存在配置
* @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;
}
/**
* 获取所有配置的角色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();
}
}