Home / Class/ AsyncBaseTracer Class — langchain Architecture

AsyncBaseTracer Class — langchain Architecture

Architecture documentation for the AsyncBaseTracer class in base.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  6491c2d5_982b_c4f4_e268_52f0acf4d29b["AsyncBaseTracer"]
  4fc6201d_2217_7ee6_6ae9_980ec7e172fa["_TracerCore"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|extends| 4fc6201d_2217_7ee6_6ae9_980ec7e172fa
  e108f394_9734_a4fd_0bef_19ef9b674d50["AsyncCallbackHandler"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|extends| e108f394_9734_a4fd_0bef_19ef9b674d50
  40d5fc12_7edf_9881_367a_e932f4aabe85["base.py"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|defined in| 40d5fc12_7edf_9881_367a_e932f4aabe85
  055dd079_2c46_e173_d8ee_42dd6334b824["_persist_run()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 055dd079_2c46_e173_d8ee_42dd6334b824
  e13b9012_4ecf_ea58_ca69_498c9d8f26a2["_start_trace()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| e13b9012_4ecf_ea58_ca69_498c9d8f26a2
  c70d421d_66bb_3008_6673_01931a1637cb["_end_trace()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| c70d421d_66bb_3008_6673_01931a1637cb
  9300c4a7_9421_2a7f_df2e_dfc93483a1f4["on_chat_model_start()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 9300c4a7_9421_2a7f_df2e_dfc93483a1f4
  f92da0ac_7790_d83f_8e6b_ddb41dccaaa7["on_llm_start()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| f92da0ac_7790_d83f_8e6b_ddb41dccaaa7
  240c6655_0579_7bf7_802e_671e14313756["on_llm_new_token()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 240c6655_0579_7bf7_802e_671e14313756
  9fe1e19b_73fd_a3dd_0dec_7c66ddb8c9da["on_retry()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 9fe1e19b_73fd_a3dd_0dec_7c66ddb8c9da
  5b4ed31c_e95a_4e17_cdfa_945de38d35c2["on_llm_end()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 5b4ed31c_e95a_4e17_cdfa_945de38d35c2
  15c06d14_5a57_225f_d8bb_7d5f3c089173["on_llm_error()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 15c06d14_5a57_225f_d8bb_7d5f3c089173
  21af7594_15e7_8da2_2dab_4022c348651c["on_chain_start()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 21af7594_15e7_8da2_2dab_4022c348651c
  5d04407e_b9e8_948a_05e8_22fa43599ca0["on_chain_end()"]
  6491c2d5_982b_c4f4_e268_52f0acf4d29b -->|method| 5d04407e_b9e8_948a_05e8_22fa43599ca0

Relationship Graph

Source Code

libs/core/langchain_core/tracers/base.py lines 531–918

class AsyncBaseTracer(_TracerCore, AsyncCallbackHandler, ABC):
    """Async base interface for tracers."""

    @abstractmethod
    @override
    async def _persist_run(self, run: Run) -> None:
        """Persist a run."""

    @override
    async def _start_trace(self, run: Run) -> None:
        """Start a trace for a run.

        Starting a trace will run concurrently with each `_on_[run_type]_start` method.
        No `_on_[run_type]_start` callback should depend on operations in
        `_start_trace`.
        """
        super()._start_trace(run)
        await self._on_run_create(run)

    @override
    async def _end_trace(self, run: Run) -> None:
        """End a trace for a run.

        Ending a trace will run concurrently with each `_on_[run_type]_end` method.
        No `_on_[run_type]_end` callback should depend on operations in `_end_trace`.
        """
        if not run.parent_run_id:
            await self._persist_run(run)
        self.run_map.pop(str(run.id))
        await self._on_run_update(run)

    @override
    async def on_chat_model_start(
        self,
        serialized: dict[str, Any],
        messages: list[list[BaseMessage]],
        *,
        run_id: UUID,
        parent_run_id: UUID | None = None,
        tags: list[str] | None = None,
        metadata: dict[str, Any] | None = None,
        name: str | None = None,
        **kwargs: Any,
    ) -> Any:
        chat_model_run = self._create_chat_model_run(
            serialized=serialized,
            messages=messages,
            run_id=run_id,
            parent_run_id=parent_run_id,
            tags=tags,
            metadata=metadata,
            name=name,
            **kwargs,
        )
        tasks = [
            self._start_trace(chat_model_run),
            self._on_chat_model_start(chat_model_run),
        ]
        await asyncio.gather(*tasks)
        return chat_model_run

    @override
    async def on_llm_start(
        self,
        serialized: dict[str, Any],
        prompts: list[str],
        *,
        run_id: UUID,
        parent_run_id: UUID | None = None,
        tags: list[str] | None = None,
        metadata: dict[str, Any] | None = None,
        **kwargs: Any,
    ) -> None:
        llm_run = self._create_llm_run(
            serialized=serialized,
            prompts=prompts,
            run_id=run_id,
            parent_run_id=parent_run_id,
            tags=tags,
            metadata=metadata,
            **kwargs,

Frequently Asked Questions

What is the AsyncBaseTracer class?
AsyncBaseTracer is a class in the langchain codebase, defined in libs/core/langchain_core/tracers/base.py.
Where is AsyncBaseTracer defined?
AsyncBaseTracer is defined in libs/core/langchain_core/tracers/base.py at line 531.
What does AsyncBaseTracer extend?
AsyncBaseTracer extends _TracerCore, AsyncCallbackHandler.

Analyze Your Own Codebase

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

Try Supermodel Free