Home / Function/ _collapse() — langchain Function Reference

_collapse() — langchain Function Reference

Architecture documentation for the _collapse() function in reduce.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  5ec5e85d_0e34_733e_07b9_d13ee52ef47f["_collapse()"]
  1d761688_0112_f998_eecc_6712fc22bf37["ReduceDocumentsChain"]
  5ec5e85d_0e34_733e_07b9_d13ee52ef47f -->|defined in| 1d761688_0112_f998_eecc_6712fc22bf37
  cc4540ae_400a_89bd_9f59_c90678c2a044["combine_docs()"]
  cc4540ae_400a_89bd_9f59_c90678c2a044 -->|calls| 5ec5e85d_0e34_733e_07b9_d13ee52ef47f
  c98dc7a1_c3dc_2557_0a0f_d34b8e2c7323["split_list_of_docs()"]
  5ec5e85d_0e34_733e_07b9_d13ee52ef47f -->|calls| c98dc7a1_c3dc_2557_0a0f_d34b8e2c7323
  e5e85969_ef5a_d0e5_f524_145250c67cf1["collapse_docs()"]
  5ec5e85d_0e34_733e_07b9_d13ee52ef47f -->|calls| e5e85969_ef5a_d0e5_f524_145250c67cf1
  style 5ec5e85d_0e34_733e_07b9_d13ee52ef47f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain/langchain_classic/chains/combine_documents/reduce.py lines 309–346

    def _collapse(
        self,
        docs: list[Document],
        token_max: int | None = None,
        callbacks: Callbacks = None,
        **kwargs: Any,
    ) -> tuple[list[Document], dict]:
        result_docs = docs
        length_func = self.combine_documents_chain.prompt_length
        num_tokens = length_func(result_docs, **kwargs)

        def _collapse_docs_func(docs: list[Document], **kwargs: Any) -> str:
            return self._collapse_chain.run(
                input_documents=docs,
                callbacks=callbacks,
                **kwargs,
            )

        _token_max = token_max or self.token_max
        retries: int = 0
        while num_tokens is not None and num_tokens > _token_max:
            new_result_doc_list = split_list_of_docs(
                result_docs,
                length_func,
                _token_max,
                **kwargs,
            )
            result_docs = [
                collapse_docs(docs_, _collapse_docs_func, **kwargs)
                for docs_ in new_result_doc_list
            ]
            num_tokens = length_func(result_docs, **kwargs)
            retries += 1
            if self.collapse_max_retries and retries == self.collapse_max_retries:
                msg = f"Exceed {self.collapse_max_retries} tries to \
                        collapse document to {_token_max} tokens."
                raise ValueError(msg)
        return result_docs, {}

Subdomains

Called By

Frequently Asked Questions

What does _collapse() do?
_collapse() is a function in the langchain codebase, defined in libs/langchain/langchain_classic/chains/combine_documents/reduce.py.
Where is _collapse() defined?
_collapse() is defined in libs/langchain/langchain_classic/chains/combine_documents/reduce.py at line 309.
What does _collapse() call?
_collapse() calls 2 function(s): collapse_docs, split_list_of_docs.
What calls _collapse()?
_collapse() is called by 1 function(s): combine_docs.

Analyze Your Own Codebase

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

Try Supermodel Free