Home / File/ length_based.py — langchain Source File

length_based.py — langchain Source File

Architecture documentation for length_based.py, a python file in the langchain codebase. 6 imports, 0 dependents.

File python PromptManagement ExampleSelection 6 imports 1 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  948beb61_0a59_b5a6_60e4_d57473e17404["length_based.py"]
  67ec3255_645e_8b6e_1eff_1eb3c648ed95["re"]
  948beb61_0a59_b5a6_60e4_d57473e17404 --> 67ec3255_645e_8b6e_1eff_1eb3c648ed95
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  948beb61_0a59_b5a6_60e4_d57473e17404 --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  948beb61_0a59_b5a6_60e4_d57473e17404 --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  948beb61_0a59_b5a6_60e4_d57473e17404 --> 91721f45_4909_e489_8c1f_084f8bd87145
  86712768_7d49_e4ba_237c_f0dc6b157dd7["langchain_core.example_selectors.base"]
  948beb61_0a59_b5a6_60e4_d57473e17404 --> 86712768_7d49_e4ba_237c_f0dc6b157dd7
  c17bcf07_a2ef_b992_448f_5088d46a1e79["langchain_core.prompts.prompt"]
  948beb61_0a59_b5a6_60e4_d57473e17404 --> c17bcf07_a2ef_b992_448f_5088d46a1e79
  style 948beb61_0a59_b5a6_60e4_d57473e17404 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Select examples based on length."""

import re
from collections.abc import Callable

from pydantic import BaseModel, Field, model_validator
from typing_extensions import Self

from langchain_core.example_selectors.base import BaseExampleSelector
from langchain_core.prompts.prompt import PromptTemplate


def _get_length_based(text: str) -> int:
    return len(re.split(r"\n| ", text))


class LengthBasedExampleSelector(BaseExampleSelector, BaseModel):
    r"""Select examples based on length.

    Example:
        ```python
        from langchain_core.example_selectors import LengthBasedExampleSelector
        from langchain_core.prompts import PromptTemplate

        # Define examples
        examples = [
            {"input": "happy", "output": "sad"},
            {"input": "tall", "output": "short"},
            {"input": "fast", "output": "slow"},
        ]

        # Create prompt template
        example_prompt = PromptTemplate(
            input_variables=["input", "output"],
            template="Input: {input}\nOutput: {output}",
        )

        # Create selector with max length constraint
        selector = LengthBasedExampleSelector(
            examples=examples,
            example_prompt=example_prompt,
            max_length=50,  # Maximum prompt length
        )

        # Select examples for a new input
        selected = selector.select_examples({"input": "large", "output": "tiny"})
        # Returns examples that fit within max_length constraint
        ```
    """

    examples: list[dict]
    """A list of the examples that the prompt template expects."""

    example_prompt: PromptTemplate
    """Prompt template used to format the examples."""

    get_text_length: Callable[[str], int] = _get_length_based
    """Function to measure prompt length. Defaults to word count."""

    max_length: int = 2048
// ... (69 more lines)

Subdomains

Dependencies

  • collections.abc
  • langchain_core.example_selectors.base
  • langchain_core.prompts.prompt
  • pydantic
  • re
  • typing_extensions

Frequently Asked Questions

What does length_based.py do?
length_based.py is a source file in the langchain codebase, written in python. It belongs to the PromptManagement domain, ExampleSelection subdomain.
What functions are defined in length_based.py?
length_based.py defines 1 function(s): _get_length_based.
What does length_based.py depend on?
length_based.py imports 6 module(s): collections.abc, langchain_core.example_selectors.base, langchain_core.prompts.prompt, pydantic, re, typing_extensions.
Where is length_based.py in the architecture?
length_based.py is located at libs/core/langchain_core/example_selectors/length_based.py (domain: PromptManagement, subdomain: ExampleSelection, directory: libs/core/langchain_core/example_selectors).

Analyze Your Own Codebase

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

Try Supermodel Free