From 9dcfa8d047ab058cf2799b8ab4442fe678afbcb3 Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Fri, 5 Sep 2025 18:04:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0=E6=B5=81?= =?UTF-8?q?=E5=BC=8F=E8=81=8A=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ragflow_controller.py | 20 ++++++++++++++++++- .../module_admin/entity/vo/ragflow_vo.py | 12 +++++++++++ .../module_admin/service/ragflow_service.py | 12 ++++++++++- .../utils/ragflow_asy_util.py | 2 ++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py b/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py index e096f97..37021fd 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py @@ -15,7 +15,8 @@ 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, ListDocumentsQueryModel, UpdateFileModel, DeleteFileModel, CreateDatasetModel, DocumentIdsModel, UpdateChatAssistantModel,\ - CreateSessionWithChatModel + CreateSessionWithChatModel, ConverseWithChatAssistantModel +import asyncio # from config.env import RAGFlowConfig @@ -193,6 +194,23 @@ async def create_session_with_chat( result = await RAGFlowService.create_session_with_chat_services(create_params) return parse_result(result) +# 与聊天助手进行对话 +@ragflowController.post('/converse_with_chat_assistant') +async def converse_with_chat_assistant( + converse_params: ConverseWithChatAssistantModel, +): + """ + 与聊天助手进行对话 + """ + + result = await RAGFlowService.converse_with_chat_assistant_services(converse_params) + + async for t in result: + print(t) + await asyncio.sleep(0.5) + + # return parse_result(result) + def parse_result(result): code = result.get('code', 0) if code != 0: diff --git a/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py b/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py index 2b5d14b..7150481 100644 --- a/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py +++ b/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py @@ -131,6 +131,18 @@ class CreateSessionWithChatModel(BaseModel): name: str = Field(default = None, description='会话名称') user_id: Optional[str] = Field(default = None, description='用户ID') +class ConverseWithChatAssistantModel(BaseModel): + """ + 会话聊天模型 + """ + + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + + chat_id: str = Field(default = None, description='会话ID') + question: str = Field(default = None, description='问题') + stream: Optional[bool] = Field(default = True, description='是否流式返回') + session_id: Optional[str] = Field(default = None, description='会话ID') + user_id: Optional[str] = Field(default = None, description='用户ID') diff --git a/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py b/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py index 6ce84e5..20108e4 100644 --- a/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py @@ -1,9 +1,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from utils.ragflow_asy_util import AsyncRAGFlowClient from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel, UpdateFileModel, DeleteFileModel, CreateDatasetModel, DocumentIdsModel, UpdateChatAssistantModel \ - ,CreateSessionWithChatModel + ,CreateSessionWithChatModel, ConverseWithChatAssistantModel from config.env import RAGFlowConfig from typing import List +import asyncio class RAGFlowService: """ @@ -170,4 +171,13 @@ class RAGFlowService: async def create_session_with_chat_services(cls, create_params: CreateSessionWithChatModel): async with AsyncRAGFlowClient(RAGFlowConfig.RAGFLOW_BASE_URL, RAGFlowConfig.RAGFLOW_API_KEY) as client: result = await client.create_session_with_chat(**(create_params.model_dump())) + return result + + + # 与助手聊天 + @classmethod + async def converse_with_chat_assistant_services(cls, converse_params: ConverseWithChatAssistantModel): + async with AsyncRAGFlowClient(RAGFlowConfig.RAGFLOW_BASE_URL, RAGFlowConfig.RAGFLOW_API_KEY) as client: + result = await client.converse_with_chat_assistant(**(converse_params.model_dump())) + return result \ No newline at end of file diff --git a/ruoyi-fastapi-backend/utils/ragflow_asy_util.py b/ruoyi-fastapi-backend/utils/ragflow_asy_util.py index 3f8eeec..dd6209d 100644 --- a/ruoyi-fastapi-backend/utils/ragflow_asy_util.py +++ b/ruoyi-fastapi-backend/utils/ragflow_asy_util.py @@ -669,6 +669,8 @@ class AsyncRAGFlowClient: if session_id: data["session_id"] = session_id + + print(f"开始对话: {question} {session_id}") if user_id: data["user_id"] = user_id