Commit e896070
authored
fix(compiler): strip cache_control for non-Anthropic providers (#154)
The compiler tags reusable prompt context with an Anthropic ephemeral
`cache_control` marker (`_cached_text`). The docstring assumed providers
that don't support it would simply ignore it — but LiteLLM translates the
marker into a provider-native cached-content object for Gemini, which then
conflicts with `system_instruction`/`tools` and fails every request with
`400 CachedContent can not be used with ...`. As a result, *all* Gemini
compiles fail out of the box.
Strip the marker at the single request egress (`_llm_call` /
`_llm_call_async`) for any non-Anthropic provider, keeping it for Anthropic
direct and Claude via OpenRouter/Bedrock/Vertex. Anthropic prompt caching is
unchanged; Gemini's implicit caching still applies to the plain text blocks.
Provider detection uses litellm.get_llm_provider, imported locally so it
stays correct even when tests patch the module-level `litellm` reference.
Adds TestCacheControlStripping covering provider gating, marker removal
(non-mutating), and the sync stripping/keeping paths.
Co-authored-by: Aldominguez12 <191896285+Aldominguez12@users.noreply.github.com>1 parent 6194c5e commit e896070
2 files changed
Lines changed: 129 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
262 | 262 | | |
263 | 263 | | |
264 | 264 | | |
265 | | - | |
266 | | - | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
267 | 270 | | |
268 | 271 | | |
269 | 272 | | |
270 | 273 | | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
271 | 334 | | |
272 | 335 | | |
273 | 336 | | |
| |||
328 | 391 | | |
329 | 392 | | |
330 | 393 | | |
| 394 | + | |
331 | 395 | | |
332 | 396 | | |
333 | 397 | | |
| |||
353 | 417 | | |
354 | 418 | | |
355 | 419 | | |
| 420 | + | |
356 | 421 | | |
357 | 422 | | |
358 | 423 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2260 | 2260 | | |
2261 | 2261 | | |
2262 | 2262 | | |
| 2263 | + | |
| 2264 | + | |
| 2265 | + | |
| 2266 | + | |
| 2267 | + | |
| 2268 | + | |
| 2269 | + | |
| 2270 | + | |
| 2271 | + | |
| 2272 | + | |
| 2273 | + | |
| 2274 | + | |
| 2275 | + | |
| 2276 | + | |
| 2277 | + | |
| 2278 | + | |
| 2279 | + | |
| 2280 | + | |
| 2281 | + | |
| 2282 | + | |
| 2283 | + | |
| 2284 | + | |
| 2285 | + | |
| 2286 | + | |
| 2287 | + | |
| 2288 | + | |
| 2289 | + | |
| 2290 | + | |
| 2291 | + | |
| 2292 | + | |
| 2293 | + | |
| 2294 | + | |
| 2295 | + | |
| 2296 | + | |
| 2297 | + | |
| 2298 | + | |
| 2299 | + | |
| 2300 | + | |
| 2301 | + | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
| 2308 | + | |
| 2309 | + | |
| 2310 | + | |
| 2311 | + | |
| 2312 | + | |
| 2313 | + | |
| 2314 | + | |
| 2315 | + | |
| 2316 | + | |
| 2317 | + | |
| 2318 | + | |
| 2319 | + | |
| 2320 | + | |
| 2321 | + | |
| 2322 | + | |
| 2323 | + | |
| 2324 | + | |
2263 | 2325 | | |
2264 | 2326 | | |
2265 | 2327 | | |
| |||
0 commit comments