feat: improve character preview generation and adjust emotion handling guidelines in LLM service

This commit is contained in:
2026-03-13 00:46:49 +08:00
parent c2e1ee0289
commit eca99da084
2 changed files with 28 additions and 12 deletions

View File

@@ -218,15 +218,14 @@ class LLMService:
"你是一个专业的有声书制作助手。请将给定的章节文本解析为对话片段列表。"
f"已知角色列表(必须从中选择):{names_str}"
"所有非对话的叙述文字归属于narrator角色。\n"
"同时根据语境为每个片段判断情绪类型和强度emo_alpha\n"
"可选情绪:开心、愤怒、悲伤、恐惧、厌恶、低沉、惊讶、中性\n"
"强度参考值仅供参考请根据实际语境自行判断开心≈0.4、愤怒≈0.08、悲伤≈0.1、恐惧≈0.1、厌恶≈0.4、低沉≈0.4、惊讶≈0.3、中性≈0.3\n"
"强度建议控制在0.5以下情绪越激烈越应克制强烈情绪不超过0.45\n"
"同一角色的连续台词,情绪应尽量保持一致或仅有微弱变化,避免情绪在相邻片段间跳跃。\n"
"narrator旁白及情绪不明显的片段emo_text设为\"\"emo_alpha设为0.3。\n"
"同时根据语境为每个片段判断是否有明显情绪有则设置情绪类型emo_text和强度emo_alpha,无则留空\n"
"可选情绪:开心、愤怒、悲伤、恐惧、厌恶、低沉、惊讶。\n"
"情绪不明显或narrator旁白时emo_text设为\"\"emo_alpha设为0\n"
"各情绪强度上限(严格不超过):开心=0.35、愤怒=0.15、悲伤=0.1、恐惧=0.1、厌恶=0.35、低沉=0.35、惊讶=0.1\n"
"同一角色的连续台词,情绪应尽量保持一致或仅有微弱变化,避免相邻片段间情绪跳跃。\n"
"只输出JSON数组不要有其他文字格式如下\n"
'[{"character": "narrator", "text": "叙述文字", "emo_text": "", "emo_alpha": 0.3}, '
'{"character": "角色名", "text": "对话内容", "emo_text": "开心", "emo_alpha": 0.4}, ...]'
'[{"character": "narrator", "text": "叙述文字", "emo_text": "", "emo_alpha": 0}, '
'{"character": "角色名", "text": "对话内容", "emo_text": "开心", "emo_alpha": 0.3}, ...]'
)
user_message = f"请解析以下章节文本:\n\n{chapter_text}"
result = await self.stream_chat_json(system_prompt, user_message, on_token, max_tokens=16384, usage_callback=usage_callback)