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