@@ -57,16 +57,18 @@ func newAnthropicClient(opts providerClientOptions) AnthropicClient {
5757}
5858
5959func (a *anthropicClient) convertMessages(messages []message.Message) (anthropicMessages []anthropic.MessageParam) {
60− cachedBlocks := 0
61− for _, msg := range messages {
60+ for i, msg := range messages {
61+ cache := false
62+ if len(messages)-3 > i {
63+ cache = true
64+ }
6265 switch msg.Role {
6366 case message.User:
6467 content := anthropic.NewTextBlock(msg.Content().String())
65− if cachedBlocks < 2 && !a.options.disableCache {
68+ if cache && !a.options.disableCache {
6669 content.OfRequestTextBlock.CacheControl = anthropic.CacheControlEphemeralParam{
6770 Type: "ephemeral",
6871 }
69− cachedBlocks++
7072 }
7173 anthropicMessages = append(anthropicMessages, anthropic.NewUserMessage(content))
7274
@@ -74,11 +76,10 @@ func (a *anthropicClient) convertMessages(messages []message.Message) (anthropic
7476 blocks := []anthropic.ContentBlockParamUnion{}
7577 if msg.Content().String() != "" {
7678 content := anthropic.NewTextBlock(msg.Content().String())
77− if cachedBlocks < 2 && !a.options.disableCache {
79+ if cache && !a.options.disableCache {
7880 content.OfRequestTextBlock.CacheControl = anthropic.CacheControlEphemeralParam{
7981 Type: "ephemeral",
8082 }
81− cachedBlocks++
8283 }
8384 blocks = append(blocks, content)
8485 }