Home / Function/ _convert_to_message_template() — langchain Function Reference

_convert_to_message_template() — langchain Function Reference

Architecture documentation for the _convert_to_message_template() function in chat.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  0a946d27_710a_f7ff_e9e4_87561079dc25["_convert_to_message_template()"]
  d735cdf0_4dd6_b10d_3d65_7f753809639d["chat.py"]
  0a946d27_710a_f7ff_e9e4_87561079dc25 -->|defined in| d735cdf0_4dd6_b10d_3d65_7f753809639d
  fd4d40b2_9f02_c4c9_852d_d998c70f1d1e["__init__()"]
  fd4d40b2_9f02_c4c9_852d_d998c70f1d1e -->|calls| 0a946d27_710a_f7ff_e9e4_87561079dc25
  51e4c8c4_03c1_4bf3_6d35_36e10545e164["append()"]
  51e4c8c4_03c1_4bf3_6d35_36e10545e164 -->|calls| 0a946d27_710a_f7ff_e9e4_87561079dc25
  a7addf49_35b7_d70e_edec_9401bf339038["extend()"]
  a7addf49_35b7_d70e_edec_9401bf339038 -->|calls| 0a946d27_710a_f7ff_e9e4_87561079dc25
  dee074bd_3404_de66_dbc9_422f215993ec["_create_template_from_message_type()"]
  0a946d27_710a_f7ff_e9e4_87561079dc25 -->|calls| dee074bd_3404_de66_dbc9_422f215993ec
  6966af16_ade2_de3e_4f06_f97eca43d8e0["from_template()"]
  0a946d27_710a_f7ff_e9e4_87561079dc25 -->|calls| 6966af16_ade2_de3e_4f06_f97eca43d8e0
  style 0a946d27_710a_f7ff_e9e4_87561079dc25 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/prompts/chat.py lines 1407–1480

def _convert_to_message_template(
    message: MessageLikeRepresentation,
    template_format: PromptTemplateFormat = "f-string",
) -> BaseMessage | BaseMessagePromptTemplate | BaseChatPromptTemplate:
    """Instantiate a message from a variety of message formats.

    A message can be represented using the following formats:

    1. `BaseMessagePromptTemplate`
    2. `BaseMessage`
    3. 2-tuple of `(message type, template)`; e.g., `('human', '{user_input}')`
    4. 2-tuple of `(message class, template)`
    5. A string which is shorthand for `('human', template)`; e.g., `'{user_input}'`

    Args:
        message: A representation of a message in one of the supported formats.
        template_format: Format of the template.

    Returns:
        An instance of a message or a message template.

    Raises:
        ValueError: If unexpected message type.
        ValueError: If 2-tuple does not have 2 elements.
    """
    if isinstance(message, (BaseMessagePromptTemplate, BaseChatPromptTemplate)):
        message_: BaseMessage | BaseMessagePromptTemplate | BaseChatPromptTemplate = (
            message
        )
    elif isinstance(message, BaseMessage):
        message_ = message
    elif isinstance(message, str):
        message_ = _create_template_from_message_type(
            "human", message, template_format=template_format
        )
    elif isinstance(message, (tuple, dict)):
        if isinstance(message, dict):
            if set(message.keys()) != {"content", "role"}:
                msg = (
                    "Expected dict to have exact keys 'role' and 'content'."
                    f" Got: {message}"
                )
                raise ValueError(msg)
            message_type_str = message["role"]
            template = message["content"]
        else:
            if len(message) != 2:  # noqa: PLR2004
                msg = f"Expected 2-tuple of (role, template), got {message}"
                raise ValueError(msg)
            message_type_str, template = message

        if isinstance(message_type_str, str):
            message_ = _create_template_from_message_type(
                message_type_str, template, template_format=template_format
            )
        elif (
            hasattr(message_type_str, "model_fields")
            and "type" in message_type_str.model_fields
        ):
            message_type = message_type_str.model_fields["type"].default
            message_ = _create_template_from_message_type(
                message_type, template, template_format=template_format
            )
        else:
            message_ = message_type_str(
                prompt=PromptTemplate.from_template(
                    cast("str", template), template_format=template_format
                )
            )
    else:
        msg = f"Unsupported message type: {type(message)}"
        raise NotImplementedError(msg)

    return message_

Subdomains

Frequently Asked Questions

What does _convert_to_message_template() do?
_convert_to_message_template() is a function in the langchain codebase, defined in libs/core/langchain_core/prompts/chat.py.
Where is _convert_to_message_template() defined?
_convert_to_message_template() is defined in libs/core/langchain_core/prompts/chat.py at line 1407.
What does _convert_to_message_template() call?
_convert_to_message_template() calls 2 function(s): _create_template_from_message_type, from_template.
What calls _convert_to_message_template()?
_convert_to_message_template() is called by 3 function(s): __init__, append, extend.

Analyze Your Own Codebase

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

Try Supermodel Free