app/api/agent.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/api/chat.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/service/basic.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/service/session.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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"}) 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") 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 ) 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: