Home / Class/ BaseTracer Class — langchain Architecture

BaseTracer Class — langchain Architecture

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

Entity Profile

Dependency Diagram

graph TD
  6a27faca_523a_f3fd_3719_3b2319fda575["BaseTracer"]
  4fc6201d_2217_7ee6_6ae9_980ec7e172fa["_TracerCore"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|extends| 4fc6201d_2217_7ee6_6ae9_980ec7e172fa
  50ee4473_6788_2806_dc06_5fbbc8f64275["BaseCallbackHandler"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|extends| 50ee4473_6788_2806_dc06_5fbbc8f64275
  40d5fc12_7edf_9881_367a_e932f4aabe85["base.py"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|defined in| 40d5fc12_7edf_9881_367a_e932f4aabe85
  bf55689a_2700_0f1c_5795_0f43134c51a2["_persist_run()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| bf55689a_2700_0f1c_5795_0f43134c51a2
  3a237400_4e26_7f5e_6b01_5d6ba1c8afb5["_start_trace()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| 3a237400_4e26_7f5e_6b01_5d6ba1c8afb5
  5ed1eb36_775e_0a0d_de93_b7bff675a4ce["_end_trace()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| 5ed1eb36_775e_0a0d_de93_b7bff675a4ce
  b6a3fad8_3301_90ea_9044_76ca53eca0c2["on_chat_model_start()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| b6a3fad8_3301_90ea_9044_76ca53eca0c2
  f242a055_73e1_1f44_bcff_ce31c558a729["on_llm_start()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| f242a055_73e1_1f44_bcff_ce31c558a729
  a58e041c_05c5_381d_d266_a39773da2324["on_llm_new_token()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| a58e041c_05c5_381d_d266_a39773da2324
  0f020420_1155_46fb_c942_2ff35c99736d["on_retry()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| 0f020420_1155_46fb_c942_2ff35c99736d
  1fc7e166_8e0c_e237_b05d_ff728b31bf4d["on_llm_end()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| 1fc7e166_8e0c_e237_b05d_ff728b31bf4d
  4562092d_5210_8c87_8a89_69c047a5c7a5["on_llm_error()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| 4562092d_5210_8c87_8a89_69c047a5c7a5
  c14dc497_fed7_3af8_4690_8c280d2cccbf["on_chain_start()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| c14dc497_fed7_3af8_4690_8c280d2cccbf
  8ca48be8_442f_88fe_f3fd_e87fbb96b848["on_chain_end()"]
  6a27faca_523a_f3fd_3719_3b2319fda575 -->|method| 8ca48be8_442f_88fe_f3fd_e87fbb96b848

Relationship Graph

Source Code

libs/core/langchain_core/tracers/base.py lines 33–528

class BaseTracer(_TracerCore, BaseCallbackHandler, ABC):
    """Base interface for tracers."""

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

    def _start_trace(self, run: Run) -> None:
        """Start a trace for a run."""
        super()._start_trace(run)
        self._on_run_create(run)

    def _end_trace(self, run: Run) -> None:
        """End a trace for a run."""
        if not run.parent_run_id:
            self._persist_run(run)
        self.run_map.pop(str(run.id))
        self._on_run_update(run)

    def on_chat_model_start(
        self,
        serialized: dict[str, Any],
        messages: list[list[BaseMessage]],
        *,
        run_id: UUID,
        tags: list[str] | None = None,
        parent_run_id: UUID | None = None,
        metadata: dict[str, Any] | None = None,
        name: str | None = None,
        **kwargs: Any,
    ) -> Run:
        """Start a trace for an LLM run.

        Args:
            serialized: The serialized model.
            messages: The messages to start the chat with.
            run_id: The run ID.
            tags: The tags for the run.
            parent_run_id: The parent run ID.
            metadata: The metadata for the run.
            name: The name of the run.
            **kwargs: Additional arguments.

        Returns:
            The run.
        """
        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,
        )
        self._start_trace(chat_model_run)
        self._on_chat_model_start(chat_model_run)
        return chat_model_run

    def on_llm_start(
        self,
        serialized: dict[str, Any],
        prompts: list[str],
        *,
        run_id: UUID,
        tags: list[str] | None = None,
        parent_run_id: UUID | None = None,
        metadata: dict[str, Any] | None = None,
        name: str | None = None,
        **kwargs: Any,
    ) -> Run:
        """Start a trace for an LLM run.

        Args:
            serialized: The serialized model.
            prompts: The prompts to start the LLM with.
            run_id: The run ID.
            tags: The tags for the run.
            parent_run_id: The parent run ID.
            metadata: The metadata for the run.

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free