Home / Function/ merge() — langchain Function Reference

merge() — langchain Function Reference

Architecture documentation for the merge() function in manager.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  9afe8ec3_6265_0bfd_b9aa_231ee6084fa3["merge()"]
  b12567d8_81a9_52c3_3096_d524d1371c83["CallbackManagerForChainGroup"]
  9afe8ec3_6265_0bfd_b9aa_231ee6084fa3 -->|defined in| b12567d8_81a9_52c3_3096_d524d1371c83
  40baea86_dfe8_0c6b_cff8_57b3fde6c2ee["merge()"]
  40baea86_dfe8_0c6b_cff8_57b3fde6c2ee -->|calls| 9afe8ec3_6265_0bfd_b9aa_231ee6084fa3
  40baea86_dfe8_0c6b_cff8_57b3fde6c2ee["merge()"]
  9afe8ec3_6265_0bfd_b9aa_231ee6084fa3 -->|calls| 40baea86_dfe8_0c6b_cff8_57b3fde6c2ee
  e694e06d_9c3a_9620_74b6_743814a492ce["trace_as_chain_group()"]
  9afe8ec3_6265_0bfd_b9aa_231ee6084fa3 -->|calls| e694e06d_9c3a_9620_74b6_743814a492ce
  style 9afe8ec3_6265_0bfd_b9aa_231ee6084fa3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/callbacks/manager.py lines 1690–1748

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

        Overwrites the merge method in the base class to ensure that the parent run
        manager is preserved. Keeps the `parent_run_manager` from the current object.

        Returns:
            A copy of the current object with the handlers, tags, and other attributes
            merged from the other 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(type(merged_manager))
                # <class 'langchain_core.callbacks.manager.CallbackManagerForChainGroup'>

                print(merged_manager.handlers)
                # [
                #    <langchain_core.callbacks.stdout.LangChainTracer object at ...>,
                #    <langchain_core.callbacks.streaming_stdout.StdOutCallbackHandler object at ...>,
                # ]

                print(merged_manager.tags)
                #    ['tag2', 'tag1']
            ```
        """  # noqa: E501
        manager = self.__class__(
            parent_run_id=self.parent_run_id or other.parent_run_id,
            handlers=[],
            inheritable_handlers=[],
            tags=list(set(self.tags + other.tags)),
            inheritable_tags=list(set(self.inheritable_tags + other.inheritable_tags)),
            metadata={
                **self.metadata,
                **other.metadata,
            },
            parent_run_manager=self.parent_run_manager,
        )

        handlers = self.handlers + other.handlers
        inheritable_handlers = self.inheritable_handlers + other.inheritable_handlers

        for handler in handlers:
            manager.add_handler(handler)

        for handler in inheritable_handlers:
            manager.add_handler(handler, inherit=True)
        return manager

Domain

Subdomains

Called By

Frequently Asked Questions

What does merge() do?
merge() is a function in the langchain codebase, defined in libs/core/langchain_core/callbacks/manager.py.
Where is merge() defined?
merge() is defined in libs/core/langchain_core/callbacks/manager.py at line 1690.
What does merge() call?
merge() calls 2 function(s): merge, trace_as_chain_group.
What calls merge()?
merge() is called by 1 function(s): merge.

Analyze Your Own Codebase

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

Try Supermodel Free