package aws import "strings" var awsModelIDMap = map[string]string{ "claude-3-sonnet-20240229": "anthropic.claude-3-sonnet-20240229-v1:0", "claude-3-opus-20240229": "anthropic.claude-3-opus-20240229-v1:0", "claude-3-haiku-20240307": "anthropic.claude-3-haiku-20240307-v1:0", "claude-3-5-sonnet-20240620": "anthropic.claude-3-5-sonnet-20240620-v1:0", "claude-3-5-sonnet-20241022": "anthropic.claude-3-5-sonnet-20241022-v2:0", "claude-3-5-haiku-20241022": "anthropic.claude-3-5-haiku-20241022-v1:0", "claude-3-7-sonnet-20250219": "anthropic.claude-3-7-sonnet-20250219-v1:0", "claude-sonnet-4-20250514": "anthropic.claude-sonnet-4-20250514-v1:0", "claude-opus-4-20250514": "anthropic.claude-opus-4-20250514-v1:0", "claude-opus-4-1-20250805": "anthropic.claude-opus-4-1-20250805-v1:0", "claude-sonnet-4-5-20250929": "anthropic.claude-sonnet-4-5-20250929-v1:0", "claude-sonnet-4-6": "anthropic.claude-sonnet-4-6", "claude-haiku-4-5-20251001": "anthropic.claude-haiku-4-5-20251001-v1:0", "claude-opus-4-5-20251101": "anthropic.claude-opus-4-5-20251101-v1:0", "claude-opus-4-6": "anthropic.claude-opus-4-6-v1", // Nova models "nova-micro-v1:0": "amazon.nova-micro-v1:0", "nova-lite-v1:0": "amazon.nova-lite-v1:0", "nova-pro-v1:0": "amazon.nova-pro-v1:0", "nova-premier-v1:0": "amazon.nova-premier-v1:0", "nova-canvas-v1:0": "amazon.nova-canvas-v1:0", "nova-reel-v1:0": "amazon.nova-reel-v1:0", "nova-reel-v1:1": "amazon.nova-reel-v1:1", "nova-sonic-v1:0": "amazon.nova-sonic-v1:0", } var awsModelCanCrossRegionMap = map[string]map[string]bool{ "anthropic.claude-3-sonnet-20240229-v1:0": { "us": true, "eu": true, "ap": true, }, "anthropic.claude-3-opus-20240229-v1:0": { "us": true, }, "anthropic.claude-3-haiku-20240307-v1:0": { "us": true, "eu": true, "ap": true, }, "anthropic.claude-3-5-sonnet-20240620-v1:0": { "us": true, "eu": true, "ap": true, }, "anthropic.claude-3-5-sonnet-20241022-v2:0": { "us": true, "ap": true, }, "anthropic.claude-3-5-haiku-20241022-v1:0": { "us": true, }, "anthropic.claude-3-7-sonnet-20250219-v1:0": { "us": true, "ap": true, "eu": true, }, "anthropic.claude-sonnet-4-20250514-v1:0": { "us": true, "ap": true, "eu": true, }, "anthropic.claude-opus-4-20250514-v1:0": { "us": true, }, "anthropic.claude-opus-4-1-20250805-v1:0": { "us": true, }, "anthropic.claude-sonnet-4-5-20250929-v1:0": { "us": true, "ap": true, "eu": true, }, "anthropic.claude-sonnet-4-6": { "us": true, "ap": true, "eu": true, }, "anthropic.claude-opus-4-5-20251101-v1:0": { "us": true, "ap": true, "eu": true, }, "anthropic.claude-opus-4-6-v1": { "us": true, "ap": true, "eu": true, }, "anthropic.claude-haiku-4-5-20251001-v1:0": { "us": true, "ap": true, "eu": true, }, // Nova models - all support three major regions "amazon.nova-micro-v1:0": { "us": true, "eu": true, "apac": true, }, "amazon.nova-lite-v1:0": { "us": true, "eu": true, "apac": true, }, "amazon.nova-pro-v1:0": { "us": true, "eu": true, "apac": true, }, "amazon.nova-premier-v1:0": { "us": true, }, "amazon.nova-canvas-v1:0": { "us": true, "eu": true, "apac": true, }, "amazon.nova-reel-v1:0": { "us": true, "eu": true, "apac": true, }, "amazon.nova-reel-v1:1": { "us": true, }, "amazon.nova-sonic-v1:0": { "us": true, "eu": true, "apac": true, }, } var awsRegionCrossModelPrefixMap = map[string]string{ "us": "us", "eu": "eu", "ap": "apac", } var ChannelName = "aws" // 判断是否为Nova模型 func isNovaModel(modelId string) bool { return strings.Contains(modelId, "nova-") }