|
@@ -200,6 +200,7 @@ async def handle_client(websocket: WebSocket,
|
|
|
pass
|
|
pass
|
|
|
elif agent_type == AgentType.BASIC:
|
|
elif agent_type == AgentType.BASIC:
|
|
|
try:
|
|
try:
|
|
|
|
|
+ service = BasicService(base_url=settings.basic_base_url)
|
|
|
while True:
|
|
while True:
|
|
|
# 接收前端消息
|
|
# 接收前端消息
|
|
|
message = await websocket.receive_json()
|
|
message = await websocket.receive_json()
|
|
@@ -213,36 +214,61 @@ async def handle_client(websocket: WebSocket,
|
|
|
if not question:
|
|
if not question:
|
|
|
await websocket.send_json({"message": "Invalid request", "type": "error"})
|
|
await websocket.send_json({"message": "Invalid request", "type": "error"})
|
|
|
continue
|
|
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", "")
|
|
|
|
|
|
|
|
- service = BasicService(base_url=settings.basic_base_url)
|
|
|
|
|
- async for result in service.excel_talk(question, chat_id):
|
|
|
|
|
- try:
|
|
|
|
|
- if result[:5] == "data:":
|
|
|
|
|
- # 如果是,则截取掉前5个字符,并去除首尾空白符
|
|
|
|
|
- text = result[5:].strip()
|
|
|
|
|
- else:
|
|
|
|
|
- # 否则,保持原样
|
|
|
|
|
- text = result
|
|
|
|
|
|
|
+ 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}
|
|
|
|
|
+ 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}")
|
|
|
|
|
+ else:
|
|
|
|
|
+ async for result in service.excel_talk(question, chat_id):
|
|
|
try:
|
|
try:
|
|
|
- data = json.loads(text)
|
|
|
|
|
- output = data.get("output", "")
|
|
|
|
|
- excel_name = data.get("excel_name", "")
|
|
|
|
|
- image_name = data.get("image_name", "")
|
|
|
|
|
- excel_url = None
|
|
|
|
|
- image_url = None
|
|
|
|
|
- if excel_name:
|
|
|
|
|
- excel_url = f"/api/files/download/?agent_id=basic_excel_talk&file_id={excel_name}&file_type=excel"
|
|
|
|
|
- if image_name:
|
|
|
|
|
- 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}
|
|
|
|
|
- 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}")
|
|
|
|
|
|
|
+ if result[:5] == "data:":
|
|
|
|
|
+ # 如果是,则截取掉前5个字符,并去除首尾空白符
|
|
|
|
|
+ text = result[5:].strip()
|
|
|
|
|
+ else:
|
|
|
|
|
+ # 否则,保持原样
|
|
|
|
|
+ text = result
|
|
|
|
|
+ try:
|
|
|
|
|
+ data = json.loads(text)
|
|
|
|
|
+ output = data.get("output", "")
|
|
|
|
|
+ excel_name = data.get("excel_name", "")
|
|
|
|
|
+ image_name = data.get("image_name", "")
|
|
|
|
|
+ excel_url = None
|
|
|
|
|
+ image_url = None
|
|
|
|
|
+ if excel_name:
|
|
|
|
|
+ excel_url = f"/api/files/download/?agent_id=basic_excel_talk&file_id={excel_name}&file_type=excel"
|
|
|
|
|
+ if image_name:
|
|
|
|
|
+ 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}
|
|
|
|
|
+ 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}")
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
await websocket.send_json({"message": str(e), "type": "error"})
|
|
await websocket.send_json({"message": str(e), "type": "error"})
|
|
|
finally:
|
|
finally:
|