优化聊天部分

This commit is contained in:
2025-09-16 16:55:39 +08:00
parent 76bd04b9f4
commit 9a3525afd3
16 changed files with 1442 additions and 553 deletions
+25 -12
View File
@@ -3,6 +3,8 @@
* 统一管理所有API相关的配置信息
*/
import { DataId, DataManager } from "../data/DataManager";
import { GlobalData } from "../data/GlobalData";
import { ConfigManager } from "../manager/ConfigManager";
export interface AIConfig {
@@ -41,15 +43,21 @@ export class ApiConfig {
* TODO: 应该从环境变量或安全配置文件中读取
*/
private initConfig(): void {
const config = ConfigManager.tables.TbGlobalConfig;
//const config = DataManager.I.getDataById<GlobalData>(DataId.Global).getApiKey();
this.config = {
// 警告: API密钥不应该硬编码在代码中
// 生产环境中应该从环境变量或安全配置文件中读取
apiKey: config.ApiKey,
model: config.Model,
temperature: config.Temperature,
maxTokens: config.MaxTokens,
timeout: config.Timeout, // 30秒
apiKey: DataManager.I.getDataById<GlobalData>(DataId.Global).getApiKey(),
model: DataManager.I.getDataById<GlobalData>(DataId.Global).getModel(),
temperature: DataManager.I.getDataById<GlobalData>(
DataId.Global
).getTemperature(),
maxTokens: DataManager.I.getDataById<GlobalData>(
DataId.Global
).getMaxTokens(),
timeout: DataManager.I.getDataById<GlobalData>(
DataId.Global
).getTimeout(), // 30秒
};
}
@@ -64,13 +72,18 @@ export class ApiConfig {
* 获取情绪AI配置
*/
public getEmotionAIConfig(): AIConfig {
const config = ConfigManager.tables.TbGlobalConfig;
return {
apiKey: config.emotionApiKey,
model: config.Model,
temperature: config.Temperature,
maxTokens: config.MaxTokens,
timeout: config.Timeout,
apiKey: DataManager.I.getDataById<GlobalData>(
DataId.Global
).getEmotionApiKey(),
model: DataManager.I.getDataById<GlobalData>(DataId.Global).getModel(),
temperature: 0.2,
maxTokens: DataManager.I.getDataById<GlobalData>(
DataId.Global
).getMaxTokens(),
timeout: DataManager.I.getDataById<GlobalData>(
DataId.Global
).getTimeout(),
};
}
+1 -2
View File
@@ -87,10 +87,9 @@ export class ChatAIService {
const config = ApiConfig.Instance.getAIConfig();
// 使用 ChatHistoryManager 的统一加载方法(优先本地,无则获取服务端)
const savedHistory = await ChatHistoryManager.Instance.loadChatHistory(
let savedHistory = await ChatHistoryManager.Instance.loadChatHistory(
roleId
);
let chat;
if (savedHistory && savedHistory.length > 0) {
chat = this.ai.chats.create({
@@ -191,9 +191,6 @@ export class ChatController {
throw new Error("Role ID is not available in ChatModel");
}
// 通知界面消息发送开始
this.callback?.onMessageSent(message);
// 添加用户消息到模型
this.chatModel.addDialog(true, message);
@@ -201,6 +198,9 @@ export class ChatController {
this.dialogManager?.updateDialog(true, message, true);
this.callback?.onDialogUpdated();
// 通知界面消息发送开始
this.callback?.onMessageSent(message);
// 显示加载中的对话
this.dialogManager?.addLoadingDialog();
@@ -469,7 +469,7 @@ export class ChatController {
* 检查是否有指定角色的数据
* @param roleId 角色ID
*/
public hasRoleData(categoryId:string,roleId: number): boolean {
public hasRoleData(categoryId: string, roleId: number): boolean {
return this.chatModel.hasRoleData(roleId);
}
@@ -20,6 +20,9 @@ export class RoleConfigLoader {
AiCharacter.basePrompt +
"\n" +
AiCharacter.additionPrompt;
console.log(AiCharacter.basePrompt);
console.log(AiCharacter.additionPrompt);
return prompt;
}
@@ -30,7 +33,7 @@ export class RoleConfigLoader {
*/
public static getEmotionInstruction(roleId: number): string {
const AiCharacter = ConfigManager.tables.TbAiCharacters.get(roleId);
const globalPrompt = ConfigManager.tables.TbGlobalConfig.EmotionRating;
const globalPrompt = ConfigManager.tables.TbGlobalConfig.EmotionBasePrompt;
const prompt = globalPrompt + "\n" + AiCharacter.basePrompt;
return prompt;
}