mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-09-06 16:07:17 +08:00
add check llm config logic before run read no reply reminder
This commit is contained in:
@@ -517,7 +517,21 @@ export default function initIpc() {
|
|||||||
ipcMain.handle('overwrite-auto-remind-prompt-with-default', async () => {
|
ipcMain.handle('overwrite-auto-remind-prompt-with-default', async () => {
|
||||||
await writeDefaultAutoRemindPrompt()
|
await writeDefaultAutoRemindPrompt()
|
||||||
})
|
})
|
||||||
|
ipcMain.handle('check-if-llm-config-list-valid', async () => {
|
||||||
|
const llmConfigList = await readConfigFile('llm.json')
|
||||||
|
if (!Array.isArray(llmConfigList) || !llmConfigList?.length) {
|
||||||
|
throw new Error('CANNOT_FIND_VALID_CONFIG')
|
||||||
|
}
|
||||||
|
if (llmConfigList.some((it) => !/^http(s)?:\/\//.test(it.providerCompleteApiUrl))) {
|
||||||
|
throw new Error('CANNOT_FIND_VALID_CONFIG')
|
||||||
|
}
|
||||||
|
if (llmConfigList.length > 1) {
|
||||||
|
const firstEnabledModel = llmConfigList.find((it) => it.enabled)
|
||||||
|
if (!firstEnabledModel) {
|
||||||
|
throw new Error('CANNOT_FIND_VALID_CONFIG')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
ipcMain.handle('exit-app-immediately', () => {
|
ipcMain.handle('exit-app-immediately', () => {
|
||||||
app.exit(0)
|
app.exit(0)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -261,57 +261,95 @@ const handleSubmit = async () => {
|
|||||||
await formRef.value!.validate()
|
await formRef.value!.validate()
|
||||||
await electron.ipcRenderer.invoke('save-config-file-from-ui', JSON.stringify(formContent.value))
|
await electron.ipcRenderer.invoke('save-config-file-from-ui', JSON.stringify(formContent.value))
|
||||||
gtagRenderer('config_saved')
|
gtagRenderer('config_saved')
|
||||||
try {
|
|
||||||
await electron.ipcRenderer.invoke('check-if-auto-remind-prompt-valid')
|
|
||||||
} catch (err) {
|
|
||||||
if (err?.message?.includes(`RESUME_PLACEHOLDER_NOT_EXIST`)) {
|
|
||||||
gtagRenderer('cannot_launch_due_to_resume_placeholder_not_exist')
|
|
||||||
console.log(`提示词模板无效`, err)
|
|
||||||
ElMessageBox.confirm(
|
|
||||||
'提示词模板缺少简历内容占位符:<br /><b>__REPLACE_REAL_RESUME_HERE__</b><br /><br />您是否希望还原默认的提示词模板?',
|
|
||||||
'',
|
|
||||||
{
|
|
||||||
confirmButtonText: '是',
|
|
||||||
cancelButtonText: '否',
|
|
||||||
type: 'warning',
|
|
||||||
closeOnClickModal: false,
|
|
||||||
dangerouslyUseHTMLString: true
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then(async () => {
|
|
||||||
gtagRenderer('reset_template_clicked_in_invalid_tip_dialog')
|
|
||||||
await restoreDefaultTemplate()
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
gtagRenderer('close_invalid_tip_dialog')
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
gtagRenderer('cannot_launch_due_to_unknown_error', { err })
|
|
||||||
ElMessage({
|
|
||||||
type: 'error',
|
|
||||||
message: '用于生成自动提醒消息的提示词检查未通过,请重试'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (
|
if (
|
||||||
formContent.value.autoReminder?.rechatContentSource ===
|
formContent.value.autoReminder?.rechatContentSource ===
|
||||||
RECHAT_CONTENT_SOURCE.GEMINI_WITH_CHAT_CONTEXT &&
|
RECHAT_CONTENT_SOURCE.GEMINI_WITH_CHAT_CONTEXT
|
||||||
!(await electron.ipcRenderer.invoke('resume-content-enough-detect'))
|
|
||||||
) {
|
) {
|
||||||
gtagRenderer('resume_content_not_enough_dialog_show')
|
|
||||||
try {
|
try {
|
||||||
await ElMessageBox.confirm(
|
await electron.ipcRenderer.invoke('check-if-llm-config-list-valid')
|
||||||
`简历内容可能不够充足(各个部分内容长度相加 <800 字)<br />后续大模型根据简历生成的内容将可能不符合预期(例如相同内容重复生成、生成预期之外的内容)<br /><br />要继续运行吗?`,
|
} catch (err) {
|
||||||
{
|
if (err?.message?.includes(`CANNOT_FIND_VALID_CONFIG`)) {
|
||||||
cancelButtonText: '不,我再看看',
|
gtagRenderer('cannot_launch_due_to_invalid_llm_config')
|
||||||
confirmButtonText: '是的,继续运行',
|
console.log(`大模型配置无效`, err)
|
||||||
dangerouslyUseHTMLString: true
|
ElMessageBox.confirm(
|
||||||
}
|
'大模型配置不存在或者包含无效配置<br />您是否希望查看并修正当前大模型配置?',
|
||||||
)
|
'',
|
||||||
} catch {
|
{
|
||||||
|
confirmButtonText: '是',
|
||||||
|
cancelButtonText: '否',
|
||||||
|
type: 'warning',
|
||||||
|
closeOnClickModal: false,
|
||||||
|
dangerouslyUseHTMLString: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(async () => {
|
||||||
|
gtagRenderer('view_llm_config_clicked_in_invalid_tip_dialog')
|
||||||
|
try {
|
||||||
|
await electron.ipcRenderer.invoke('llm-config')
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
gtagRenderer('close_invalid_llm_config_tip_dialog')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
gtagRenderer('cannot_launch_due_to_unknown_error_when_check_llm_config', { err })
|
||||||
|
ElMessage({
|
||||||
|
type: 'error',
|
||||||
|
message: '大模型配置检查未通过,请重试'
|
||||||
|
})
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
await electron.ipcRenderer.invoke('check-if-auto-remind-prompt-valid')
|
||||||
|
} catch (err) {
|
||||||
|
if (err?.message?.includes(`RESUME_PLACEHOLDER_NOT_EXIST`)) {
|
||||||
|
gtagRenderer('cannot_launch_due_to_resume_placeholder_not_exist')
|
||||||
|
console.log(`提示词模板无效`, err)
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
'提示词模板缺少简历内容占位符:<br /><b>__REPLACE_REAL_RESUME_HERE__</b><br /><br />您是否希望还原默认的提示词模板?',
|
||||||
|
'',
|
||||||
|
{
|
||||||
|
confirmButtonText: '是',
|
||||||
|
cancelButtonText: '否',
|
||||||
|
type: 'warning',
|
||||||
|
closeOnClickModal: false,
|
||||||
|
dangerouslyUseHTMLString: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(async () => {
|
||||||
|
gtagRenderer('reset_template_clicked_in_invalid_tip_dialog')
|
||||||
|
await restoreDefaultTemplate()
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
gtagRenderer('close_invalid_resume_template_tip_dialog')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
gtagRenderer('cannot_launch_due_to_unknown_error_when_check_prompt', { err })
|
||||||
|
ElMessage({
|
||||||
|
type: 'error',
|
||||||
|
message: '用于生成自动提醒消息的提示词检查未通过,请重试'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!(await electron.ipcRenderer.invoke('resume-content-enough-detect'))) {
|
||||||
|
gtagRenderer('resume_content_not_enough_dialog_show')
|
||||||
|
try {
|
||||||
|
await ElMessageBox.confirm(
|
||||||
|
`简历内容可能不够充足(各个部分内容长度相加 <800 字)<br />后续大模型根据简历生成的内容将可能不符合预期(例如相同内容重复生成、生成预期之外的内容)<br /><br />要继续运行吗?`,
|
||||||
|
{
|
||||||
|
cancelButtonText: '不,我再看看',
|
||||||
|
confirmButtonText: '是的,继续运行',
|
||||||
|
dangerouslyUseHTMLString: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} catch {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
gtagRenderer('reminder_launched')
|
gtagRenderer('reminder_launched')
|
||||||
router.replace({
|
router.replace({
|
||||||
|
|||||||
Reference in New Issue
Block a user