优化聊天部分
This commit is contained in:
@@ -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(),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user