Require confirmed cache usage in strict investigation tests

This commit is contained in:
Nico committed 2026-10-16 15:04:48 +02:00
1 parent 4142e2dc2b
commit 089ac3ac5b
6 files changed
+119 -3

No files matched your search

+11
View File
@@ -88,6 +88,11 @@ class LLMGateway:
for tokens in (response.input_tokens, response.output_tokens, response.cached_input_tokens, response.reasoning_tokens):
if tokens is not None and (isinstance(tokens, bool) or not isinstance(tokens, int) or not 0 <= tokens <= 10**12):
raise LLMError("LLM_RESPONSE")
if provider.cache_required and (provider.cache_required_prompt_prefix is None
or request['prompt_version'].startswith(provider.cache_required_prompt_prefix)):
if (response.cached_input_tokens is None or response.cached_input_tokens <= 0
or response.input_tokens is None or response.cached_input_tokens > response.input_tokens):
raise LLMError('LLM_CACHE_USAGE_UNCONFIRMED')
encoded = json_bytes(response.document)
if len(encoded) > self.config.max_response_bytes:
raise LLMError("LLM_RESPONSE_LIMIT")
@@ -107,6 +112,12 @@ class LLMGateway:
LOGGER.info("LLM request succeeded provider=%s", provider.id)
return {"document": parse_manifest(encoded), "metadata": metadata}
except (ProviderUnavailable, TimeoutError) as error:
if provider.cache_required and (provider.cache_required_prompt_prefix is None
or request['prompt_version'].startswith(provider.cache_required_prompt_prefix)):
required_error = LLMError('LLM_CACHE_REQUIRED',
http_status=getattr(error, 'http_status', None), diagnostics=getattr(error, 'diagnostics', None))
self._failure_metadata(required_error, provider, request, started, response, attempts)
raise required_error from None
code = error.code if isinstance(error, ProviderUnavailable) else "LLM_TIMEOUT"
attempts.append({"provider": provider.id, "code": code})
http_status = getattr(error, "http_status", None)