From 7666bdbabfb929f98e94310dbe99eabb435898a2 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期二, 07 一月 2025 15:03:07 +0800 Subject: [PATCH] tmp --- app/service/v2/app_driver/chat_dialog.py | 5 +++-- app/service/v2/chat.py | 25 +++++++++++++++++-------- alembic.ini | 1 + app/models/v2/session_model.py | 19 ++++++++++++++----- app/api/v2/chat.py | 2 +- 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/alembic.ini b/alembic.ini index f17b245..cf9fb48 100644 --- a/alembic.ini +++ b/alembic.ini @@ -61,6 +61,7 @@ # are written from script.py.mako # output_encoding = utf-8 +; sqlalchemy.url = mysql+pymysql://root:infini_rag_flow@192.168.20.119:5455/rag_basic sqlalchemy.url = mysql+pymysql://root:infini_rag_flow@192.168.20.119:5455/rag_basic diff --git a/app/api/v2/chat.py b/app/api/v2/chat.py index d656655..95d2962 100644 --- a/app/api/v2/chat.py +++ b/app/api/v2/chat.py @@ -12,4 +12,4 @@ @chat1_router.get("/chat_dialog") async def api_chat_dialog(dialog: ChatDialogData, db: Session = Depends(get_db), current_user: UserModel = Depends(get_current_user)): - return StreamingResponse(await service_chat_dialog(dialog.question, dialog.sessionId), media_type="text/event-stream") \ No newline at end of file + return StreamingResponse(await service_chat_dialog(dialog.chatId ,dialog.question, dialog.sessionId), media_type="text/event-stream") \ No newline at end of file diff --git a/app/models/v2/session_model.py b/app/models/v2/session_model.py index f6894c0..1bebe2f 100644 --- a/app/models/v2/session_model.py +++ b/app/models/v2/session_model.py @@ -5,7 +5,7 @@ import pytz from pydantic import BaseModel -from sqlalchemy import Column, String, Enum as SQLAlchemyEnum, Integer, DateTime, JSON, TEXT +from sqlalchemy import Column, String, Integer, DateTime, JSON, TEXT, Index from app.models.agent_model import AgentType # from app.models import current_time @@ -16,16 +16,24 @@ return datetime.now(tz) class SessionModel(Base): - __tablename__ = "sessions" - id = Column(String(255), primary_key=True) + __tablename__ = "chat_sessions" + + __table_args__ = ( + Index('idx_username', 'username'), + ) + + id = Column(Integer, primary_key=True) name = Column(String(255)) agent_id = Column(String(255)) - agent_type = Column(SQLAlchemyEnum(AgentType), nullable=False) # 鐩墠鍙瓨basic鐨勶紝ragflow鍜宐isheng鐨勮皟鎺ュ彛鑾峰彇 + agent_type = Column(Integer) # 鐩墠鍙瓨basic鐨勶紝ragflow鍜宐isheng鐨勮皟鎺ュ彛鑾峰彇 create_date = Column(DateTime, default=current_time) # 鍒涘缓鏃堕棿锛岄粯璁ゅ�间负褰撳墠鏃跺尯鏃堕棿 - update_date = Column(DateTime, default=current_time, onupdate=current_time) # 鏇存柊鏃堕棿锛岄粯璁ゅ�间负褰撳墠鏃跺尯鏃堕棿锛屾洿鏂版椂鑷姩鏇存柊 + update_date = Column(DateTime, default=current_time, onupdate=current_time, index=True) # 鏇存柊鏃堕棿锛岄粯璁ゅ�间负褰撳墠鏃跺尯鏃堕棿锛屾洿鏂版椂鑷姩鏇存柊 tenant_id = Column(Integer) # 鍒涘缓浜� message = Column(TEXT) # 璇存槑 + reference = Column(TEXT) # 璇存槑 conversation_id = Column(String(64)) + session_id = Column(String(36), index=True) + chat_mode = Column(Integer) # to_dict 鏂规硶 def to_dict(self): @@ -63,3 +71,4 @@ class ChatDialogData(BaseModel): sessionId: Optional[str] = "" question: str + chatId: str diff --git a/app/service/v2/app_driver/chat_dialog.py b/app/service/v2/app_driver/chat_dialog.py index 550bde9..9a7bf88 100644 --- a/app/service/v2/app_driver/chat_dialog.py +++ b/app/service/v2/app_driver/chat_dialog.py @@ -15,7 +15,8 @@ } - async def chat_completions(self): - async for rag_response in self.http_stream(token, chat_id, chat_history): + async def chat_completions(self, url, data, headers): + + async for rag_response in self.http_stream(url, data, headers): yield rag_response diff --git a/app/service/v2/chat.py b/app/service/v2/chat.py index df8cb0f..f35604a 100644 --- a/app/service/v2/chat.py +++ b/app/service/v2/chat.py @@ -1,14 +1,23 @@ +import json + +from app.service.v2.app_driver.chat_dialog import ChatDialog -async def service_chat_dialog(question: str, session_id: str): - - if session_id: - ... - - - +async def service_chat_dialog(chat_id:str, question: str, session_id: str): + token = "ragflow-YzMzE1NDRjYzMyZjExZWY5ZjkxMDI0Mm" + url = f"/api/v1/chats/{chat_id}/completions" + chat = ChatDialog(token) + data = { + "question": question, + "stream": True, + "session_id": session_id + } + headers = { + 'Content-Type': 'application/json', + 'Authorization': f"Bearer {token}" + } try: - for ans in chat(dia, msg, True, **req): + for ans in chat.chat_completions(url, data, headers): yield "data:" + json.dumps({"code": 0, "message": "", "data": ans}, ensure_ascii=False) + "\n\n" ConversationService.update_by_id(conv.id, conv.to_dict()) -- Gitblit v1.8.0