From fa6265013d2aef3e535838e1710b13a2b5304d43 Mon Sep 17 00:00:00 2001 From: tcmofashi Date: Sun, 13 Apr 2025 15:41:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D=E6=A8=A1=E6=9D=BF=E7=9A=84=E5=90=84=E7=A7=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/utils/prompt_builder.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/plugins/utils/prompt_builder.py b/src/plugins/utils/prompt_builder.py index 1572eaac9..e4d2e35c6 100644 --- a/src/plugins/utils/prompt_builder.py +++ b/src/plugins/utils/prompt_builder.py @@ -2,6 +2,10 @@ from typing import Dict, Any, Optional, List, Union import re from contextlib import asynccontextmanager import asyncio +from src.common.logger import get_module_logger +import traceback + +logger = get_module_logger("prompt_build") class PromptContext: @@ -148,12 +152,19 @@ class Prompt(str): # 处理位置参数 if args: + # print(len(template_args), len(args), template_args, args) for i in range(len(args)): - arg = args[i] - if isinstance(arg, Prompt): - formatted_args[template_args[i]] = arg.format(**kwargs) + if i < len(template_args): + arg = args[i] + if isinstance(arg, Prompt): + formatted_args[template_args[i]] = arg.format(**kwargs) + else: + formatted_args[template_args[i]] = arg else: - formatted_args[template_args[i]] = arg + logger.error( + f"构建提示词模板失败,解析到的参数列表{template_args},长度为{len(template_args)},输入的参数列表为{args},提示词模板为{template}" + ) + raise ValueError("格式化模板失败") # 处理关键字参数 if kwargs: @@ -178,7 +189,7 @@ class Prompt(str): f"格式化模板失败: {template}, args={formatted_args}, kwargs={formatted_kwargs} {str(e)}" ) from e - def format(self, *args, **kwargs) -> "Prompt": + def format(self, *args, **kwargs) -> "str": """支持位置参数和关键字参数的格式化,使用""" ret = type(self)( self.template, @@ -187,10 +198,8 @@ class Prompt(str): _should_register=False, **kwargs if kwargs else self._kwargs, ) - ret.template = str(ret) - print(f"prompt build result: {ret} name: {ret.name} ") - print(global_prompt_manager._prompts["schedule_prompt"]) - return ret + # print(f"prompt build result: {ret} name: {ret.name} ") + return str(ret) def __str__(self) -> str: if self._kwargs or self._args: From 345d8fff9a00e932b6807512509feecc5fdd2bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sun, 13 Apr 2025 15:43:53 +0800 Subject: [PATCH 2/2] fix: Ruff --- src/plugins/utils/prompt_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/utils/prompt_builder.py b/src/plugins/utils/prompt_builder.py index e4d2e35c6..ec8ae66c4 100644 --- a/src/plugins/utils/prompt_builder.py +++ b/src/plugins/utils/prompt_builder.py @@ -3,7 +3,7 @@ import re from contextlib import asynccontextmanager import asyncio from src.common.logger import get_module_logger -import traceback +# import traceback logger = get_module_logger("prompt_build")