_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
Source
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