rydlrKE commited on
Commit
1dbab1b
·
1 Parent(s): 1f56ace

Improve error extraction: collect all error strings from text encoder response

Browse files
Files changed (1) hide show
  1. kimodo/model/text_encoder_api.py +15 -24
kimodo/model/text_encoder_api.py CHANGED
@@ -51,31 +51,22 @@ class TextEncoderAPI:
51
  elif result is not None:
52
  candidates = [result]
53
 
 
54
  for item in candidates:
55
- # Check for error title marker first (e.g., "## Encoder initialization failed")
56
- if isinstance(item, str):
57
- if item and item.startswith("##"):
58
- error_msg = item.replace("##", "").strip()
59
- # Collect remaining candidates for more detail
60
- rest = [c for c in candidates if c is not item and isinstance(c, str) and c]
61
- detail = " | ".join(rest) if rest else ""
62
- full_msg = f"{error_msg}" + (f": {detail}" if detail else "")
63
- raise RuntimeError(f"Text encoder server error: {full_msg}")
64
- if item and item.endswith(".npy"):
65
- return item
66
- if item:
67
- # Log unexpected string for debugging
68
- print(f"[text_encoder_api] unexpected string response: {item[:100]}")
69
-
70
- if isinstance(item, dict):
71
- for key in ("value", "path", "name"):
72
- value = item.get(key)
73
- if isinstance(value, str) and value:
74
- # Check for errors in dict values too
75
- if value.startswith("##") or "failed" in value.lower() or "error" in value.lower():
76
- raise RuntimeError(f"Text encoder API error: {value}")
77
- if value.endswith(".npy"):
78
- return value
79
 
80
  raise RuntimeError(f"Text encoder API returned unexpected payload: {result!r}")
81
 
 
51
  elif result is not None:
52
  candidates = [result]
53
 
54
+ # First pass: check for valid .npy paths
55
  for item in candidates:
56
+ if isinstance(item, str) and item and item.endswith(".npy"):
57
+ return item
58
+
59
+ # Second pass: collect all error indicators
60
+ error_parts = []
61
+ for item in candidates:
62
+ if isinstance(item, str) and item:
63
+ if item.startswith("##") or "failed" in item.lower() or "error" in item.lower():
64
+ error_parts.append(item.strip())
65
+
66
+ if error_parts:
67
+ # Combine all error messages
68
+ full_error = "\n".join(error_parts)
69
+ raise RuntimeError(f"Text encoder initialization failed:\n{full_error}")
 
 
 
 
 
 
 
 
 
 
70
 
71
  raise RuntimeError(f"Text encoder API returned unexpected payload: {result!r}")
72