2024-07-13 15:44:13 +08:00
|
|
|
|
import path from 'path'
|
|
|
|
|
|
import os from 'os'
|
|
|
|
|
|
import { define } from '../../define/define'
|
2024-08-03 12:46:12 +08:00
|
|
|
|
import { errorMessage, successMessage } from '../Public/generalTools'
|
2024-07-13 15:44:13 +08:00
|
|
|
|
import axios from 'axios'
|
|
|
|
|
|
import { ServiceBase } from '../../define/db/service/serviceBase'
|
2024-08-03 12:46:12 +08:00
|
|
|
|
import { isEmpty } from 'lodash'
|
|
|
|
|
|
import { ValidateJson } from '../../define/Tools/validate'
|
2024-08-18 16:22:19 +08:00
|
|
|
|
import { SyncGptKeyType } from '../../define/enum/softwareEnum'
|
|
|
|
|
|
import { GeneralResponse } from '../../model/generalResponse'
|
|
|
|
|
|
import { SoftWareServiceBasic } from '../Service/ServiceBasic/softwareServiceBasic'
|
|
|
|
|
|
import { SubtitleService } from '../Service/Subtitle/subtitleService'
|
|
|
|
|
|
import { SubtitleModel } from '../../model/subtitle'
|
2024-07-13 15:44:13 +08:00
|
|
|
|
|
|
|
|
|
|
export class GptSetting extends ServiceBase {
|
2024-08-18 16:22:19 +08:00
|
|
|
|
softWareServiceBasic: SoftWareServiceBasic
|
|
|
|
|
|
subtitleService: SubtitleService
|
2024-07-13 15:44:13 +08:00
|
|
|
|
constructor() {
|
|
|
|
|
|
super()
|
|
|
|
|
|
axios.defaults.baseURL = define.serverUrl
|
2024-08-18 16:22:19 +08:00
|
|
|
|
this.softWareServiceBasic = new SoftWareServiceBasic();
|
|
|
|
|
|
this.subtitleService = new SubtitleService()
|
2024-07-13 15:44:13 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-08-04 15:00:00 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 初始化数据
|
|
|
|
|
|
* @returns
|
|
|
|
|
|
*/
|
|
|
|
|
|
async InitAISetting() {
|
|
|
|
|
|
let defaultData = {
|
|
|
|
|
|
laiapi: {
|
2024-09-20 09:19:37 +08:00
|
|
|
|
gpt_url: 'https://api.laitool.cc',
|
2024-08-04 15:00:00 +08:00
|
|
|
|
api_key: "请输入你的LAI API 的 Key",
|
|
|
|
|
|
model: "请输入你的LAI API 的 Model名称"
|
|
|
|
|
|
},
|
|
|
|
|
|
kimi: {
|
2024-09-20 09:19:37 +08:00
|
|
|
|
gpt_url: 'https://api.moonshot.cn',
|
2024-08-04 15:00:00 +08:00
|
|
|
|
api_key: "请输入你的Kimi API 的 Key",
|
|
|
|
|
|
model: "请输入你的Kimi API 的 Model名称"
|
|
|
|
|
|
},
|
|
|
|
|
|
doubao: {
|
2024-09-20 09:19:37 +08:00
|
|
|
|
gpt_url: 'https://ark.cn-beijing.volces.com/api',
|
2024-08-04 15:00:00 +08:00
|
|
|
|
api_key: "请输入你的Doubao API 的 Key",
|
|
|
|
|
|
model: "请输入你的Doubao API 的 Model名称"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
await this.SaveAISetting(defaultData)
|
|
|
|
|
|
return defaultData
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-13 15:44:13 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 获取服务强上面的提示词相关的数据
|
|
|
|
|
|
*/
|
|
|
|
|
|
async InitServerGptOptions() {
|
|
|
|
|
|
try {
|
|
|
|
|
|
// 获取提示词类型数据
|
2024-11-19 20:28:31 +08:00
|
|
|
|
let promptRes = await axios.get<GeneralResponse.SuccessItem>('/lms/Prompt/GetPromptTypeOptions');
|
|
|
|
|
|
if (promptRes.data.code != 1) {
|
|
|
|
|
|
throw new Error(promptRes.data.message)
|
|
|
|
|
|
}
|
2024-07-13 15:44:13 +08:00
|
|
|
|
let promptType = promptRes.data.data
|
|
|
|
|
|
|
|
|
|
|
|
// 获取提示词数据
|
2024-11-19 20:28:31 +08:00
|
|
|
|
let prompt = await axios.get('/lms/Prompt/GetPromptOptions/all');
|
|
|
|
|
|
if (prompt.data.code != 1) {
|
|
|
|
|
|
throw new Error(prompt.data.message)
|
|
|
|
|
|
}
|
2024-07-13 15:44:13 +08:00
|
|
|
|
let promptData = prompt.data.data
|
|
|
|
|
|
|
|
|
|
|
|
let gptOptions = {
|
|
|
|
|
|
promptType: promptType,
|
|
|
|
|
|
promptData: promptData
|
|
|
|
|
|
}
|
|
|
|
|
|
return successMessage(gptOptions, '请求成功', 'GptSetting_InitServerGptOptions')
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
return errorMessage(
|
|
|
|
|
|
'获取服务端提示词数据错误,错误信息如下:' + error.toString(),
|
|
|
|
|
|
'GptSetting_InitServerGptOptions'
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取软件设置里面的AI设置,没有的话设置初始值
|
|
|
|
|
|
async GetAISetting() {
|
|
|
|
|
|
try {
|
|
|
|
|
|
await this.InitService()
|
2024-08-04 15:00:00 +08:00
|
|
|
|
let aiSetting = undefined
|
2024-07-13 15:44:13 +08:00
|
|
|
|
let res = this.softService.GetSoftWarePropertyData('aiSetting')
|
2024-08-03 12:46:12 +08:00
|
|
|
|
if (isEmpty(res)) {
|
2024-08-04 15:00:00 +08:00
|
|
|
|
aiSetting = await this.InitAISetting();
|
2024-07-13 15:44:13 +08:00
|
|
|
|
} else {
|
2024-08-03 12:46:12 +08:00
|
|
|
|
let tryP = ValidateJson(res)
|
|
|
|
|
|
if (!tryP) {
|
|
|
|
|
|
throw new Error('AI设置的数据格式不正确')
|
|
|
|
|
|
}
|
2024-08-04 15:00:00 +08:00
|
|
|
|
aiSetting = JSON.parse(res)
|
2024-07-13 15:44:13 +08:00
|
|
|
|
}
|
2024-08-04 15:00:00 +08:00
|
|
|
|
return successMessage(aiSetting, '请求成功', 'GptSetting_GetAISetting')
|
2024-07-13 15:44:13 +08:00
|
|
|
|
} catch (error) {
|
|
|
|
|
|
return errorMessage(
|
|
|
|
|
|
'获取软件设置里面的AI设置错误,错误信息如下:' + error.toString(),
|
|
|
|
|
|
'GptSetting_GetAISetting'
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 保存软件中的AI设置
|
|
|
|
|
|
* @param {*} value
|
|
|
|
|
|
*/
|
|
|
|
|
|
async SaveAISetting(value) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
await this.InitService()
|
|
|
|
|
|
let res = this.softService.SaveSoftwarePropertyData('aiSetting', JSON.stringify(value))
|
|
|
|
|
|
return res
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
return errorMessage(
|
|
|
|
|
|
'保存软件设置里面的AI设置错误,错误信息如下:' + error.toString(),
|
|
|
|
|
|
'GptSetting_SaveAISetting'
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-08-18 16:22:19 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 同步GPT的Key到其他的设置中
|
|
|
|
|
|
* @param syncTpye
|
|
|
|
|
|
*/
|
|
|
|
|
|
async SyncGptKey(syncTpye: SyncGptKeyType): Promise<GeneralResponse.SuccessItem | GeneralResponse.ErrorItem> {
|
|
|
|
|
|
try {
|
|
|
|
|
|
let globalGptKey = global.config.gpt_key;
|
|
|
|
|
|
console.log(globalGptKey);
|
|
|
|
|
|
return successMessage(globalGptKey, '获取全局配置成功', 'GptSetting_SyncGptKey')
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
return errorMessage("同步GPT的Key到其他的设置中失败,失败信息如下:" + error.toString(), "GptSetting_SyncGptKey")
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-13 15:44:13 +08:00
|
|
|
|
}
|