observability.py 807 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Shared observability helpers for data modules.
  5. """
  6. from __future__ import annotations
  7. import sys
  8. from typing import Optional
  9. def safe_log_tool_call(
  10. logger,
  11. *,
  12. tool_name: str,
  13. success: bool,
  14. retry_count: int = 0,
  15. error_code: Optional[str] = None,
  16. error_message: Optional[str] = None,
  17. chapter: Optional[int] = None,
  18. ) -> None:
  19. try:
  20. logger.log_tool_call(
  21. tool_name,
  22. success,
  23. retry_count=retry_count,
  24. error_code=error_code,
  25. error_message=error_message,
  26. chapter=chapter,
  27. )
  28. except Exception as exc:
  29. print(
  30. f"[observability] failed to log tool call {tool_name}: {exc}",
  31. file=sys.stderr,
  32. )