From ce9fb375be9a551b4cdc5cb78a759fbcea1eac22 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 21 十一月 2024 20:13:04 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/rag-gateway
---
app/api/chat.py | 62 +++++++++++++++----------------
app/service/basic.py | 8 +++-
app/service/session.py | 17 ++++----
app/api/agent.py | 6 +-
4 files changed, 48 insertions(+), 45 deletions(-)
diff --git a/app/api/agent.py b/app/api/agent.py
index af36024..fe6e6c0 100644
--- a/app/api/agent.py
+++ b/app/api/agent.py
@@ -60,7 +60,7 @@
elif agent.agent_type == AgentType.BASIC:
offset = (page - 1) * limit
- records = db.query(SessionModel).filter(SessionModel.agent_id == agent_id).offset(offset).limit(limit).all()
+ records = db.query(SessionModel).filter(SessionModel.agent_id == agent_id, SessionModel.tenant_id==current_user.id).offset(offset).limit(limit).all()
result = [item.to_dict() for item in records]
return ResponseList(code=200, msg="", data=result)
@@ -140,8 +140,8 @@
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
elif agent.agent_type == AgentType.BASIC:
- session = db.query(SessionModel).filter(SessionModel.agent_id == agent_id, SessionModel.tenant_id==current_user.id).first()
- return JSONResponse(status_code=200, content={"code": 200, "data": session.log_to_json()})
+ session = db.query(SessionModel).filter(SessionModel.id == conversation_id).first()
+ return JSONResponse(status_code=200, content={"code": 200, "data": session.log_to_json() if session else {}})
else:
return JSONResponse(status_code=200, content={"code": 200, "log": "Unsupported agent type"})
diff --git a/app/api/chat.py b/app/api/chat.py
index 11af093..9784eb9 100644
--- a/app/api/chat.py
+++ b/app/api/chat.py
@@ -220,37 +220,32 @@
if not question:
await websocket.send_json({"message": "Invalid request", "type": "error"})
continue
- if agent.agent_type == "questionTalk":
- async for result in service.questions_talk(question, chat_id):
- try:
- if result[:5] == "data:":
- # 濡傛灉鏄紝鍒欐埅鍙栨帀鍓�5涓瓧绗︼紝骞跺幓闄ら灏剧┖鐧界
- text = result[5:].strip()
- else:
- # 鍚﹀垯锛屼繚鎸佸師鏍�
- text = result
- try:
- data = json.loads(text)
- output = data.get("output", "")
- file_name = data.get("filename", "")
+ logger.error(agent.type)
+ if agent.type == "questionTalk":
- excel_url = None
- if file_name:
- excel_url = f"/api/files/download/?agent_id=basic_question_talk&file_id={file_name}&file_type=word"
- result = {"message": output, "type": "message", "file_url": excel_url}
- try:
- SessionService(db).update_session(session_id=chat_id, is_incr=1,
- message={"role": "assistant", "content": result})
- except Exception as e:
- logger.error(e)
- await websocket.send_json(result | data)
- except json.JSONDecodeError as e:
- print(f"Error decoding JSON: {e}")
- # print(f"Response text: {text}")
- except Exception as e2:
- result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"}
- await websocket.send_json(result)
- print(f"Error process message of basic agent: {e2}")
+ try:
+ data = await service.questions_talk(question, chat_id)
+ output = data.get("output", "")
+ file_name = data.get("filename", "")
+
+ excel_url = None
+ if file_name:
+ excel_url = f"/api/files/download/?agent_id=basic_question_talk&file_id={file_name}&file_type=word"
+ result = {"message": output, "type": "message", "file_url": excel_url}
+ try:
+ SessionService(db).update_session(chat_id,
+ message={"role": "assistant", "content": result})
+ except Exception as e:
+ logger.error(e)
+ logger.error("-----------------11111111--------------------")
+ await websocket.send_json(result | data)
+ except Exception as e2:
+
+ result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"}
+ logger.error(str(e2))
+ logger.error(f"Error process message of basic chuti agent: {e2}")
+ await websocket.send_json(result)
+
else:
async for result in service.excel_talk(question, chat_id):
try:
@@ -273,7 +268,7 @@
image_url = f"/api/files/download/?agent_id=basic_excel_talk&file_id={image_name}&file_type=image"
result = {"message": output, "type": "message", "excel_url": excel_url, "image_url": image_url}
try:
- SessionService(db).update_session(session_id=chat_id, is_incr=1,
+ SessionService(db).update_session(chat_id,
message={"role": "assistant", "content": result})
except Exception as e:
logger.error(e)
@@ -286,7 +281,10 @@
await websocket.send_json(result)
print(f"Error process message of basic agent: {e2}")
except Exception as e:
- await websocket.send_json({"message": str(e), "type": "error"})
+ logger.error("----------------------------------------------fffffff")
+ logger.error(e)
+ print(e)
+ await websocket.send_json({"message": "鍑虹幇閿欒锛�", "type": "error"})
finally:
await websocket.close()
print(f"Client {agent_id} disconnected")
diff --git a/app/service/basic.py b/app/service/basic.py
index f3e5db5..33e5f86 100644
--- a/app/service/basic.py
+++ b/app/service/basic.py
@@ -1,5 +1,7 @@
import httpx
+from Log import logger
+
class BasicService:
def __init__(self, base_url: str):
@@ -73,13 +75,15 @@
else:
yield f"Error: {response.status_code}"
- async def questions_talk(self, chat_id: str):
+ async def questions_talk(self,question, chat_id: str):
+ logger.error("---------------questions_talk--------------------------")
url = f"{self.base_url}/questions/talk"
params = {'chat_id': chat_id}
headers = {'Content-Type': 'text/plain'}
- async with httpx.AsyncClient() as client:
+ async with httpx.AsyncClient(timeout=1800) as client:
response = await client.post(
url,
+ data=question,
headers=headers,
params=params
)
diff --git a/app/service/session.py b/app/service/session.py
index 78ae31a..dd60c26 100644
--- a/app/service/session.py
+++ b/app/service/session.py
@@ -1,5 +1,6 @@
from sqlalchemy.orm import Session
+from Log import logger
from app.models import AgentType
from app.models.session_model import SessionModel
@@ -29,7 +30,7 @@
new_session = SessionModel(
id=session_id,
- name=name,
+ name=name[0:200],
agent_id=agent_id,
agent_type=agent_type,
tenant_id = user_id,
@@ -63,16 +64,16 @@
杩斿洖:
SessionModel: 鏇存柊鍚庣殑浼氳瘽妯″瀷瀹炰緥銆�
"""
- session = self.get_session_by_id(session_id)
+ logger.error("鏇存柊鏁版嵁---------------------------")
+ session = self.db.query(SessionModel).filter_by(id=session_id).first()
if session:
if "message" in kwargs:
- message = session.message
+
+ message = session.message
message.append(kwargs["message"])
- kwargs["message"] = message
- for key, value in kwargs.items():
- setattr(session, key, value)
- self.db.commit()
- self.db.refresh(session)
+ session = message
+ self.db.commit()
+ self.db.refresh(session)
return session
def delete_session(self, session_id: str) -> None:
--
Gitblit v1.8.0