Home / File/ base.py — langchain Source File

base.py — langchain Source File

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

File python CoreAbstractions MessageSchema 16 imports 6 functions 3 classes

Entity Profile

Dependency Diagram

graph LR
  323271a6_dbeb_1ac5_e224_a66bfb56191b["base.py"]
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  2d1edd36_20be_d887_f834_7b58c1b5a50f["langchain_core._api.deprecation"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 2d1edd36_20be_d887_f834_7b58c1b5a50f
  30d1300e_92bb_90d4_ac5e_1afe56db09d2["langchain_core.load.serializable"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 30d1300e_92bb_90d4_ac5e_1afe56db09d2
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> d758344f_537f_649e_f467_b9d7442e86df
  f4d905c6_a2b2_eb8f_be9b_7808b72f6a16["langchain_core.utils"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> f4d905c6_a2b2_eb8f_be9b_7808b72f6a16
  053c6d65_7a74_9819_7c2a_c7357c95d2b8["langchain_core.utils._merge"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 053c6d65_7a74_9819_7c2a_c7357c95d2b8
  c98d597d_2ec1_88dc_2aec_af377c69a987["langchain_core.utils.interactive_env"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> c98d597d_2ec1_88dc_2aec_af377c69a987
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 91721f45_4909_e489_8c1f_084f8bd87145
  e45722a2_0136_a972_1f58_7b5987500404["langchain_core.prompts.chat"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> e45722a2_0136_a972_1f58_7b5987500404
  3b667d96_1904_3d84_cbc9_12d6e5ec2000["langchain_core.messages.block_translators.anthropic"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 3b667d96_1904_3d84_cbc9_12d6e5ec2000
  a7d5ca45_2898_f110_56a7_cb14c9af291a["langchain_core.messages.block_translators.bedrock_converse"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> a7d5ca45_2898_f110_56a7_cb14c9af291a
  8b0f23c8_b5b1_dbd3_b91a_0a23e07db10c["langchain_core.messages.block_translators.google_genai"]
  323271a6_dbeb_1ac5_e224_a66bfb56191b --> 8b0f23c8_b5b1_dbd3_b91a_0a23e07db10c
  style 323271a6_dbeb_1ac5_e224_a66bfb56191b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Base message."""

from __future__ import annotations

from typing import TYPE_CHECKING, Any, cast, overload

from pydantic import ConfigDict, Field

from langchain_core._api.deprecation import warn_deprecated
from langchain_core.load.serializable import Serializable
from langchain_core.messages import content as types
from langchain_core.utils import get_bolded_text
from langchain_core.utils._merge import merge_dicts, merge_lists
from langchain_core.utils.interactive_env import is_interactive_env

if TYPE_CHECKING:
    from collections.abc import Sequence

    from typing_extensions import Self

    from langchain_core.prompts.chat import ChatPromptTemplate


def _extract_reasoning_from_additional_kwargs(
    message: BaseMessage,
) -> types.ReasoningContentBlock | None:
    """Extract `reasoning_content` from `additional_kwargs`.

    Handles reasoning content stored in various formats:
    - `additional_kwargs["reasoning_content"]` (string) - Ollama, DeepSeek, XAI, Groq

    Args:
        message: The message to extract reasoning from.

    Returns:
        A `ReasoningContentBlock` if reasoning content is found, None otherwise.
    """
    additional_kwargs = getattr(message, "additional_kwargs", {})

    reasoning_content = additional_kwargs.get("reasoning_content")
    if reasoning_content is not None and isinstance(reasoning_content, str):
        return {"type": "reasoning", "reasoning": reasoning_content}

    return None


class TextAccessor(str):
    """String-like object that supports both property and method access patterns.

    Exists to maintain backward compatibility while transitioning from method-based to
    property-based text access in message objects. In LangChain <v1.0, message text was
    accessed via `.text()` method calls. In v1.0=<, the preferred pattern is property
    access via `.text`.

    Rather than breaking existing code immediately, `TextAccessor` allows both
    patterns:
    - Modern property access: `message.text` (returns string directly)
    - Legacy method access: `message.text()` (callable, emits deprecation warning)

    """
// ... (459 more lines)

Subdomains

Dependencies

  • collections.abc
  • langchain_core._api.deprecation
  • langchain_core.load.serializable
  • langchain_core.messages
  • langchain_core.messages.block_translators.anthropic
  • langchain_core.messages.block_translators.bedrock_converse
  • langchain_core.messages.block_translators.google_genai
  • langchain_core.messages.block_translators.langchain_v0
  • langchain_core.messages.block_translators.openai
  • langchain_core.prompts.chat
  • langchain_core.utils
  • langchain_core.utils._merge
  • langchain_core.utils.interactive_env
  • pydantic
  • typing
  • typing_extensions

Frequently Asked Questions

What does base.py do?
base.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What functions are defined in base.py?
base.py defines 6 function(s): _extract_reasoning_from_additional_kwargs, collections, get_msg_title_repr, merge_content, message_to_dict, messages_to_dict.
What does base.py depend on?
base.py imports 16 module(s): collections.abc, langchain_core._api.deprecation, langchain_core.load.serializable, langchain_core.messages, langchain_core.messages.block_translators.anthropic, langchain_core.messages.block_translators.bedrock_converse, langchain_core.messages.block_translators.google_genai, langchain_core.messages.block_translators.langchain_v0, and 8 more.
Where is base.py in the architecture?
base.py is located at libs/core/langchain_core/messages/base.py (domain: CoreAbstractions, subdomain: MessageSchema, directory: libs/core/langchain_core/messages).

Analyze Your Own Codebase

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

Try Supermodel Free