* Update disabled channel * Update manage.go * Update manage.go * chore: add missing space --------- Co-authored-by: JustSong <songquanpeng@foxmail.com> Co-authored-by: JustSong <39998050+songquanpeng@users.noreply.github.com>
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package monitor
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/songquanpeng/one-api/common/config"
|
|
"github.com/songquanpeng/one-api/relay/model"
|
|
)
|
|
|
|
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", "authentication_error", "permission_error", "forbidden":
|
|
return true
|
|
}
|
|
if err.Code == "invalid_api_key" || err.Code == "account_deactivated" {
|
|
return true
|
|
}
|
|
|
|
lowerMessage := strings.ToLower(err.Message)
|
|
if strings.Contains(lowerMessage, "your access was terminated") ||
|
|
strings.Contains(lowerMessage, "violation of our policies") ||
|
|
strings.Contains(lowerMessage, "your credit balance is too low") ||
|
|
strings.Contains(lowerMessage, "organization has been disabled") ||
|
|
strings.Contains(lowerMessage, "credit") ||
|
|
strings.Contains(lowerMessage, "balance") ||
|
|
strings.Contains(lowerMessage, "permission denied") ||
|
|
strings.Contains(lowerMessage, "organization has been restricted") || // groq
|
|
strings.Contains(lowerMessage, "已欠费") {
|
|
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
|
|
}
|