Home / Class/ AsyncRootListenersTracer Class — langchain Architecture

AsyncRootListenersTracer Class — langchain Architecture

Architecture documentation for the AsyncRootListenersTracer class in root_listeners.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  a10e05b7_8a18_0e17_1c03_e7ac470fe677["AsyncRootListenersTracer"]
  b3ab8001_c14c_4191_ca53_2dbabc99917f["AsyncBaseTracer"]
  a10e05b7_8a18_0e17_1c03_e7ac470fe677 -->|extends| b3ab8001_c14c_4191_ca53_2dbabc99917f
  cc8ba568_e178_2f0e_b70b_f9448e561f12["root_listeners.py"]
  a10e05b7_8a18_0e17_1c03_e7ac470fe677 -->|defined in| cc8ba568_e178_2f0e_b70b_f9448e561f12
  52bfd423_b702_638e_0981_174791c13ff8["__init__()"]
  a10e05b7_8a18_0e17_1c03_e7ac470fe677 -->|method| 52bfd423_b702_638e_0981_174791c13ff8
  c7869097_5c97_72c1_61d7_3286d7cdd417["_persist_run()"]
  a10e05b7_8a18_0e17_1c03_e7ac470fe677 -->|method| c7869097_5c97_72c1_61d7_3286d7cdd417
  5675113f_efde_1b0e_b0d7_5923081cc436["_on_run_create()"]
  a10e05b7_8a18_0e17_1c03_e7ac470fe677 -->|method| 5675113f_efde_1b0e_b0d7_5923081cc436
  e4e585e7_0325_d2c6_deb7_0dd44cdf3df6["_on_run_update()"]
  a10e05b7_8a18_0e17_1c03_e7ac470fe677 -->|method| e4e585e7_0325_d2c6_deb7_0dd44cdf3df6

Relationship Graph

Source Code

libs/core/langchain_core/tracers/root_listeners.py lines 78–130

class AsyncRootListenersTracer(AsyncBaseTracer):
    """Async tracer that calls listeners on run start, end, and error."""

    log_missing_parent = False
    """Whether to log a warning if the parent is missing."""

    def __init__(
        self,
        *,
        config: RunnableConfig,
        on_start: AsyncListener | None,
        on_end: AsyncListener | None,
        on_error: AsyncListener | None,
    ) -> None:
        """Initialize the tracer.

        Args:
            config: The runnable config.
            on_start: The listener to call on run start.
            on_end: The listener to call on run end.
            on_error: The listener to call on run error
        """
        super().__init__(_schema_format="original+chat")

        self.config = config
        self._arg_on_start = on_start
        self._arg_on_end = on_end
        self._arg_on_error = on_error
        self.root_id: UUID | None = None

    async def _persist_run(self, run: Run) -> None:
        # This is a legacy method only called once for an entire run tree
        # therefore not useful here
        pass

    async def _on_run_create(self, run: Run) -> None:
        if self.root_id is not None:
            return

        self.root_id = run.id

        if self._arg_on_start is not None:
            await acall_func_with_variable_args(self._arg_on_start, run, self.config)

    async def _on_run_update(self, run: Run) -> None:
        if run.id != self.root_id:
            return

        if run.error is None:
            if self._arg_on_end is not None:
                await acall_func_with_variable_args(self._arg_on_end, run, self.config)
        elif self._arg_on_error is not None:
            await acall_func_with_variable_args(self._arg_on_error, run, self.config)

Extends

Frequently Asked Questions

What is the AsyncRootListenersTracer class?
AsyncRootListenersTracer is a class in the langchain codebase, defined in libs/core/langchain_core/tracers/root_listeners.py.
Where is AsyncRootListenersTracer defined?
AsyncRootListenersTracer is defined in libs/core/langchain_core/tracers/root_listeners.py at line 78.
What does AsyncRootListenersTracer extend?
AsyncRootListenersTracer extends AsyncBaseTracer.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free