import os import json from typing import Optional class Tracer: def __init__(self, client=None, trace_url: Optional[str] = None): self.client = client self.trace_url = trace_url @classmethod def from_env(cls): try: from langfuse import Langfuse pk = os.getenv("LANGFUSE_PUBLIC_KEY") sk = os.getenv("LANGFUSE_SECRET_KEY") host = os.getenv("LANGFUSE_HOST", "https://cloud.langfuse.com") if pk and sk: client = Langfuse(public_key=pk, secret_key=sk, host=host) session = client.trace("tabular-agentic-xai") return cls(client=session, trace_url=session.get_url() if hasattr(session, "get_url") else None) except Exception: pass return cls() def trace_event(self, name: str, payload: dict): if self.client: try: self.client.event(name=name, input=json.dumps(payload)) except Exception: pass