Home / File/ __init__.py — langchain Source File

__init__.py — langchain Source File

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

File python CoreAbstractions MessageSchema 10 imports 4 functions

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()

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

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