base.py — langchain Source File
Architecture documentation for base.py, a python file in the langchain codebase. 16 imports, 0 dependents.
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)
Domain
Subdomains
Functions
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
Source
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