Require confirmed cache usage in strict investigation tests
This commit is contained in:
1 parent
4142e2dc2b
commit
089ac3ac5b
6 files changed
+119
-3
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user