diff --git a/libs/partners/openai/langchain_openai/chat_models/_compat.py b/libs/partners/openai/langchain_openai/chat_models/_compat.py index f1ac28392d4..86aff674295 100644 --- a/libs/partners/openai/langchain_openai/chat_models/_compat.py +++ b/libs/partners/openai/langchain_openai/chat_models/_compat.py @@ -485,12 +485,13 @@ def _implode_reasoning_blocks(blocks: list[dict[str, Any]]) -> Iterable[dict[str while i < n: block = blocks[i] - # Ordinary block – just yield a shallow copy - if block.get("type") != "reasoning": + # Skip non-reasoning blocks or blocks already in Responses format + if block.get("type") != "reasoning" or "summary" in block: yield dict(block) i += 1 continue - elif "reasoning" not in block: + elif "reasoning" not in block and "summary" not in block: + # {"type": "reasoning", "id": "rs_..."} yield {**block, "summary": []} i += 1 continue diff --git a/libs/partners/openai/tests/unit_tests/chat_models/test_base.py b/libs/partners/openai/tests/unit_tests/chat_models/test_base.py index d1c6b254614..f8120df7d3e 100644 --- a/libs/partners/openai/tests/unit_tests/chat_models/test_base.py +++ b/libs/partners/openai/tests/unit_tests/chat_models/test_base.py @@ -2563,7 +2563,7 @@ def test_convert_to_v1_from_chat_completions( ), AIMessage( [ - {"type": "reasoning", "id": "abc123"}, + {"type": "reasoning", "id": "abc123", "summary": []}, { "type": "reasoning", "id": "abc234",