summaryrefslogtreecommitdiffhomepage
path: root/internal/llm
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-20 15:56:36 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:42:29 +0200
commit8e160488ff1aa29f6b2cb601145e9f3ff5410d07 (patch)
tree46138a414360ca73be3bb98c24597eebb90d695f /internal/llm
parent2de51274177432b559be3b7deb1f14b9539f2994 (diff)
downloadopencode-8e160488ff1aa29f6b2cb601145e9f3ff5410d07.tar.gz
opencode-8e160488ff1aa29f6b2cb601145e9f3ff5410d07.zip
improve cache
Diffstat (limited to 'internal/llm')
-rw-r--r--internal/llm/provider/anthropic.go13
1 files changed, 7 insertions, 6 deletions
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)
}