Files

89 lines
3.4 KiB
Python

"""提示词模板相关的Pydantic模型"""
from pydantic import BaseModel, Field, ConfigDict
from typing import Optional, List
from datetime import datetime
class PromptTemplateBase(BaseModel):
"""提示词模板基础模型"""
template_key: str = Field(..., description="模板键名")
template_name: str = Field(..., description="模板显示名称")
template_content: str = Field(..., description="模板内容")
description: Optional[str] = Field(None, description="模板描述")
category: Optional[str] = Field(None, description="模板分类")
parameters: Optional[str] = Field(None, description="模板参数定义(JSON)")
is_active: bool = Field(True, description="是否启用")
class PromptTemplateCreate(PromptTemplateBase):
"""创建提示词模板请求模型"""
pass
class PromptTemplateUpdate(BaseModel):
"""更新提示词模板请求模型"""
template_name: Optional[str] = Field(None, description="模板显示名称")
template_content: Optional[str] = Field(None, description="模板内容")
description: Optional[str] = Field(None, description="模板描述")
category: Optional[str] = Field(None, description="模板分类")
parameters: Optional[str] = Field(None, description="模板参数定义(JSON)")
is_active: Optional[bool] = Field(None, description="是否启用")
class PromptTemplateResponse(PromptTemplateBase):
"""提示词模板响应模型"""
model_config = ConfigDict(from_attributes=True)
id: str
user_id: str
is_system_default: bool
created_at: datetime
updated_at: datetime
class PromptTemplateListResponse(BaseModel):
"""提示词模板列表响应"""
templates: List[PromptTemplateResponse]
total: int
categories: List[str]
class PromptTemplateCategoryResponse(BaseModel):
"""提示词模板分类响应"""
category: str
count: int
templates: List[PromptTemplateResponse]
class PromptTemplateExportItem(BaseModel):
"""提示词模板导出项模型"""
template_key: str = Field(..., description="模板键名")
template_name: str = Field(..., description="模板显示名称")
template_content: str = Field(..., description="模板内容")
description: Optional[str] = Field(None, description="模板描述")
category: Optional[str] = Field(None, description="模板分类")
parameters: Optional[str] = Field(None, description="模板参数定义(JSON)")
is_active: bool = Field(True, description="是否启用")
is_customized: bool = Field(..., description="是否为用户自定义(false=系统默认,true=用户自定义)")
system_content_hash: Optional[str] = Field(None, description="系统默认内容的哈希值,用于比对")
class PromptTemplateExport(BaseModel):
"""提示词模板导出模型"""
templates: List[PromptTemplateExportItem]
export_time: datetime
version: str = "2.0"
statistics: Optional[dict] = Field(None, description="导出统计信息")
class PromptTemplateImportResult(BaseModel):
"""提示词模板导入结果"""
message: str
statistics: dict = Field(..., description="导入统计信息")
converted_templates: List[dict] = Field(default_factory=list, description="被转换为自定义的模板列表")
class PromptTemplatePreviewRequest(BaseModel):
"""提示词模板预览请求"""
template_content: str = Field(..., description="模板内容")
parameters: dict = Field(..., description="参数字典")