|
|
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 |