mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-18 00:47:26 +00:00
Clamp request body size (including post-decompression) to avoid memory exhaustion caused by huge payloads/zip bombs, especially with large-context Claude requests. Add a configurable `MAX_REQUEST_BODY_MB` (default `32`) and document it. - Enforce max request body size after gzip/br decompression via `http.MaxBytesReader` - Add a secondary size guard in `common.GetRequestBody` and cache-safe handling - Return **413 Request Entity Too Large** on oversized bodies in relay entry - Avoid building large `TokenCountMeta.CombineText` when both token counting and sensitive check are disabled (use lightweight meta for pricing) - Update READMEs (CN/EN/FR/JA) with `MAX_REQUEST_BODY_MB` - Fix a handful of vet/formatting issues encountered during the change - `go test ./...` passes
141 lines
3.5 KiB
Go
141 lines
3.5 KiB
Go
package aws
|
|
|
|
import "strings"
|
|
|
|
var awsModelIDMap = map[string]string{
|
|
"claude-instant-1.2": "anthropic.claude-instant-v1",
|
|
"claude-2.0": "anthropic.claude-v2",
|
|
"claude-2.1": "anthropic.claude-v2:1",
|
|
"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-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",
|
|
// 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-opus-4-5-20251101-v1:0": {
|
|
"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-")
|
|
}
|