Home / Function/ _convert_message_to_dict() — langchain Function Reference

_convert_message_to_dict() — langchain Function Reference

Architecture documentation for the _convert_message_to_dict() function in chat_models.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d["_convert_message_to_dict()"]
  9591e0fc_6d18_28d3_cea9_e4a5cf7f2b59["chat_models.py"]
  e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d -->|defined in| 9591e0fc_6d18_28d3_cea9_e4a5cf7f2b59
  4149b891_9f6b_d1d3_0159_d2a1de034bf3["_create_message_dicts()"]
  4149b891_9f6b_d1d3_0159_d2a1de034bf3 -->|calls| e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d
  933ce559_e66a_509b_6b21_a22c244fe2e4["_format_message_content()"]
  e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d -->|calls| 933ce559_e66a_509b_6b21_a22c244fe2e4
  4f66305a_7bfb_7115_43e4_80967cae2db3["_lc_tool_call_to_groq_tool_call()"]
  e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d -->|calls| 4f66305a_7bfb_7115_43e4_80967cae2db3
  beed3c08_6516_6f44_f5eb_a73fa6cb1a0b["_lc_invalid_tool_call_to_groq_tool_call()"]
  e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d -->|calls| beed3c08_6516_6f44_f5eb_a73fa6cb1a0b
  style e58980fb_2231_9ea9_a3a2_b6d2a0c2c02d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/partners/groq/langchain_groq/chat_models.py lines 1293–1380

def _convert_message_to_dict(message: BaseMessage) -> dict:
    """Convert a LangChain message to a dictionary.

    Args:
        message: The LangChain message.

    Returns:
        The dictionary.

    """
    message_dict: dict[str, Any]
    if isinstance(message, ChatMessage):
        message_dict = {"role": message.role, "content": message.content}
    elif isinstance(message, HumanMessage):
        message_dict = {
            "role": "user",
            "content": _format_message_content(message.content),
        }
    elif isinstance(message, AIMessage):
        # Translate v1 content
        if message.response_metadata.get("output_version") == "v1":
            new_content, new_additional_kwargs = _convert_from_v1_to_groq(
                message.content_blocks, message.response_metadata.get("model_provider")
            )
            message = message.model_copy(
                update={
                    "content": new_content,
                    "additional_kwargs": new_additional_kwargs,
                }
            )
        message_dict = {"role": "assistant", "content": message.content}

        # If content is a list of content blocks, filter out tool_call blocks
        # as Groq API only accepts 'text' type blocks in content
        if isinstance(message.content, list):
            text_blocks = [
                block
                for block in message.content
                if isinstance(block, dict) and block.get("type") == "text"
            ]
            message_dict["content"] = text_blocks if text_blocks else ""

        if "function_call" in message.additional_kwargs:
            message_dict["function_call"] = message.additional_kwargs["function_call"]
            # If function call only, content is None not empty string
            if message_dict["content"] == "":
                message_dict["content"] = None
        if message.tool_calls or message.invalid_tool_calls:
            message_dict["tool_calls"] = [
                _lc_tool_call_to_groq_tool_call(tc) for tc in message.tool_calls
            ] + [
                _lc_invalid_tool_call_to_groq_tool_call(tc)
                for tc in message.invalid_tool_calls
            ]
            # If tool calls only (no text blocks), content is None not empty string
            if message_dict["content"] == "" or (
                isinstance(message_dict["content"], list)
                and not message_dict["content"]
            ):
                message_dict["content"] = None
        elif "tool_calls" in message.additional_kwargs:
            message_dict["tool_calls"] = message.additional_kwargs["tool_calls"]
            # If tool calls only, content is None not empty string
            if message_dict["content"] == "" or (
                isinstance(message_dict["content"], list)
                and not message_dict["content"]
            ):
                message_dict["content"] = None
    elif isinstance(message, SystemMessage):
        message_dict = {"role": "system", "content": message.content}
    elif isinstance(message, FunctionMessage):
        message_dict = {
            "role": "function",
            "content": message.content,
            "name": message.name,
        }
    elif isinstance(message, ToolMessage):
        message_dict = {
            "role": "tool",
            "content": message.content,
            "tool_call_id": message.tool_call_id,

Domain

Subdomains

Frequently Asked Questions

What does _convert_message_to_dict() do?
_convert_message_to_dict() is a function in the langchain codebase, defined in libs/partners/groq/langchain_groq/chat_models.py.
Where is _convert_message_to_dict() defined?
_convert_message_to_dict() is defined in libs/partners/groq/langchain_groq/chat_models.py at line 1293.
What does _convert_message_to_dict() call?
_convert_message_to_dict() calls 3 function(s): _format_message_content, _lc_invalid_tool_call_to_groq_tool_call, _lc_tool_call_to_groq_tool_call.
What calls _convert_message_to_dict()?
_convert_message_to_dict() is called by 1 function(s): _create_message_dicts.

Analyze Your Own Codebase

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

Try Supermodel Free