Home / Function/ _convert_openai_format_to_data_block() — langchain Function Reference

_convert_openai_format_to_data_block() — langchain Function Reference

Architecture documentation for the _convert_openai_format_to_data_block() function in openai.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  f017275d_db65_5cb1_527d_53d0c724527f["_convert_openai_format_to_data_block()"]
  3f58992c_878c_57d1_7412_5e64743aa7ba["openai.py"]
  f017275d_db65_5cb1_527d_53d0c724527f -->|defined in| 3f58992c_878c_57d1_7412_5e64743aa7ba
  e06c3a3b_b539_e71c_f165_d7355563ba61["_convert_to_v1_from_chat_completions_input()"]
  e06c3a3b_b539_e71c_f165_d7355563ba61 -->|calls| f017275d_db65_5cb1_527d_53d0c724527f
  style f017275d_db65_5cb1_527d_53d0c724527f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/messages/block_translators/openai.py lines 423–553

def _convert_openai_format_to_data_block(
    block: dict,
) -> types.ContentBlock | dict[Any, Any]:
    """Convert OpenAI image/audio/file content block to respective v1 multimodal block.

    We expect that the incoming block is verified to be in OpenAI Chat Completions
    format.

    If parsing fails, passes block through unchanged.

    Mappings (Chat Completions to LangChain v1):
    - Image -> `ImageContentBlock`
    - Audio -> `AudioContentBlock`
    - File -> `FileContentBlock`

    """

    # Extract extra keys to put them in `extras`
    def _extract_extras(block_dict: dict, known_keys: set[str]) -> dict[str, Any]:
        """Extract unknown keys from block to preserve as extras."""
        return {k: v for k, v in block_dict.items() if k not in known_keys}

    # base64-style image block
    if (block["type"] == "image_url") and (
        parsed := _parse_data_uri(block["image_url"]["url"])
    ):
        known_keys = {"type", "image_url"}
        extras = _extract_extras(block, known_keys)

        # Also extract extras from nested image_url dict
        image_url_known_keys = {"url"}
        image_url_extras = _extract_extras(block["image_url"], image_url_known_keys)

        # Merge extras
        all_extras = {**extras}
        for key, value in image_url_extras.items():
            if key == "detail":  # Don't rename
                all_extras["detail"] = value
            else:
                all_extras[f"image_url_{key}"] = value

        return types.create_image_block(
            # Even though this is labeled as `url`, it can be base64-encoded
            base64=parsed["data"],
            mime_type=parsed["mime_type"],
            **all_extras,
        )

    # url-style image block
    if (block["type"] == "image_url") and isinstance(
        block["image_url"].get("url"), str
    ):
        known_keys = {"type", "image_url"}
        extras = _extract_extras(block, known_keys)

        image_url_known_keys = {"url"}
        image_url_extras = _extract_extras(block["image_url"], image_url_known_keys)

        all_extras = {**extras}
        for key, value in image_url_extras.items():
            if key == "detail":  # Don't rename
                all_extras["detail"] = value
            else:
                all_extras[f"image_url_{key}"] = value

        return types.create_image_block(
            url=block["image_url"]["url"],
            **all_extras,
        )

    # base64-style audio block
    # audio is only represented via raw data, no url or ID option
    if block["type"] == "input_audio":
        known_keys = {"type", "input_audio"}
        extras = _extract_extras(block, known_keys)

        # Also extract extras from nested audio dict
        audio_known_keys = {"data", "format"}
        audio_extras = _extract_extras(block["input_audio"], audio_known_keys)

        all_extras = {**extras}

Domain

Subdomains

Frequently Asked Questions

What does _convert_openai_format_to_data_block() do?
_convert_openai_format_to_data_block() is a function in the langchain codebase, defined in libs/core/langchain_core/messages/block_translators/openai.py.
Where is _convert_openai_format_to_data_block() defined?
_convert_openai_format_to_data_block() is defined in libs/core/langchain_core/messages/block_translators/openai.py at line 423.
What calls _convert_openai_format_to_data_block()?
_convert_openai_format_to_data_block() is called by 1 function(s): _convert_to_v1_from_chat_completions_input.

Analyze Your Own Codebase

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

Try Supermodel Free