fix: include tool_choice in vertex AI context caching key and request body

tool_choice was not being popped from optional_params or passed to
get_cache_key, causing cache misses when only tool_choice differed.
Also assign tool_choice to the cached content request body alongside tools.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
flex-myeonghyeon 2026-04-13 14:28:46 +09:00
parent 5e80e075c7
commit ceff1831b0

View file

@ -338,6 +338,7 @@ class ContextCachingEndpoints(VertexBase):
return messages, optional_params, None
tools = optional_params.pop("tools", None)
tool_choice = optional_params.pop("tool_choice", None)
## AUTHORIZATION ##
token, url = self._get_token_and_url_context_caching(
@ -370,7 +371,7 @@ class ContextCachingEndpoints(VertexBase):
## CHECK IF CACHED ALREADY
generated_cache_key = local_cache_obj.get_cache_key(
messages=cached_messages, tools=tools, model=model
messages=cached_messages, tools=tools, tool_choice=tool_choice, model=model
)
google_cache_name = self.check_cache(
cache_key=generated_cache_key,
@ -401,6 +402,7 @@ class ContextCachingEndpoints(VertexBase):
)
cached_content_request_body["tools"] = tools
cached_content_request_body["tool_choice"] = tool_choice
## LOGGING
logging_obj.pre_call(
@ -486,6 +488,7 @@ class ContextCachingEndpoints(VertexBase):
return messages, optional_params, None
tools = optional_params.pop("tools", None)
tool_choice = optional_params.pop("tool_choice", None)
## AUTHORIZATION ##
token, url = self._get_token_and_url_context_caching(
@ -515,7 +518,7 @@ class ContextCachingEndpoints(VertexBase):
## CHECK IF CACHED ALREADY
generated_cache_key = local_cache_obj.get_cache_key(
messages=cached_messages, tools=tools, model=model
messages=cached_messages, tools=tools, tool_choice=tool_choice, model=model
)
google_cache_name = await self.async_check_cache(
cache_key=generated_cache_key,
@ -547,6 +550,7 @@ class ContextCachingEndpoints(VertexBase):
)
cached_content_request_body["tools"] = tools
cached_content_request_body["tool_choice"] = tool_choice
## LOGGING
logging_obj.pre_call(