Skip to content

Commit ca48a4f

Browse files
committed
better amazon bedrock caching with anthropic models
1 parent 98ee5a3 commit ca48a4f

3 files changed

Lines changed: 18 additions & 0 deletions

File tree

packages/opencode/src/provider/provider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ export namespace Provider {
185185
source,
186186
info,
187187
options,
188+
getModel,
188189
}
189190
return
190191
}

packages/opencode/src/provider/transform.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ export namespace ProviderTransform {
2020
}
2121
}
2222
}
23+
if (providerID === "amazon-bedrock" || modelID.includes("anthropic")) {
24+
const system = msgs.filter((msg) => msg.role === "system").slice(0, 2)
25+
const final = msgs.filter((msg) => msg.role !== "system").slice(-2)
26+
27+
for (const msg of unique([...system, ...final])) {
28+
msg.providerMetadata = {
29+
...msg.providerMetadata,
30+
bedrock: {
31+
cachePoint: { type: "ephemeral" },
32+
},
33+
}
34+
}
35+
}
2336
return msgs
2437
}
2538
}

packages/opencode/src/session/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,8 +882,12 @@ export namespace Session {
882882
reasoning: 0,
883883
cache: {
884884
write: (metadata?.["anthropic"]?.["cacheCreationInputTokens"] ??
885+
// @ts-expect-error
886+
metadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ??
885887
0) as number,
886888
read: (metadata?.["anthropic"]?.["cacheReadInputTokens"] ??
889+
// @ts-expect-error
890+
metadata?.["bedrock"]?.["usage"]?.["cacheReadInputTokens"] ??
887891
0) as number,
888892
},
889893
}

0 commit comments

Comments
 (0)