GuXiaopeng commited on
Commit
320891d
·
1 Parent(s): 5904325

A3-R5H-R1 Gemini safe error detail (#108)

Browse files

- A3-R5H-R1 Gemini safe error detail (a864a79001f89debb5bc063de1e36f60c84871c2)

Files changed (1) hide show
  1. core/a3_gemini_live_probe.py +18 -5
core/a3_gemini_live_probe.py CHANGED
@@ -16,6 +16,7 @@ import threading
16
  from typing import Any, Mapping
17
 
18
  from core.provider_adapters.gemini_rest_adapter import GeminiRestAdapter
 
19
 
20
  _LOG = logging.getLogger(__name__)
21
  _LOCK = threading.Lock()
@@ -94,6 +95,22 @@ def _event_dict(event: Any) -> dict[str, Any]:
94
  return {}
95
 
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  def _safe_summary(case_id: str, profile_id: str, event: Mapping[str, Any], *, content_ok: bool) -> dict[str, Any]:
98
  return {
99
  "case_id": case_id,
@@ -219,9 +236,5 @@ def run_startup_probe_if_enabled() -> None:
219
  # Never log provider response bodies, prompts, headers, API keys, or raw exception strings.
220
  _LOG.error(
221
  "[A3_R5H_GEMINI_PROBE] %s",
222
- json.dumps({
223
- "probe": "A3-R5H",
224
- "status": "error",
225
- "error_class": exc.__class__.__name__,
226
- }, sort_keys=True),
227
  )
 
16
  from typing import Any, Mapping
17
 
18
  from core.provider_adapters.gemini_rest_adapter import GeminiRestAdapter
19
+ from core.provider_availability import classify_provider_error
20
 
21
  _LOG = logging.getLogger(__name__)
22
  _LOCK = threading.Lock()
 
95
  return {}
96
 
97
 
98
+ def _safe_error_summary(exc: BaseException) -> dict[str, Any]:
99
+ """Return only non-sensitive operational diagnostics for a failed probe."""
100
+ signal = classify_provider_error(exc, provider="gemini")
101
+ return {
102
+ "probe": "A3-R5H",
103
+ "status": "error",
104
+ "error_class": exc.__class__.__name__,
105
+ "error_kind": signal.error_kind,
106
+ "availability_state": signal.availability_state,
107
+ "http_status": signal.http_status,
108
+ "provider_code": signal.provider_code,
109
+ "safe_reason_code": signal.safe_reason_code,
110
+ "retry_after_seconds": signal.retry_after_seconds,
111
+ }
112
+
113
+
114
  def _safe_summary(case_id: str, profile_id: str, event: Mapping[str, Any], *, content_ok: bool) -> dict[str, Any]:
115
  return {
116
  "case_id": case_id,
 
236
  # Never log provider response bodies, prompts, headers, API keys, or raw exception strings.
237
  _LOG.error(
238
  "[A3_R5H_GEMINI_PROBE] %s",
239
+ json.dumps(_safe_error_summary(exc), sort_keys=True),
 
 
 
 
240
  )