Remix.run Logo
rayboy1995 5 hours ago

I moved directly from 2.5 flash lite to deepseek v4 flash, its already cheaper and if your prompt caching is good you can save so much more money.

binary132 4 hours ago | parent [-]

could you explain how to optimize prompt caching or point to a doc about it?

NeutralForest 4 hours ago | parent | next [-]

Anything Sam Rose is worth reading: https://ngrok.com/blog/prompt-caching

but the implementation will be up to your provider and harness, for deepseek, they expose some numbers: https://api-docs.deepseek.com/guides/kv_cache/ and Anthropic has a list of actions invalidating your cache: https://platform.claude.com/docs/en/build-with-claude/prompt...

Basically, you avoid anything dynamic: model change, tool change, etc it's also important that your system prompt or main prompt doesn't have non-static data like the date/time/place or someone's name (the person you interact with in a chatbot for example). That should be left to tool call or search.

samwho 3 hours ago | parent | next [-]

Sam Rose here. Thank you <3

NeutralForest 3 hours ago | parent | next [-]

The man himself, thank you for the articles =)

samwho 2 hours ago | parent [-]

You are extremely welcome.

insane_dreamer 2 hours ago | parent | prev [-]

samwho? samrose.

arjie 4 hours ago | parent | prev [-]

I just put the varying parameters in a trailer prompt and have them change every time. It doesn’t matter because the cache is prefix keyed. You lose caching for the last 20 tokens or so but that’s not a big deal. Moving it to a tool call makes it too slow (needs full roundtrip).

If you’re constructing the prompt you don’t have to jam everything together you can arrange it appropriately.

NeutralForest 4 hours ago | parent [-]

Yes indeed! Mostly don't put changing data in the beginning or prepend.

apwheele 3 hours ago | parent | prev | next [-]

Not an open source, but I discuss it in my book with examples for OpenAI/Anthropic/Gemini, https://crimede-coder.com/blogposts/2026/LLMsForMortals.

All of the models, you need to have a consistent input to get the cache hit. So if you are chatting with a document, and change the system prompt, it will be a cache miss, even if the rest of the items are all the same. If you even pass in the document in not the same order as the prompts, it will be a cache miss. Or if you add tool calls or structured outputs, it will be a cache miss. (Since those generally go at the beginning of the prompt call, not at the end.)

Most of the time when reading documents from URLs directly it will never cache. (Need to typically pass in the bytes directly, or use the provider document store index.)

Gemini has a 4096 minimum token size with the 3 version models before even getting a cache hit. OpenAI it is lower (1024), and is automatic, but only happens in increments of 124. Anthropic can also get cache hits at 1024 tokens, but you need to explicit ask for it (and pay extra).

Caching by default typically lives for 5 minutes since the last cache hit across providers. But some of them you can ask for longer. AWS for Anthropic models can be tricky with multiple endpoint routing, so can get cache misses if it happens to route to a different endpoint.

4 hours ago | parent | prev [-]
[deleted]