openai[patch]: compat with Bedrock Converse (#31280)

ChatBedrockConverse passes through reasoning content blocks in [Bedrock
Converse
format](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html).

Similar to how we handle Anthropic thinking blocks, here we ensure these
are filtered out of OpenAI request payloads.

Resolves https://github.com/langchain-ai/langchain/issues/31279.
This commit is contained in:
ccurme
2025-05-19 10:35:26 -04:00
committed by GitHub
parent 8b6fec89bc
commit 32fcc97a90
2 changed files with 35 additions and 1 deletions

View File

@@ -1034,6 +1034,40 @@ def test__get_request_payload() -> None:
}
assert payload == expected
# Test we ignore reasoning blocks from other providers
reasoning_messages: list = [
{
"role": "user",
"content": [
{"type": "reasoning_content", "reasoning_content": "reasoning..."},
{"type": "text", "text": "reasoned response"},
],
},
{
"role": "user",
"content": [
{"type": "thinking", "thinking": "thinking..."},
{"type": "text", "text": "thoughtful response"},
],
},
]
expected = {
"messages": [
{
"role": "user",
"content": [{"type": "text", "text": "reasoned response"}],
},
{
"role": "user",
"content": [{"type": "text", "text": "thoughtful response"}],
},
],
"model": "o3-mini",
"stream": False,
}
payload = llm._get_request_payload(reasoning_messages)
assert payload == expected
def test_init_o1() -> None:
with pytest.warns(None) as record: # type: ignore[call-overload]