import os import json class Tracer: def __init__(self): self.enabled = False self.client = None self.trace = None 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: self.client = Langfuse(public_key=pk, secret_key=sk, host=host) self.trace = self.client.trace(name="tabular-agentic-xai") self.enabled = True except Exception: pass @classmethod def from_env(cls): return cls() @property def trace_url(self): try: return self.trace.get_url() if (self.enabled and hasattr(self.trace, "get_url")) else None except Exception: return None def trace_event(self, name: str, payload: dict): if not self.enabled or not self.trace: return try: self.trace.event(name=name, input=json.dumps(payload)) except Exception: pass