test_observability_example.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import asyncio
  2. import sys
  3. from types import ModuleType, SimpleNamespace
  4. from typing import Any
  5. from examples import observability
  6. class _FakeAgency:
  7. async def get_response(self, message: str) -> SimpleNamespace:
  8. return SimpleNamespace(final_output=f"traced:{message}")
  9. def test_observability_imports_without_optional_tracing_packages() -> None:
  10. assert callable(observability.openai_tracing)
  11. assert callable(observability.langfuse_tracing)
  12. assert callable(observability.agentops_tracing)
  13. def test_langfuse_tracing_uses_lazy_observe_import(monkeypatch) -> None:
  14. fake_langfuse = ModuleType("langfuse")
  15. def observe():
  16. def decorator(func):
  17. return func
  18. return decorator
  19. fake_langfuse.observe = observe # type: ignore[attr-defined]
  20. monkeypatch.setitem(sys.modules, "langfuse", fake_langfuse)
  21. monkeypatch.setenv("LANGFUSE_SECRET_KEY", "test-secret")
  22. monkeypatch.setenv("LANGFUSE_PUBLIC_KEY", "test-public")
  23. monkeypatch.setattr(observability, "create_agency", lambda: _FakeAgency())
  24. result = asyncio.run(observability.langfuse_tracing("hello"))
  25. assert result == "traced:hello"
  26. def test_agentops_tracing_uses_lazy_agentops_import(monkeypatch) -> None:
  27. calls: list[tuple[str, Any]] = []
  28. fake_agentops = ModuleType("agentops")
  29. def init(**kwargs):
  30. calls.append(("init", kwargs))
  31. def start_trace(**kwargs):
  32. calls.append(("start_trace", kwargs))
  33. return "trace-id"
  34. def end_trace(trace, *, end_state: str):
  35. calls.append(("end_trace", (trace, end_state)))
  36. fake_agentops.init = init # type: ignore[attr-defined]
  37. fake_agentops.start_trace = start_trace # type: ignore[attr-defined]
  38. fake_agentops.end_trace = end_trace # type: ignore[attr-defined]
  39. monkeypatch.setitem(sys.modules, "agentops", fake_agentops)
  40. monkeypatch.setenv("AGENTOPS_API_KEY", "test-key")
  41. monkeypatch.setattr(observability, "create_agency", lambda: _FakeAgency())
  42. result = asyncio.run(observability.agentops_tracing("hello"))
  43. assert result == "traced:hello"
  44. assert calls[0][0] == "init"
  45. assert calls[1][0] == "start_trace"
  46. assert calls[2] == ("end_trace", ("trace-id", "Success"))