mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-17 17:16:38 +08:00
76 lines
2.5 KiB
Go
76 lines
2.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"context"
|
|
"slices"
|
|
"strings"
|
|
|
|
"github.com/songquanpeng/one-api/common/logger"
|
|
)
|
|
|
|
// CrossRegionInferences is a list of model IDs that support cross-region inference.
|
|
//
|
|
// https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html
|
|
//
|
|
// document.querySelectorAll('pre.programlisting code').forEach((e) => {console.log(e.innerHTML)})
|
|
var CrossRegionInferences = []string{
|
|
"us.amazon.nova-lite-v1:0",
|
|
"us.amazon.nova-micro-v1:0",
|
|
"us.amazon.nova-pro-v1:0",
|
|
"us.anthropic.claude-3-5-haiku-20241022-v1:0",
|
|
"us.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
|
"us.anthropic.claude-3-5-sonnet-20241022-v2:0",
|
|
"us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
"us.anthropic.claude-3-haiku-20240307-v1:0",
|
|
"us.anthropic.claude-3-opus-20240229-v1:0",
|
|
"us.anthropic.claude-3-sonnet-20240229-v1:0",
|
|
"us.meta.llama3-1-405b-instruct-v1:0",
|
|
"us.meta.llama3-1-70b-instruct-v1:0",
|
|
"us.meta.llama3-1-8b-instruct-v1:0",
|
|
"us.meta.llama3-2-11b-instruct-v1:0",
|
|
"us.meta.llama3-2-1b-instruct-v1:0",
|
|
"us.meta.llama3-2-3b-instruct-v1:0",
|
|
"us.meta.llama3-2-90b-instruct-v1:0",
|
|
"us.meta.llama3-3-70b-instruct-v1:0",
|
|
"us-gov.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
|
"us-gov.anthropic.claude-3-haiku-20240307-v1:0",
|
|
"eu.amazon.nova-lite-v1:0",
|
|
"eu.amazon.nova-micro-v1:0",
|
|
"eu.amazon.nova-pro-v1:0",
|
|
"eu.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
|
"eu.anthropic.claude-3-haiku-20240307-v1:0",
|
|
"eu.anthropic.claude-3-sonnet-20240229-v1:0",
|
|
"eu.meta.llama3-2-1b-instruct-v1:0",
|
|
"eu.meta.llama3-2-3b-instruct-v1:0",
|
|
"apac.amazon.nova-lite-v1:0",
|
|
"apac.amazon.nova-micro-v1:0",
|
|
"apac.amazon.nova-pro-v1:0",
|
|
"apac.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
|
"apac.anthropic.claude-3-5-sonnet-20241022-v2:0",
|
|
"apac.anthropic.claude-3-haiku-20240307-v1:0",
|
|
"apac.anthropic.claude-3-sonnet-20240229-v1:0",
|
|
}
|
|
|
|
// ConvertModelID2CrossRegionProfile converts the model ID to a cross-region profile ID.
|
|
func ConvertModelID2CrossRegionProfile(model, region string) string {
|
|
var regionPrefix string
|
|
switch prefix := strings.Split(region, "-")[0]; prefix {
|
|
case "us", "eu":
|
|
regionPrefix = prefix
|
|
case "ap":
|
|
regionPrefix = "apac"
|
|
default:
|
|
// not supported, return original model
|
|
return model
|
|
}
|
|
|
|
newModelID := regionPrefix + "." + model
|
|
if slices.Contains(CrossRegionInferences, newModelID) {
|
|
logger.Debugf(context.TODO(), "convert model %s to cross-region profile %s", model, newModelID)
|
|
return newModelID
|
|
}
|
|
|
|
// not found, return original model
|
|
return model
|
|
}
|