__init__.py — langchain Source File
Architecture documentation for __init__.py, a python file in the langchain codebase. 10 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR c42572b6_95e3_adf4_9d97_d08f819b3c4c["__init__.py"] 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> d758344f_537f_649e_f467_b9d7442e86df 3b667d96_1904_3d84_cbc9_12d6e5ec2000["langchain_core.messages.block_translators.anthropic"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> 3b667d96_1904_3d84_cbc9_12d6e5ec2000 ecb25380_c70b_362e_39c7_9b98b7afa09d["langchain_core.messages.block_translators.bedrock"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> ecb25380_c70b_362e_39c7_9b98b7afa09d a7d5ca45_2898_f110_56a7_cb14c9af291a["langchain_core.messages.block_translators.bedrock_converse"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> a7d5ca45_2898_f110_56a7_cb14c9af291a 8b0f23c8_b5b1_dbd3_b91a_0a23e07db10c["langchain_core.messages.block_translators.google_genai"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> 8b0f23c8_b5b1_dbd3_b91a_0a23e07db10c dd967d68_92be_cd4d_0cd1_69665e2825fa["langchain_core.messages.block_translators.google_vertexai"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> dd967d68_92be_cd4d_0cd1_69665e2825fa e69e205b_6bf7_c984_80ce_967c9568d8b5["langchain_core.messages.block_translators.groq"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> e69e205b_6bf7_c984_80ce_967c9568d8b5 5bb05482_5f6d_f5c2_1460_a2ec977e38f7["langchain_core.messages.block_translators.openai"] c42572b6_95e3_adf4_9d97_d08f819b3c4c --> 5bb05482_5f6d_f5c2_1460_a2ec977e38f7 style c42572b6_95e3_adf4_9d97_d08f819b3c4c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Derivations of standard content blocks from provider content.
`AIMessage` will first attempt to use a provider-specific translator if
`model_provider` is set in `response_metadata` on the message. Consequently, each
provider translator must handle all possible content response types from the provider,
including text.
If no provider is set, or if the provider does not have a registered translator,
`AIMessage` will fall back to best-effort parsing of the content into blocks using
the implementation in `BaseMessage`.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from collections.abc import Callable
from langchain_core.messages import AIMessage, AIMessageChunk
from langchain_core.messages import content as types
# Provider to translator mapping
PROVIDER_TRANSLATORS: dict[str, dict[str, Callable[..., list[types.ContentBlock]]]] = {}
"""Map model provider names to translator functions.
The dictionary maps provider names (e.g. `'openai'`, `'anthropic'`) to another
dictionary with two keys:
- `'translate_content'`: Function to translate `AIMessage` content.
- `'translate_content_chunk'`: Function to translate `AIMessageChunk` content.
When calling `content_blocks` on an `AIMessage` or `AIMessageChunk`, if
`model_provider` is set in `response_metadata`, the corresponding translator
functions will be used to parse the content into blocks. Otherwise, best-effort parsing
in `BaseMessage` will be used.
"""
def register_translator(
provider: str,
translate_content: Callable[[AIMessage], list[types.ContentBlock]],
translate_content_chunk: Callable[[AIMessageChunk], list[types.ContentBlock]],
) -> None:
"""Register content translators for a provider in `PROVIDER_TRANSLATORS`.
Args:
provider: The model provider name (e.g. `'openai'`, `'anthropic'`).
translate_content: Function to translate `AIMessage` content.
translate_content_chunk: Function to translate `AIMessageChunk` content.
"""
PROVIDER_TRANSLATORS[provider] = {
"translate_content": translate_content,
"translate_content_chunk": translate_content_chunk,
}
def get_translator(
provider: str,
) -> dict[str, Callable[..., list[types.ContentBlock]]] | None:
"""Get the translator functions for a provider.
Args:
provider: The model provider name.
Returns:
Dictionary with `'translate_content'` and `'translate_content_chunk'`
functions, or None if no translator is registered for the provider. In such
case, best-effort parsing in `BaseMessage` will be used.
"""
return PROVIDER_TRANSLATORS.get(provider)
def _register_translators() -> None:
"""Register all translators in langchain-core.
A unit test ensures all modules in `block_translators` are represented here.
For translators implemented outside langchain-core, they can be registered by
calling `register_translator` from within the integration package.
"""
from langchain_core.messages.block_translators.anthropic import ( # noqa: PLC0415
_register_anthropic_translator,
)
from langchain_core.messages.block_translators.bedrock import ( # noqa: PLC0415
_register_bedrock_translator,
)
from langchain_core.messages.block_translators.bedrock_converse import ( # noqa: PLC0415
_register_bedrock_converse_translator,
)
from langchain_core.messages.block_translators.google_genai import ( # noqa: PLC0415
_register_google_genai_translator,
)
from langchain_core.messages.block_translators.google_vertexai import ( # noqa: PLC0415
_register_google_vertexai_translator,
)
from langchain_core.messages.block_translators.groq import ( # noqa: PLC0415
_register_groq_translator,
)
from langchain_core.messages.block_translators.openai import ( # noqa: PLC0415
_register_openai_translator,
)
_register_bedrock_translator()
_register_bedrock_converse_translator()
_register_anthropic_translator()
_register_google_genai_translator()
_register_google_vertexai_translator()
_register_groq_translator()
_register_openai_translator()
_register_translators()
Domain
Subdomains
Dependencies
- collections.abc
- langchain_core.messages
- langchain_core.messages.block_translators.anthropic
- langchain_core.messages.block_translators.bedrock
- langchain_core.messages.block_translators.bedrock_converse
- langchain_core.messages.block_translators.google_genai
- langchain_core.messages.block_translators.google_vertexai
- langchain_core.messages.block_translators.groq
- langchain_core.messages.block_translators.openai
- typing
Source
Frequently Asked Questions
What does __init__.py do?
__init__.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 __init__.py?
__init__.py defines 4 function(s): _register_translators, collections, get_translator, register_translator.
What does __init__.py depend on?
__init__.py imports 10 module(s): collections.abc, langchain_core.messages, langchain_core.messages.block_translators.anthropic, langchain_core.messages.block_translators.bedrock, langchain_core.messages.block_translators.bedrock_converse, langchain_core.messages.block_translators.google_genai, langchain_core.messages.block_translators.google_vertexai, langchain_core.messages.block_translators.groq, and 2 more.
Where is __init__.py in the architecture?
__init__.py is located at libs/core/langchain_core/messages/block_translators/__init__.py (domain: CoreAbstractions, subdomain: MessageSchema, directory: libs/core/langchain_core/messages/block_translators).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free