fix(prompt-caching): skip top-level cache_control on role:tool for OpenRouter

On the native Anthropic Messages API path, convert_messages_to_anthropic()
moves top-level cache_control on role:tool messages inside the tool_result
block. On OpenRouter (chat_completions), no such conversion happens — the
unexpected top-level field causes a silent hang on the second tool call.

Add native_anthropic parameter to _apply_cache_marker() and
apply_anthropic_cache_control(). When False (OpenRouter), role:tool messages
are skipped entirely. When True (native Anthropic), existing behaviour is
preserved.

Fixes #2362
This commit is contained in:
teyrebaz33
2026-03-22 01:05:26 +03:00
committed by Teknium
parent 52dd479214
commit bd49bce278
4 changed files with 17 additions and 8 deletions

View File

@@ -718,7 +718,7 @@ class TestConvertMessages:
],
},
{"role": "tool", "tool_call_id": "tc_1", "content": "result"},
])
], native_anthropic=True)
_, result = convert_messages_to_anthropic(messages)
user_msg = [m for m in result if m["role"] == "user"][0]