Home / Class/ BaseCallbackManager Class — langchain Architecture

BaseCallbackManager Class — langchain Architecture

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

Entity Profile

Dependency Diagram

graph TD
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41["BaseCallbackManager"]
  3b53de05_0697_704a_50e8_c5f9aaeba5ae["CallbackManagerMixin"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|extends| 3b53de05_0697_704a_50e8_c5f9aaeba5ae
  e787cbbd_76a7_b640_29ac_5595d6b9afee["base.py"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|defined in| e787cbbd_76a7_b640_29ac_5595d6b9afee
  fb255192_5aed_e5e5_8ecd_b7e483ab04e3["__init__()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| fb255192_5aed_e5e5_8ecd_b7e483ab04e3
  21f74ec3_56bb_1283_982b_71729892f487["copy()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| 21f74ec3_56bb_1283_982b_71729892f487
  5a1be959_a33e_5d3a_2ad4_0ce88cdcf3b2["merge()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| 5a1be959_a33e_5d3a_2ad4_0ce88cdcf3b2
  214497f0_8c6f_6d2f_cfcc_e7b608ab4bfa["is_async()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| 214497f0_8c6f_6d2f_cfcc_e7b608ab4bfa
  14741891_16ac_1712_0f46_0c996f33bf5f["add_handler()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| 14741891_16ac_1712_0f46_0c996f33bf5f
  50f1348e_1fbc_b7e0_3fac_6a790292d15d["remove_handler()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| 50f1348e_1fbc_b7e0_3fac_6a790292d15d
  d3ca4cfe_17d5_f870_d94f_bf0e7595143d["set_handlers()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| d3ca4cfe_17d5_f870_d94f_bf0e7595143d
  dc60ed36_69b4_1b87_0566_ea201ad6cd90["set_handler()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| dc60ed36_69b4_1b87_0566_ea201ad6cd90
  a56e9690_28ab_6e7a_7f60_70921e03b422["add_tags()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| a56e9690_28ab_6e7a_7f60_70921e03b422
  97e37111_6cf4_f745_857a_a3274612a054["remove_tags()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| 97e37111_6cf4_f745_857a_a3274612a054
  c98c3756_41e0_73ad_cf46_70fd4638a995["add_metadata()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| c98c3756_41e0_73ad_cf46_70fd4638a995
  e7520ce1_8ea7_3130_15ac_14209b36644d["remove_metadata()"]
  24bc19d6_d1f4_bd59_6fc4_6ef5b08a4d41 -->|method| e7520ce1_8ea7_3130_15ac_14209b36644d

Relationship Graph

Source Code

libs/core/langchain_core/callbacks/base.py lines 898–1114

class BaseCallbackManager(CallbackManagerMixin):
    """Base callback manager."""

    def __init__(
        self,
        handlers: list[BaseCallbackHandler],
        inheritable_handlers: list[BaseCallbackHandler] | None = None,
        parent_run_id: UUID | None = None,
        *,
        tags: list[str] | None = None,
        inheritable_tags: list[str] | None = None,
        metadata: dict[str, Any] | None = None,
        inheritable_metadata: dict[str, Any] | None = None,
    ) -> None:
        """Initialize callback manager.

        Args:
            handlers: The handlers.
            inheritable_handlers: The inheritable handlers.
            parent_run_id: The parent run ID.
            tags: The tags.
            inheritable_tags: The inheritable tags.
            metadata: The metadata.
            inheritable_metadata: The inheritable metadata.
        """
        self.handlers: list[BaseCallbackHandler] = handlers
        self.inheritable_handlers: list[BaseCallbackHandler] = (
            inheritable_handlers or []
        )
        self.parent_run_id: UUID | None = parent_run_id
        self.tags = tags or []
        self.inheritable_tags = inheritable_tags or []
        self.metadata = metadata or {}
        self.inheritable_metadata = inheritable_metadata or {}

    def copy(self) -> Self:
        """Return a copy of the callback manager."""
        return self.__class__(
            handlers=self.handlers.copy(),
            inheritable_handlers=self.inheritable_handlers.copy(),
            parent_run_id=self.parent_run_id,
            tags=self.tags.copy(),
            inheritable_tags=self.inheritable_tags.copy(),
            metadata=self.metadata.copy(),
            inheritable_metadata=self.inheritable_metadata.copy(),
        )

    def merge(self, other: BaseCallbackManager) -> Self:
        """Merge the callback manager with another callback manager.

        May be overwritten in subclasses.

        Primarily used internally within `merge_configs`.

        Returns:
            The merged callback manager of the same type as the current object.

        Example:
            ```python
            # Merging two callback managers`
            from langchain_core.callbacks.manager import (
                CallbackManager,
                trace_as_chain_group,
            )
            from langchain_core.callbacks.stdout import StdOutCallbackHandler

            manager = CallbackManager(handlers=[StdOutCallbackHandler()], tags=["tag2"])
            with trace_as_chain_group("My Group Name", tags=["tag1"]) as group_manager:
                merged_manager = group_manager.merge(manager)
                print(merged_manager.handlers)
                # [
                #    <langchain_core.callbacks.stdout.StdOutCallbackHandler object at ...>,
                #    <langchain_core.callbacks.streaming_stdout.StreamingStdOutCallbackHandler object at ...>,
                # ]

                print(merged_manager.tags)
                #    ['tag2', 'tag1']
            ```
        """  # noqa: E501
        # Combine handlers and inheritable_handlers separately, using sets
        # to deduplicate (order not preserved)

Frequently Asked Questions

What is the BaseCallbackManager class?
BaseCallbackManager is a class in the langchain codebase, defined in libs/core/langchain_core/callbacks/base.py.
Where is BaseCallbackManager defined?
BaseCallbackManager is defined in libs/core/langchain_core/callbacks/base.py at line 898.
What does BaseCallbackManager extend?
BaseCallbackManager extends CallbackManagerMixin.

Analyze Your Own Codebase

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

Try Supermodel Free