|
|
from __future__ import annotations |
|
|
|
|
|
from abc import ABC, abstractmethod |
|
|
from typing import TYPE_CHECKING, Any |
|
|
|
|
|
if TYPE_CHECKING: |
|
|
from collections.abc import Sequence |
|
|
from uuid import UUID |
|
|
|
|
|
from langchain.callbacks.base import BaseCallbackHandler |
|
|
|
|
|
from langflow.graph.vertex.base import Vertex |
|
|
from langflow.services.tracing.schema import Log |
|
|
|
|
|
|
|
|
class BaseTracer(ABC): |
|
|
trace_id: UUID |
|
|
|
|
|
@abstractmethod |
|
|
def __init__(self, trace_name: str, trace_type: str, project_name: str, trace_id: UUID): |
|
|
raise NotImplementedError |
|
|
|
|
|
@property |
|
|
@abstractmethod |
|
|
def ready(self) -> bool: |
|
|
raise NotImplementedError |
|
|
|
|
|
@abstractmethod |
|
|
def add_trace( |
|
|
self, |
|
|
trace_id: str, |
|
|
trace_name: str, |
|
|
trace_type: str, |
|
|
inputs: dict[str, Any], |
|
|
metadata: dict[str, Any] | None = None, |
|
|
vertex: Vertex | None = None, |
|
|
) -> None: |
|
|
raise NotImplementedError |
|
|
|
|
|
@abstractmethod |
|
|
def end_trace( |
|
|
self, |
|
|
trace_id: str, |
|
|
trace_name: str, |
|
|
outputs: dict[str, Any] | None = None, |
|
|
error: Exception | None = None, |
|
|
logs: Sequence[Log | dict] = (), |
|
|
) -> None: |
|
|
raise NotImplementedError |
|
|
|
|
|
@abstractmethod |
|
|
def end( |
|
|
self, |
|
|
inputs: dict[str, Any], |
|
|
outputs: dict[str, Any], |
|
|
error: Exception | None = None, |
|
|
metadata: dict[str, Any] | None = None, |
|
|
) -> None: |
|
|
raise NotImplementedError |
|
|
|
|
|
@abstractmethod |
|
|
def get_langchain_callback(self) -> BaseCallbackHandler | None: |
|
|
raise NotImplementedError |
|
|
|