system-prompts-and-models-o.../dealix/api/routers/agent_observability.py
Sami Assiri b13cb389cc feat(dealix): sync full Dealix package to repo
- API routers, ACA modules, integrations (draft operators)
- Docs, landing pages, scripts (launch readiness, scorecard)
- Tests and CI workflow updates for Dealix

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-01 21:01:17 +03:00

42 lines
1.7 KiB
Python

"""Agent observability demo endpoints — evals and trace shapes."""
from __future__ import annotations
from typing import Any
from fastapi import APIRouter, Body
from auto_client_acquisition.agent_observability.safety_eval import evaluate_safety
from auto_client_acquisition.agent_observability.saudi_tone_eval import evaluate_saudi_tone
from auto_client_acquisition.agent_observability.trace_events import build_trace_event
router = APIRouter(prefix="/api/v1/agent-observability", tags=["agent_observability"])
@router.get("/demo")
async def demo() -> dict[str, Any]:
return {"ok": True, "message_ar": "تتبع وتقييم — اربط Langfuse في staging للإنتاج.", "demo": True}
@router.post("/eval/safety")
async def eval_safety(payload: dict[str, Any] = Body(default_factory=dict)) -> dict[str, Any]:
return evaluate_safety(str(payload.get("text_ar") or ""))
@router.post("/eval/saudi-tone")
async def eval_saudi_tone(payload: dict[str, Any] = Body(default_factory=dict)) -> dict[str, Any]:
return evaluate_saudi_tone(str(payload.get("text_ar") or ""))
@router.post("/trace/build")
async def trace_build(payload: dict[str, Any] = Body(default_factory=dict)) -> dict[str, Any]:
return build_trace_event(
workflow_name=str(payload.get("workflow_name") or "demo"),
agent_name=str(payload.get("agent_name") or "dealix"),
action_type=str(payload.get("action_type") or "draft"),
policy_result=str(payload.get("policy_result") or "approval_required"),
tool_called=payload.get("tool_called"),
outcome=payload.get("outcome"),
metadata=payload.get("metadata") if isinstance(payload.get("metadata"), dict) else {},
)