From 8023233bb26f1b11f10866fbcb3f308c033780ba Mon Sep 17 00:00:00 2001 From: carry Date: Tue, 15 Apr 2025 16:54:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(prompt):=20=E5=A2=9E=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=8F=98=E9=87=8F=E6=9C=89=E6=95=88=E6=80=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 promptTempleta 模型中添加字段验证器 - 验证模板内容是否包含必要的 document_slice 变量 - 如果缺少该变量,抛出 ValueError 异常 --- schema/prompt.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/schema/prompt.py b/schema/prompt.py index a6143e3..a2d9122 100644 --- a/schema/prompt.py +++ b/schema/prompt.py @@ -1,6 +1,7 @@ -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, field_validator from typing import Optional from datetime import datetime, timezone +from langchain.prompts import PromptTemplate class promptTempleta(BaseModel): id: Optional[int] = Field(default=None, description="模板ID") @@ -10,4 +11,10 @@ class promptTempleta(BaseModel): created_at: str = Field( default_factory=lambda: datetime.now(timezone.utc).isoformat(), description="记录创建时间" - ) \ No newline at end of file + ) + + @field_validator('content') + def validate_content(cls, value): + if not "document_slice" in PromptTemplate.from_template(value).input_variables: + raise ValueError("模板变量缺少 document_slice") + return value \ No newline at end of file