From 8e160488ff1aa29f6b2cb601145e9f3ff5410d07 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Sun, 20 Apr 2025 15:56:36 +0200 Subject: improve cache --- internal/llm/provider/anthropic.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'internal/llm') diff --git a/internal/llm/provider/anthropic.go b/internal/llm/provider/anthropic.go index 2c16a0593..86f483f64 100644 --- a/internal/llm/provider/anthropic.go +++ b/internal/llm/provider/anthropic.go @@ -57,16 +57,18 @@ func newAnthropicClient(opts providerClientOptions) AnthropicClient { } func (a *anthropicClient) convertMessages(messages []message.Message) (anthropicMessages []anthropic.MessageParam) { - cachedBlocks := 0 - for _, msg := range messages { + for i, msg := range messages { + cache := false + if len(messages)-3 > i { + cache = true + } switch msg.Role { case message.User: content := anthropic.NewTextBlock(msg.Content().String()) - if cachedBlocks < 2 && !a.options.disableCache { + if cache && !a.options.disableCache { content.OfRequestTextBlock.CacheControl = anthropic.CacheControlEphemeralParam{ Type: "ephemeral", } - cachedBlocks++ } anthropicMessages = append(anthropicMessages, anthropic.NewUserMessage(content)) @@ -74,11 +76,10 @@ func (a *anthropicClient) convertMessages(messages []message.Message) (anthropic blocks := []anthropic.ContentBlockParamUnion{} if msg.Content().String() != "" { content := anthropic.NewTextBlock(msg.Content().String()) - if cachedBlocks < 2 && !a.options.disableCache { + if cache && !a.options.disableCache { content.OfRequestTextBlock.CacheControl = anthropic.CacheControlEphemeralParam{ Type: "ephemeral", } - cachedBlocks++ } blocks = append(blocks, content) } -- cgit v1.2.3