fix:操练场接口报错
This commit is contained in:
1 parent
0bfa7abfd0
commit
aca99eae68
1 file changed
+23
-1
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -17,6 +18,7 @@ import (
|
||||
"github.com/qianfree/team-api/internal/logic/common"
|
||||
"github.com/qianfree/team-api/internal/logic/relay"
|
||||
relaycommon "github.com/qianfree/team-api/relay/common"
|
||||
"github.com/qianfree/team-api/relay/constant"
|
||||
"github.com/qianfree/team-api/relay/handler"
|
||||
)
|
||||
|
||||
@@ -68,7 +70,7 @@ func buildPlaygroundRelayContext(ctx context.Context, key *playgroundApiKey, rec
|
||||
func callRelayAndParseUsage(relayFunc func() (*relaycommon.Usage, *handler.BillingResult, error)) (promptTokens, completionTokens, totalTokens int, err error) {
|
||||
usage, _, relayErr := relayFunc()
|
||||
if relayErr != nil {
|
||||
return 0, 0, 0, relayErr
|
||||
return 0, 0, 0, convertRelayError(relayErr)
|
||||
}
|
||||
if usage != nil {
|
||||
promptTokens = usage.PromptTokens
|
||||
@@ -78,6 +80,26 @@ func callRelayAndParseUsage(relayFunc func() (*relaycommon.Usage, *handler.Billi
|
||||
return
|
||||
}
|
||||
|
||||
// convertRelayError 将 relay 层的 RelayError 转换为 GoFrame gerror,使响应中间件能正确处理
|
||||
func convertRelayError(err error) error {
|
||||
var relayErr *constant.RelayError
|
||||
if !errors.As(err, &relayErr) {
|
||||
return err
|
||||
}
|
||||
switch relayErr.StatusCode {
|
||||
case 402:
|
||||
return common.NewBusinessError(10001, "余额不足,请充值后重试")
|
||||
case 429:
|
||||
return common.NewBusinessError(10014, "请求过于频繁,请稍后重试")
|
||||
case 401:
|
||||
return common.NewBadRequestError("API Key 认证失败")
|
||||
case 503:
|
||||
return common.NewBusinessError(10003, "当前无可用渠道,请稍后重试")
|
||||
default:
|
||||
return common.NewBadRequestError(relayErr.Message)
|
||||
}
|
||||
}
|
||||
|
||||
func getRequestID(ctx context.Context) string {
|
||||
if v := ctx.Value("requestId"); v != nil {
|
||||
return v.(string)
|
||||
|
||||
Reference in new issue
Block a user