feat: GLM 응답 content 비어있을 때 경고 메시지 추가 및 JSON 파싱 실패 처리 개선
- GLM 응답의 content가 비어있을 경우 경고 메시지를 출력하도록 로직 추가 - JSON 파싱 시 raw가 비어있을 경우 ValueError를 발생시켜 오류 처리를 강화 - 관련 문서 및 README.md에 변경 사항 반영
This commit is contained in:
@@ -313,6 +313,18 @@ class AIPlanner:
|
|||||||
t_json0 = time.perf_counter()
|
t_json0 = time.perf_counter()
|
||||||
data = json.loads(raw_text)
|
data = json.loads(raw_text)
|
||||||
content = data["choices"][0]["message"]["content"].strip()
|
content = data["choices"][0]["message"]["content"].strip()
|
||||||
|
if not content:
|
||||||
|
# content가 비어있으면 이후 JSON 파서가 원인 파악이 어렵다.
|
||||||
|
# GLM_DEBUG=1에서 raw 응답 일부를 함께 보여준다.
|
||||||
|
if _glm_debug_enabled():
|
||||||
|
finish_reason = data.get("choices", [{}])[0].get("finish_reason")
|
||||||
|
print(
|
||||||
|
"[경고] GLM 응답 content 비어있음 | "
|
||||||
|
f"finish_reason={finish_reason!r} | "
|
||||||
|
f"raw_preview={raw_text[:600]!r}"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("[경고] GLM 응답 content가 비어있습니다. (GLM_DEBUG=1 시 raw_preview 출력)")
|
||||||
t_json_done = time.perf_counter()
|
t_json_done = time.perf_counter()
|
||||||
|
|
||||||
dt_total = time.perf_counter() - t_total0
|
dt_total = time.perf_counter() - t_total0
|
||||||
@@ -359,6 +371,9 @@ class AIPlanner:
|
|||||||
return self._plan_from_actions_array(loaded)
|
return self._plan_from_actions_array(loaded)
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
pass
|
pass
|
||||||
|
if not text:
|
||||||
|
raise ValueError("JSON 파싱 실패: raw가 비어있습니다.")
|
||||||
|
|
||||||
start = text.find("{")
|
start = text.find("{")
|
||||||
if start == -1:
|
if start == -1:
|
||||||
# GLM이 상단 레벨에서 JSON 배열(`[ ... ]`)로 응답하는 경우를 허용
|
# GLM이 상단 레벨에서 JSON 배열(`[ ... ]`)로 응답하는 경우를 허용
|
||||||
|
|||||||
Reference in New Issue
Block a user