Merge branch 'master' of http://192.168.5.5:10010/r/rag-gateway
| | |
| | | |
| | | 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) |
| | | |
| | |
| | | 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"}) |
| | | |
| | |
| | | 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): |
| | | logger.error(agent.type) |
| | | if agent.type == "questionTalk": |
| | | |
| | | try: |
| | | if result[:5] == "data:": |
| | | # 如果是,则截取掉前5个字符,并去除首尾空白符 |
| | | text = result[5:].strip() |
| | | else: |
| | | # 否则,保持原样 |
| | | text = result |
| | | try: |
| | | data = json.loads(text) |
| | | data = await service.questions_talk(question, chat_id) |
| | | output = data.get("output", "") |
| | | file_name = data.get("filename", "") |
| | | |
| | |
| | | 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, |
| | | 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 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"} |
| | | logger.error(str(e2)) |
| | | logger.error(f"Error process message of basic chuti agent: {e2}") |
| | | await websocket.send_json(result) |
| | | print(f"Error process message of basic agent: {e2}") |
| | | |
| | | else: |
| | | async for result in service.excel_talk(question, chat_id): |
| | | try: |
| | |
| | | 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) |
| | |
| | | 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") |
| | |
| | | import httpx |
| | | |
| | | from Log import logger |
| | | |
| | | |
| | | class BasicService: |
| | | def __init__(self, base_url: str): |
| | |
| | | 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 |
| | | ) |
| | |
| | | from sqlalchemy.orm import Session |
| | | |
| | | from Log import logger |
| | | from app.models import AgentType |
| | | from app.models.session_model import SessionModel |
| | | |
| | |
| | | |
| | | new_session = SessionModel( |
| | | id=session_id, |
| | | name=name, |
| | | name=name[0:200], |
| | | agent_id=agent_id, |
| | | agent_type=agent_type, |
| | | tenant_id = user_id, |
| | |
| | | 返回: |
| | | 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.append(kwargs["message"]) |
| | | kwargs["message"] = message |
| | | for key, value in kwargs.items(): |
| | | setattr(session, key, value) |
| | | session = message |
| | | self.db.commit() |
| | | self.db.refresh(session) |
| | | return session |