From 53930e6ef99c43137611b2143c8f98615e3ab63d Mon Sep 17 00:00:00 2001 From: narmstrong-berri Date: Fri, 6 Nov 2026 06:16:06 +0000 Subject: [PATCH] fix(messages): leave cache_hit unset on native provider results like python Python only stamps cache_hit when a result came from the cache. The native logging adapter wrote False on every provider result, so unary success payloads, SpendLogs and failure payloads carried False where Python has None. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013FDwtkaNTifWAP4W7JZavE --- litellm-rust/crates/callbacks-legacy-python/src/adapter.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/litellm-rust/crates/callbacks-legacy-python/src/adapter.rs b/litellm-rust/crates/callbacks-legacy-python/src/adapter.rs index 1bb84184e4c..e2741aa7456 100644 --- a/litellm-rust/crates/callbacks-legacy-python/src/adapter.rs +++ b/litellm-rust/crates/callbacks-legacy-python/src/adapter.rs @@ -548,7 +548,10 @@ impl LegacyLogging { ResultSource::Provider => None, ResultSource::Cache { key } => Some(key.clone()), }; - details.set_item("cache_hit", self.cache_key.is_some())?; + if self.cache_key.is_some() { + // Python stamps `cache_hit` only on a cache hit; a provider result leaves it unset. + details.set_item("cache_hit", true)?; + } details.set_item("cache_key", self.cache_key.as_deref())?; Ok(HookStep::Ready(())) } @@ -1135,7 +1138,7 @@ logger._provider_reported_cost = None c" assert logger.model_call_details.get('response_cost') is None, logger.model_call_details assert logger._provider_reported_cost == reported, logger._provider_reported_cost -assert logger.model_call_details['cache_hit'] is cache_hit, logger.model_call_details +assert logger.model_call_details.get('cache_hit') is (True if cache_hit else None), logger.model_call_details assert logger.update['custom_llm_provider'] == 'edenai', logger.update ", );