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