Home / Function/ test_k_constructor_param() — langchain Function Reference

test_k_constructor_param() — langchain Function Reference

Architecture documentation for the test_k_constructor_param() function in retrievers.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  80c8db8c_8df3_1aaf_56b0_287bde684eda["test_k_constructor_param()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825["RetrieversIntegrationTests"]
  80c8db8c_8df3_1aaf_56b0_287bde684eda -->|defined in| 832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825
  adeb6914_7bba_a87e_a89d_2a30f011db48["retriever_constructor()"]
  80c8db8c_8df3_1aaf_56b0_287bde684eda -->|calls| adeb6914_7bba_a87e_a89d_2a30f011db48
  style 80c8db8c_8df3_1aaf_56b0_287bde684eda fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/standard-tests/langchain_tests/integration_tests/retrievers.py lines 46–100

    def test_k_constructor_param(self) -> None:
        """Test the number of results constructor parameter.

        Test that the retriever constructor accepts a parameter representing
        the number of documents to return.

        By default, the parameter tested is named `k`, but it can be overridden by
        setting the `num_results_arg_name` property.

        !!! note
            If the retriever doesn't support configuring the number of results returned
            via the constructor, this test can be skipped using a pytest `xfail` on
            the test class:

            ```python
            @pytest.mark.xfail(
                reason="This retriever doesn't support setting "
                "the number of results via the constructor."
            )
            def test_k_constructor_param(self) -> None:
                raise NotImplementedError
            ```

        ??? note "Troubleshooting"

            If this test fails, the retriever constructor does not accept a number
            of results parameter, or the retriever does not return the correct number
            of documents ( of the one set in `num_results_arg_name`) when it is
            set.

            For example, a retriever like...

            ```python
            MyRetriever(k=3).invoke("query")
            ```

            ...should return 3 documents when invoked with a query.

        """
        params = {
            k: v
            for k, v in self.retriever_constructor_params.items()
            if k != self.num_results_arg_name
        }
        params_3 = {**params, self.num_results_arg_name: 3}
        retriever_3 = self.retriever_constructor(**params_3)
        result_3 = retriever_3.invoke(self.retriever_query_example)
        assert len(result_3) == 3
        assert all(isinstance(doc, Document) for doc in result_3)

        params_1 = {**params, self.num_results_arg_name: 1}
        retriever_1 = self.retriever_constructor(**params_1)
        result_1 = retriever_1.invoke(self.retriever_query_example)
        assert len(result_1) == 1
        assert all(isinstance(doc, Document) for doc in result_1)

Domain

Subdomains

Frequently Asked Questions

What does test_k_constructor_param() do?
test_k_constructor_param() is a function in the langchain codebase, defined in libs/standard-tests/langchain_tests/integration_tests/retrievers.py.
Where is test_k_constructor_param() defined?
test_k_constructor_param() is defined in libs/standard-tests/langchain_tests/integration_tests/retrievers.py at line 46.
What does test_k_constructor_param() call?
test_k_constructor_param() calls 1 function(s): retriever_constructor.

Analyze Your Own Codebase

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

Try Supermodel Free