Add automation status surface
This commit is contained in:
parent
3f85274916
commit
ffe10f098e
20 changed files with 1732 additions and 11 deletions
|
|
@ -17,6 +17,8 @@ import httpx
|
|||
class DisabledLLMClient:
|
||||
"""LLM client used when no llm-connect endpoint is configured."""
|
||||
|
||||
last_response_metadata: dict[str, Any] | None = None
|
||||
|
||||
def complete(
|
||||
self,
|
||||
prompt: str,
|
||||
|
|
@ -32,6 +34,7 @@ class LLMConnectClient:
|
|||
def __init__(self, base_url: str, timeout_seconds: float = 300.0) -> None:
|
||||
self.base_url = base_url.rstrip("/")
|
||||
self.timeout_seconds = timeout_seconds
|
||||
self.last_response_metadata: dict[str, Any] | None = None
|
||||
|
||||
def complete(
|
||||
self,
|
||||
|
|
@ -54,12 +57,48 @@ class LLMConnectClient:
|
|||
)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
self.last_response_metadata = _extract_response_metadata(data)
|
||||
content = data.get("content")
|
||||
if not isinstance(content, str):
|
||||
raise ValueError("llm-connect response missing string content")
|
||||
return content
|
||||
|
||||
|
||||
_SAFE_RESPONSE_METADATA_KEYS = {
|
||||
"finish_reason",
|
||||
"usage",
|
||||
"model",
|
||||
"model_name",
|
||||
"provider",
|
||||
"request_id",
|
||||
"response_id",
|
||||
"trace_id",
|
||||
"latency_ms",
|
||||
"duration_ms",
|
||||
"elapsed_ms",
|
||||
"created",
|
||||
"created_at",
|
||||
}
|
||||
|
||||
|
||||
def _extract_response_metadata(data: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Keep non-secret llm-connect diagnostics alongside the returned content."""
|
||||
return {
|
||||
key: value for key, value in data.items()
|
||||
if key in _SAFE_RESPONSE_METADATA_KEYS and _json_safe(value)
|
||||
}
|
||||
|
||||
|
||||
def _json_safe(value: Any) -> bool:
|
||||
try:
|
||||
import json
|
||||
|
||||
json.dumps(value)
|
||||
except (TypeError, ValueError):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def get_llm_client() -> DisabledLLMClient | LLMConnectClient:
|
||||
base_url = os.environ.get("LLM_CONNECT_URL", "").strip()
|
||||
if not base_url:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue