diff --git a/src/classes/story_teller.py b/src/classes/story_teller.py index e5e89eb..ff1374f 100644 --- a/src/classes/story_teller.py +++ b/src/classes/story_teller.py @@ -1,10 +1,29 @@ from __future__ import annotations from typing import Dict, TYPE_CHECKING +import random from src.utils.config import CONFIG from src.utils.llm import get_prompt_and_call_llm +story_styles = [ + "平淡叙述:语句克制、少修饰、像旁观者记录。", + "寓情于景:以景见情,情随境迁,情景交融。", + "写意古风:重意象与比兴,点到为止,少生僻文言。", + "市井烟火:接地气,含些俗语但不粗鄙,烟火气足。", + "悬疑铺垫:埋伏笔与反转,信息递进,结尾留一丝余味。", + "诗意抒情:短句与对仗点缀,少量用典,不堆砌辞藻。", + "哲思寓言:借事设问,含一两句点睛之语,不说教。", + "黑色幽默:以反差与轻描淡写呈现荒诞,克制机锋。", + "编年纪事:近史官笔法,记事有序,少形容词。", + "碎片蒙太奇:并置数个短镜头,以意连形,留白。", + "景物拟人:对景施以轻微拟人,景中含志,不滥。", + "道法自然:以道家语汇点染,不艰涩,收束于一念。", + "佛理空相:无常、空相的领悟穿插事中,轻淡不玄。", + "民间说书:似说书人口吻但用书面语,收尾有眼。", + "雅致书卷:书卷气、引文气息浅尝辄止,不显摆。", +] + class StoryTeller: """ @@ -37,15 +56,11 @@ class StoryTeller: "avatar_infos": avatar_infos, "event": event, "res": res, + "style": random.choice(story_styles), } - try: - data = get_prompt_and_call_llm(template_path, infos, mode="fast") - story = str(data.get("story", "")).strip() - if story: - return story - except Exception: - return (res or event or "") - return (res or event or "") + data = get_prompt_and_call_llm(template_path, infos, mode="fast") + story = data["story"].strip() + return story __all__ = ["StoryTeller"] diff --git a/static/templates/story.txt b/static/templates/story.txt index 517a50b..2965668 100644 --- a/static/templates/story.txt +++ b/static/templates/story.txt @@ -1,4 +1,5 @@ 你是一个故事讲述者,这是一个仙侠世界,你需要把一个事件扩展为一个约150字的小故事。 +写作风格提示:{style} 你需要进行决策的NPC的dict[AvatarName, info]为 {avatar_infos} @@ -9,5 +10,5 @@ 注意,只返回json格式的结果,格式为: {{ - "story": "", // 第三人称的故事描述,仙侠语言风格 + "story": "", // 第三人称的故事正文,仙侠语言风格 }} \ No newline at end of file