Spaces:
Running
Running
Commit ·
320891d
1
Parent(s): 5904325
A3-R5H-R1 Gemini safe error detail (#108)
Browse files- A3-R5H-R1 Gemini safe error detail (a864a79001f89debb5bc063de1e36f60c84871c2)
- 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 |
)
|