같은 생각, 다른 손잡이
OpenAI는 조건이 맞는 prompt면 알아서 caching을 걸고, usage에 cached_tokens를 보여줘. Anthropic은 cache_control breakpoint를 직접 찍게 하고, cache_creation_input_tokens랑 cache_read_input_tokens를 따로 알려주고. Gemini는 암묵과 명시 두 방식을 두면서 자기만의 token 문턱이랑 TTL 규칙을 가져.
생각은 옮겨 다니고, 구현은 안 옮겨 다녀
어디서든 통하는 생각은 "stable prefix를 다시 쓴다"야. 그걸 어떻게 시키느냐는 provider마다 달라지고. 그러니까 앱은 생각을 중심에 놓고 짜고, provider 쪽은 얇은 층을 하나 두고 거기서 맞춰. 한 provider의 caching 방식을 코드에 박아넣은 앱은 두 번째를 붙일 때 아주 곤란해져.
추상화는 정직하게
provider 차이를 전부 감추려고 하지 마. 어떤 provider와 model을 썼는지, cache를 어떤 방식으로 걸었는지, cached token이 몇 개였는지 기록에 남겨. 차이는 실제로 있어. 없는 척하면 제일 고약한 버그가 태어나 — A에서는 되는데 B에서는 소리 없이 안 되는 버그.