Skip to content

Commit 5f83c9b

Browse files
committed
fix: parse sql/chart error log
1 parent d018af0 commit 5f83c9b

File tree

1 file changed

+39
-27
lines changed

1 file changed

+39
-27
lines changed

backend/apps/chat/task/llm.py

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -655,14 +655,21 @@ def check_sql(self, res: str) -> tuple[any]:
655655
if json_str is None:
656656
raise SingleMessageError(orjson.dumps({'message': 'Cannot parse sql from answer',
657657
'traceback': "Cannot parse sql from answer:\n" + res}).decode())
658-
data: dict = orjson.loads(json_str)
659-
sql = ''
660-
message = ''
661-
if data['success']:
662-
sql = data['sql']
663-
else:
664-
message = data['message']
665-
raise SingleMessageError(message)
658+
sql: str
659+
data: dict
660+
try:
661+
data = orjson.loads(json_str)
662+
663+
if data['success']:
664+
sql = data['sql']
665+
else:
666+
message = data['message']
667+
raise SingleMessageError(message)
668+
except SingleMessageError as e:
669+
raise e
670+
except Exception:
671+
raise SingleMessageError(orjson.dumps({'message': 'Cannot parse sql from answer',
672+
'traceback': "Cannot parse sql from answer:\n" + res}).decode())
666673

667674
if sql.strip() == '':
668675
raise SingleMessageError("SQL query is empty")
@@ -682,31 +689,36 @@ def check_save_chart(self, res: str) -> Dict[str, Any]:
682689
if json_str is None:
683690
raise SingleMessageError(orjson.dumps({'message': 'Cannot parse chart config from answer',
684691
'traceback': "Cannot parse chart config from answer:\n" + res}).decode())
685-
data = orjson.loads(json_str)
692+
data: dict
686693

687694
chart: Dict[str, Any] = {}
688695
message = ''
689696
error = False
690697

691-
if data['type'] and data['type'] != 'error':
692-
# todo type check
693-
chart = data
694-
if chart.get('columns'):
695-
for v in chart.get('columns'):
696-
v['value'] = v.get('value').lower()
697-
if chart.get('axis'):
698-
if chart.get('axis').get('x'):
699-
chart.get('axis').get('x')['value'] = chart.get('axis').get('x').get('value').lower()
700-
if chart.get('axis').get('y'):
701-
chart.get('axis').get('y')['value'] = chart.get('axis').get('y').get('value').lower()
702-
if chart.get('axis').get('series'):
703-
chart.get('axis').get('series')['value'] = chart.get('axis').get('series').get('value').lower()
704-
elif data['type'] == 'error':
705-
message = data['reason']
706-
error = True
707-
else:
708-
message = 'Chart is empty'
698+
try:
699+
data = orjson.loads(json_str)
700+
if data['type'] and data['type'] != 'error':
701+
# todo type check
702+
chart = data
703+
if chart.get('columns'):
704+
for v in chart.get('columns'):
705+
v['value'] = v.get('value').lower()
706+
if chart.get('axis'):
707+
if chart.get('axis').get('x'):
708+
chart.get('axis').get('x')['value'] = chart.get('axis').get('x').get('value').lower()
709+
if chart.get('axis').get('y'):
710+
chart.get('axis').get('y')['value'] = chart.get('axis').get('y').get('value').lower()
711+
if chart.get('axis').get('series'):
712+
chart.get('axis').get('series')['value'] = chart.get('axis').get('series').get('value').lower()
713+
elif data['type'] == 'error':
714+
message = data['reason']
715+
error = True
716+
else:
717+
raise Exception('Chart is empty')
718+
except Exception:
709719
error = True
720+
message = orjson.dumps({'message': 'Cannot parse chart config from answer',
721+
'traceback': "Cannot parse chart config from answer:\n" + res}).decode()
710722

711723
if error:
712724
raise SingleMessageError(message)

0 commit comments

Comments
 (0)