Просмотр исходного кода

better amazon bedrock caching with anthropic models

Dax Raad 9 месяцев назад
Родитель
Сommit
ca48a4f0fb

+ 1 - 0
packages/opencode/src/provider/provider.ts

@@ -185,6 +185,7 @@ export namespace Provider {
           source,
           info,
           options,
+          getModel,
         }
         return
       }

+ 13 - 0
packages/opencode/src/provider/transform.ts

@@ -20,6 +20,19 @@ export namespace ProviderTransform {
         }
       }
     }
+    if (providerID === "amazon-bedrock" || modelID.includes("anthropic")) {
+      const system = msgs.filter((msg) => msg.role === "system").slice(0, 2)
+      const final = msgs.filter((msg) => msg.role !== "system").slice(-2)
+
+      for (const msg of unique([...system, ...final])) {
+        msg.providerMetadata = {
+          ...msg.providerMetadata,
+          bedrock: {
+            cachePoint: { type: "ephemeral" },
+          },
+        }
+      }
+    }
     return msgs
   }
 }

+ 4 - 0
packages/opencode/src/session/index.ts

@@ -882,8 +882,12 @@ export namespace Session {
       reasoning: 0,
       cache: {
         write: (metadata?.["anthropic"]?.["cacheCreationInputTokens"] ??
+          // @ts-expect-error
+          metadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ??
           0) as number,
         read: (metadata?.["anthropic"]?.["cacheReadInputTokens"] ??
+          // @ts-expect-error
+          metadata?.["bedrock"]?.["usage"]?.["cacheReadInputTokens"] ??
           0) as number,
       },
     }