optimize chat prompts

This commit is contained in:
Julian Freeman
2026-04-05 17:40:50 -04:00
parent db848bed92
commit 2e7789df63
3 changed files with 61 additions and 54 deletions

View File

@@ -181,7 +181,10 @@ const translateMessage = async (sender: 'me' | 'partner', retranslateId?: string
// 3. Prepare Prompt
const fromLang = sender === 'me' ? activeSession.value.me.language : activeSession.value.partner.language;
const toLang = sender === 'me' ? activeSession.value.partner.language : activeSession.value.me.language;
const myToneLabel = TONE_REGISTER_OPTIONS.find(o => o.value === activeSession.value!.me.tone)?.label || '随和';
const targetTone = sender === 'me'
? TONE_REGISTER_OPTIONS.find(o => o.value === activeSession.value!.me.tone)?.value || 'Polite & Conversational'
: 'Auto-detect';
const senderName = sender === 'me' ? activeSession.value.me.name : activeSession.value.partner.name;
const systemPrompt = settings.chatSystemPromptTemplate
.replace(/{ME_NAME}/g, activeSession.value.me.name)
@@ -191,15 +194,16 @@ const translateMessage = async (sender: 'me' | 'partner', retranslateId?: string
.replace(/{PART_GENDER}/g, activeSession.value.partner.gender)
.replace(/{PART_LANG}/g, activeSession.value.partner.language.englishName)
.replace(/{HISTORY_BLOCK}/g, historyBlock || 'None (This is the start of conversation)')
.replace(/{SENDER_NAME}/g, senderName)
.replace(/{FROM_LANG}/g, fromLang.englishName)
.replace(/{TO_LANG}/g, toLang.englishName)
.replace(/{MY_TONE}/g, myToneLabel);
.replace(/{TARGET_TONE}/g, targetTone);
const requestBody = {
model: settings.modelName,
messages: [
{ role: "system", content: systemPrompt },
{ role: "user", content: text }
{ role: "user", content: `[Text to Translate]\n${text}` }
],
stream: settings.enableStreaming
};
@@ -271,8 +275,8 @@ const evaluateMessage = async (messageId: string, force = false) => {
// 动态确定目标语气约束
const targetTone = msg.sender === 'me'
? (TONE_REGISTER_OPTIONS.find(o => o.value === activeSession.value!.me.tone)?.label || '随和')
: '自动识别 (保留原作者原始语气和情绪)';
? (TONE_REGISTER_OPTIONS.find(o => o.value === activeSession.value!.me.tone)?.value || 'Polite & Conversational')
: 'Auto-detect';
const systemPrompt = settings.chatEvaluationPromptTemplate
.replace(/{ME_NAME}/g, activeSession.value.me.name)
@@ -285,9 +289,9 @@ const evaluateMessage = async (messageId: string, force = false) => {
.replace(/{TARGET_TONE}/g, targetTone)
.replace(/{SENDER_NAME}/g, senderName)
.replace(/{FROM_LANG}/g, fromLang.englishName)
.replace(/{TO_LANG}/g, toLang.englishName)
.replace(/{ORIGINAL_TEXT}/g, msg.original)
.replace(/{CURRENT_TRANSLATION}/g, msg.translated);
.replace(/{TO_LANG}/g, toLang.englishName);
// .replace(/{ORIGINAL_TEXT}/g, msg.original)
// .replace(/{CURRENT_TRANSLATION}/g, msg.translated);
const userPrompt = `[Source Text]\n${msg.original}\n\n[Current Translation]\n${msg.translated}`;
@@ -367,14 +371,15 @@ const refineMessage = async (messageId: string) => {
return `${senderName}: "${m.original}"`;
}).join('\n');
const myToneLabel = TONE_REGISTER_OPTIONS.find(o => o.value === activeSession.value!.me.tone)?.label || '随和';
// 确定目标语气
const targetTone = msg.sender === 'me' ? myToneLabel : '自动识别 (保持原作者原始语气和情绪)';
const targetTone = msg.sender === 'me'
? TONE_REGISTER_OPTIONS.find(o => o.value === activeSession.value!.me.tone)?.value || 'Polite & Conversational'
: 'Auto-detect';
// 动态确定语言方向
const fromLang = msg.sender === 'me' ? activeSession.value.me.language : activeSession.value.partner.language;
const toLang = msg.sender === 'me' ? activeSession.value.partner.language : activeSession.value.me.language;
const senderName = msg.sender === 'me' ? activeSession.value.me.name : activeSession.value.partner.name;
const systemPrompt = settings.chatRefinementPromptTemplate
.replace(/{ME_NAME}/g, activeSession.value.me.name)
@@ -384,10 +389,11 @@ const refineMessage = async (messageId: string) => {
.replace(/{PART_GENDER}/g, activeSession.value.partner.gender)
.replace(/{PART_LANG}/g, activeSession.value.partner.language.englishName)
.replace(/{HISTORY_BLOCK}/g, historyBlock || 'None')
.replace(/{ORIGINAL_TEXT}/g, msg.original)
.replace(/{CURRENT_TRANSLATION}/g, msg.translated)
.replace(/{SUGGESTIONS}/g, suggestionsText)
// .replace(/{ORIGINAL_TEXT}/g, msg.original)
// .replace(/{CURRENT_TRANSLATION}/g, msg.translated)
// .replace(/{SUGGESTIONS}/g, suggestionsText)
.replace(/{TARGET_TONE}/g, targetTone)
.replace(/{SENDER_NAME}/g, senderName)
.replace(/{FROM_LANG}/g, fromLang.englishName)
.replace(/{TO_LANG}/g, toLang.englishName);
@@ -409,7 +415,7 @@ const refineMessage = async (messageId: string) => {
model: refineModelName,
messages: [
{ role: "system", content: systemPrompt },
{ role: "user", content: `Please refine the following original text: ${msg.original}` }
{ role: "user", content: `[Source Text]\n${msg.original}\n\n[Current Translation]\n${msg.translated}\n\n[Suggestions]\n${suggestionsText}` }
],
stream: settings.enableStreaming
};