Files
18xchat/assets/Scripts/chat18x/core/RoleConfigLoader.ts
T
2025-09-16 16:55:39 +08:00

56 lines
1.7 KiB
TypeScript

import { AiCharacters } from "../../schema/schema";
import { ConfigManager } from "../manager/ConfigManager";
/**
* 角色配置映射
* 将角色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.tables.TbAiCharacters.get(roleId);
const globalPrompt = ConfigManager.tables.TbGlobalConfig.girlBasePrompt;
const prompt =
globalPrompt +
"\n" +
AiCharacter.basePrompt +
"\n" +
AiCharacter.additionPrompt;
console.log(AiCharacter.basePrompt);
console.log(AiCharacter.additionPrompt);
return prompt;
}
/**
* 根据角色ID获取对应的情绪机器人prompt
* @param roleId 角色ID
* @returns System Instruction字符串,如果未找到则返回默认Role_1
*/
public static getEmotionInstruction(roleId: number): string {
const AiCharacter = ConfigManager.tables.TbAiCharacters.get(roleId);
const globalPrompt = ConfigManager.tables.TbGlobalConfig.EmotionBasePrompt;
const prompt = globalPrompt + "\n" + AiCharacter.basePrompt;
return prompt;
}
/**
* 检查角色是否存在配置
* @param roleId 角色ID
*/
public static hasRole(roleId: number): boolean {
return ConfigManager.tables.TbAiCharacters.get(roleId) != null;
}
/**
* 获取所有配置的角色ID
*/
public static getAllRoles(): AiCharacters[] {
return ConfigManager.tables.TbAiCharacters.getDataList();
}
}