mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-18 17:46:37 +08:00
- Refactor constant definitions and organization - Clean up package level variables and functions - Introduce new `relaymode` and `apitype` packages for constant definitions - Refactor and simplify code in several packages including `openai`, `relay/channel/baidu`, `relay/util`, `relay/controller`, `relay/channeltype` - Add helper functions in `relay/channeltype` package to convert channel type constants to corresponding API type constants - Remove deprecated functions such as `ResponseText2Usage` from `relay/channel/openai/helper.go` - Modify code in `relay/util/validation.go` and related files to use new `validator.ValidateTextRequest` function - Rename `util` package to `relaymode` and update related imports in several packages
63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package monitor
|
|
|
|
import (
|
|
"github.com/songquanpeng/one-api/common/config"
|
|
"github.com/songquanpeng/one-api/relay/model"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
func ShouldDisableChannel(err *model.Error, statusCode int) bool {
|
|
if !config.AutomaticDisableChannelEnabled {
|
|
return false
|
|
}
|
|
if err == nil {
|
|
return false
|
|
}
|
|
if statusCode == http.StatusUnauthorized {
|
|
return true
|
|
}
|
|
switch err.Type {
|
|
case "insufficient_quota":
|
|
return true
|
|
// https://docs.anthropic.com/claude/reference/errors
|
|
case "authentication_error":
|
|
return true
|
|
case "permission_error":
|
|
return true
|
|
case "forbidden":
|
|
return true
|
|
}
|
|
if err.Code == "invalid_api_key" || err.Code == "account_deactivated" {
|
|
return true
|
|
}
|
|
if strings.HasPrefix(err.Message, "Your credit balance is too low") { // anthropic
|
|
return true
|
|
} else if strings.HasPrefix(err.Message, "This organization has been disabled.") {
|
|
return true
|
|
}
|
|
//if strings.Contains(err.Message, "quota") {
|
|
// return true
|
|
//}
|
|
if strings.Contains(err.Message, "credit") {
|
|
return true
|
|
}
|
|
if strings.Contains(err.Message, "balance") {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func ShouldEnableChannel(err error, openAIErr *model.Error) bool {
|
|
if !config.AutomaticEnableChannelEnabled {
|
|
return false
|
|
}
|
|
if err != nil {
|
|
return false
|
|
}
|
|
if openAIErr != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|