From 3994ea6990b21c6fb8337f751380241f0062eeb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E6=B2=B3=E6=99=B4?= Date: Fri, 13 Mar 2026 02:10:47 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20Prompt=20?= =?UTF-8?q?=E7=B1=BB=E7=9A=84=E5=85=8B=E9=9A=86=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=8B=E9=9A=86=E6=A0=87=E8=AE=B0=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/prompt/prompt_manager.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/prompt/prompt_manager.py b/src/prompt/prompt_manager.py index 910df7ad..5282b7ef 100644 --- a/src/prompt/prompt_manager.py +++ b/src/prompt/prompt_manager.py @@ -11,8 +11,8 @@ from src.common.prompt_i18n import list_prompt_templates, load_prompt logger = get_logger("Prompt") -_LEFT_BRACE = "\ufde9" -_RIGHT_BRACE = "\ufdea" +_LEFT_BRACE = chr(0xFDE9) +_RIGHT_BRACE = chr(0xFDEA) PROJECT_ROOT = Path(__file__).resolve().parents[2] PROMPTS_DIR = PROJECT_ROOT / "prompts" @@ -47,7 +47,14 @@ class Prompt: def clone(self) -> "Prompt": return Prompt(self.prompt_name, self.template) - def __post_init__(self): + @property + def is_cloned(self) -> bool: + return self._is_cloned + + def mark_as_cloned(self) -> None: + self._is_cloned = True + + def __post_init__(self) -> None: if not self.prompt_name: raise ValueError("prompt_name 不能为空") if not self.template: @@ -157,7 +164,7 @@ class PromptManager: if prompt_name not in self.prompts: raise KeyError(f"Prompt name '{prompt_name}' 不存在") prompt = self.prompts[prompt_name].clone() - prompt._is_cloned = True + prompt.mark_as_cloned() return prompt async def render_prompt(self, prompt: Prompt) -> str: @@ -171,7 +178,7 @@ class PromptManager: Raises: ValueError: 如果传入的 Prompt 实例不是通过 get_prompt 方法获取的克隆实例则引发该异常 """ - if not prompt._is_cloned: + if not prompt.is_cloned: raise ValueError( "只能渲染通过 PromptManager.get_prompt 方法获取的 Prompt 实例,你可能对原始实例进行了修改和渲染操作" )