Manual disable is rotation-only; include media in response cache key
Two independent fixes surfaced while diagnosing kilo-spora vision requests
returning 503 and (once enabled) risking stale image answers.
handlers.py: _raise_if_provider_unavailable no longer rejects a direct,
provider-named request just because the provider is manually disabled. The
dashboard disable toggle is meant to remove a provider from rotation/autoselect
(those scans use is_provider_disabled_cheap) — it must not take the provider
offline across the whole API. Direct calls still 503 on genuine unavailability
(failure cooldown or usage-limit cooldown).
cache.py: _generate_cache_key hashed only the text parts of multimodal
messages, dropping image_url/video_url/audio_url. A caller that sends a fixed
prompt with a varying image (e.g. the real-estate OUTDOOR/INDOOR classifier)
collapsed every image to one cache key, so the first image's answer was served
for all subsequent images. Fold each media reference into the message hash so
different attachments produce different keys.
Co-Authored-By:
Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Showing
Please
register
or
sign in
to comment