1.修改查询数据集列表接口方法名\n2.实现查询指定数据集下文件列表接口\n3.实现上传文件到ragflow直接上传字节数据版
This commit is contained in:
parent
724516d5bf
commit
19fed3551e
@ -13,7 +13,7 @@ from module_admin.service.ragflow_service import RAGFlowService
|
||||
from utils.log_util import logger
|
||||
from utils.page_util import PageResponseModel
|
||||
from utils.response_util import ResponseUtil
|
||||
from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel
|
||||
from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel
|
||||
# from config.env import RAGFlowConfig
|
||||
|
||||
|
||||
@ -21,19 +21,37 @@ from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel
|
||||
ragflowController = APIRouter(prefix="/system/ragflow", dependencies=[Depends(LoginService.get_current_user)])
|
||||
|
||||
|
||||
|
||||
@ragflowController.post("/dataset_list", response_model=PageResponseModel
|
||||
# 查看数据集列表
|
||||
@ragflowController.post("/dataset_list"
|
||||
# , response_model=PageResponseModel
|
||||
# , dependencies=[Depends(CheckUserInterfaceAuth("system:ragflow:list"))]"
|
||||
)
|
||||
async def get_system_ragflow_list(
|
||||
request: Request,
|
||||
rage_flow_query: RagflowListQueryModel ,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
rage_flow_dastset_query: RagflowListQueryModel ,
|
||||
# query_db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
|
||||
result = await RAGFlowService.get_ragflow_list_services(query_db, rage_flow_query)
|
||||
result = await RAGFlowService.get_ragflow_dataset_list_services(None, rage_flow_dastset_query)
|
||||
|
||||
return ResponseUtil.success(data = result)
|
||||
|
||||
# 获取分页数据
|
||||
# ragflow_list, total = await RagflowService.get_ragflow_list(query_db, ragflow_page_query)
|
||||
|
||||
# 列出数据集中文档列表
|
||||
@ragflowController.get("/list_documents/{dataset_id}")
|
||||
async def list_documents_by_dataset_id(
|
||||
request: Request,
|
||||
dataset_id: str,
|
||||
list_documents_query: ListDocumentsQueryModel = Depends(ListDocumentsQueryModel.as_query),
|
||||
|
||||
# query_db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
列出数据集中文档列表
|
||||
"""
|
||||
print(list_documents_query)
|
||||
result = await RAGFlowService.list_documents(None, dataset_id, list_documents_query)
|
||||
|
||||
return ResponseUtil.success(data = result)
|
||||
@ -14,3 +14,19 @@ class RagflowListQueryModel(BaseModel):
|
||||
desc: Optional[str] = Field(default='true', description='排序方式')
|
||||
name: Optional[str] = Field(default=None, description='名称')
|
||||
dataset_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='文档名称')
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from utils.ragflow_asy_util import AsyncRAGFlowClient
|
||||
from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel
|
||||
from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel
|
||||
from config.env import RAGFlowConfig
|
||||
|
||||
class RAGFlowService:
|
||||
@ -10,7 +10,7 @@ class RAGFlowService:
|
||||
|
||||
# 获取数据集列表
|
||||
@classmethod
|
||||
async def get_ragflow_list_services(cls, query_db: AsyncSession, rage_flow_query: RagflowListQueryModel):
|
||||
async def get_ragflow_dataset_list_services(cls, query_db: AsyncSession, rage_flow_query: RagflowListQueryModel):
|
||||
"""
|
||||
获取数据集列表
|
||||
"""
|
||||
@ -20,3 +20,16 @@ class RAGFlowService:
|
||||
|
||||
# 获取分页数据
|
||||
return result.get('data', None)
|
||||
|
||||
# 获取数据集中文档列表
|
||||
@classmethod
|
||||
async def list_documents(
|
||||
cls,
|
||||
query_db: AsyncSession,
|
||||
dataset_id: str,
|
||||
list_documents_query: ListDocumentsQueryModel,
|
||||
):
|
||||
async with AsyncRAGFlowClient(RAGFlowConfig.RAGFLOW_BASE_URL, RAGFlowConfig.RAGFLOW_API_KEY) as client:
|
||||
result = await client.list_documents(dataset_id=dataset_id, **(list_documents_query.model_dump()))
|
||||
|
||||
return result.get('data', None)
|
||||
@ -292,6 +292,38 @@ class AsyncRAGFlowClient:
|
||||
text = await response.text()
|
||||
raise RAGFlowError(response.status, text)
|
||||
|
||||
async def upload_documents_bytes(self, dataset_id: str, file_name, file_bytes: List) -> Dict[str, Any]:
|
||||
"""
|
||||
上传文档到数据集
|
||||
|
||||
Args:
|
||||
dataset_id: 数据集ID
|
||||
file_paths: 文件路径列表
|
||||
"""
|
||||
if not self._session:
|
||||
await self.create_session()
|
||||
|
||||
endpoint = f"/api/v1/datasets/{dataset_id}/documents"
|
||||
url = f"{self.base_url}{endpoint}"
|
||||
|
||||
# 准备multipart数据
|
||||
data = aiohttp.FormData()
|
||||
for file in file_bytes:
|
||||
|
||||
data.add_field('file', file, filename=file_name)
|
||||
|
||||
headers = {'Authorization': f'Bearer {self.api_key}'}
|
||||
|
||||
async with self._session.post(url, headers=headers, data=data) as response:
|
||||
try:
|
||||
result = await response.json()
|
||||
if result.get('code', 0) != 0:
|
||||
raise RAGFlowError(result.get('code'), result.get('message'))
|
||||
return result
|
||||
except (aiohttp.ContentTypeError, json.JSONDecodeError):
|
||||
text = await response.text()
|
||||
raise RAGFlowError(response.status, text)
|
||||
|
||||
async def update_document(self, dataset_id: str, document_id: str, name: Optional[str] = None,
|
||||
meta_fields: Optional[Dict[str, Any]] = None,
|
||||
chunk_method: Optional[str] = None,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user