summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDmytro Yankovskyi <[email protected]>2025-06-30 17:12:30 +0200
committerGitHub <[email protected]>2025-06-30 11:12:30 -0400
commit68e82e4d94a0a10f420a78c60f277f55b9f2fdd5 (patch)
tree45ddfbe0bdf531ba4f3dfe721bcaa2bddcefcd3e
parenta4aa0e6f8db0e43452521b04f8ca620ba28d5ab6 (diff)
downloadopencode-68e82e4d94a0a10f420a78c60f277f55b9f2fdd5.tar.gz
opencode-68e82e4d94a0a10f420a78c60f277f55b9f2fdd5.zip
fix(#467): more granular bedrock modelID based on aws region (#482)
-rw-r--r--packages/opencode/src/provider/provider.ts50
1 files changed, 47 insertions, 3 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index d409a176f..cae40889a 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -140,10 +140,54 @@ export namespace Provider {
credentialProvider: fromNodeProviderChain(),
},
async getModel(sdk: any, modelID: string) {
- if (modelID.includes("claude")) {
- const prefix = region.split("-")[0]
- modelID = `${prefix}.${modelID}`
+ let regionPrefix = region.split("-")[0]
+
+ switch (regionPrefix) {
+ case "us": {
+ const modelRequiresPrefix = ["claude", "deepseek"].some((m) =>
+ modelID.includes(m),
+ )
+ if (modelRequiresPrefix) {
+ modelID = `${regionPrefix}.${modelID}`
+ }
+ break
+ }
+ case "eu": {
+ const regionRequiresPrefix = [
+ "eu-west-1",
+ "eu-west-3",
+ "eu-north-1",
+ "eu-central-1",
+ "eu-south-1",
+ "eu-south-2",
+ ].some((r) => region.includes(r))
+ const modelRequiresPrefix = [
+ "claude",
+ "nova-lite",
+ "nova-micro",
+ "llama3",
+ "pixtral",
+ ].some((m) => modelID.includes(m))
+ if (regionRequiresPrefix && modelRequiresPrefix) {
+ modelID = `${regionPrefix}.${modelID}`
+ }
+ break
+ }
+ case "ap": {
+ const modelRequiresPrefix = [
+ "claude",
+ "nova-lite",
+ "nova-micro",
+ "nova-pro",
+ ].some((m) => modelID.includes(m))
+ if (modelRequiresPrefix) {
+ regionPrefix = "apac"
+ modelID = `${regionPrefix}.${modelID}`
+ }
+ break
+ }
}
+
return sdk.languageModel(modelID)
},
}