from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from typing import Optional, List from module_admin.annotation.pydantic_annotation import as_query class RagflowListQueryModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) page: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页数量') orderby: Optional[str] = Field(default='create_time', description='排序字段') desc: Optional[str] = Field(default='true', description='排序方式') name: Optional[str] = Field(default=None, description='名称') # dataset_id: Optional[str] = Field(default=None, description='数据集ID') # chat_id: Optional[str] = Field(default=None, description='聊天ID') @as_query class ListDocumentsQueryModel(BaseModel): """ 查询文档列表参数模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) page: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页数量') orderby: Optional[str] = Field(default='create_time', description='排序字段') desc: Optional[str] = Field(default='true', description='排序方式') keywords: Optional[str] = Field(default=None, description='关键字') document_id: Optional[str] = Field(default=None, description='文档ID') document_name: Optional[str] = Field(default=None, description='文档名称') class UpdateFileModel(BaseModel): """ 更新文件模型 """ # name 要带文件后缀名 model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) name: Optional[str] = Field(default=None, description='文件名称') meta_fields: Optional[dict] = Field(default=None, description='文件元数据') # naive, manual qa table paper book laws presentation picture one email chunk_method: Optional[str] = Field(default=None, description='分块方法') # 不同的分块方法有不同的参数. parser_config: Optional[dict] = Field(default=None, description='解析器配置') class DocumentIdsModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) documnet_ids: list[str] = Field(default=None, description='文件ID列表') class DeleteFileModel(BaseModel): ids: List[str] = Field(description='文档ID列表') class CreateDatasetModel(BaseModel): """ 创建数据集参数模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) name:str = Field(description='数据集名称') avatar: Optional[str] = Field(default=None, description='数据集头像, base64编码') description: Optional[str] = Field(default=None, description='数据集描述') embedding_model: Optional[str] = Field(default=None, description='数据集的embedding模型') permission: Optional[str] = Field(default = "me", description='数据集权限') chunk_method: Optional[str] = Field(default = "naive", description='数据集分块方法') parser_config: Optional[dict] = Field(default = None, description='数据集解析配置')