| | package controller |
| |
|
| | import ( |
| | "errors" |
| | "fmt" |
| | "time" |
| |
|
| | "github.com/QuantumNous/new-api/common" |
| | "github.com/QuantumNous/new-api/constant" |
| | "github.com/QuantumNous/new-api/middleware" |
| | "github.com/QuantumNous/new-api/model" |
| | "github.com/QuantumNous/new-api/types" |
| |
|
| | "github.com/gin-gonic/gin" |
| | ) |
| |
|
| | func Playground(c *gin.Context) { |
| | var newAPIError *types.NewAPIError |
| |
|
| | defer func() { |
| | if newAPIError != nil { |
| | c.JSON(newAPIError.StatusCode, gin.H{ |
| | "error": newAPIError.ToOpenAIError(), |
| | }) |
| | } |
| | }() |
| |
|
| | useAccessToken := c.GetBool("use_access_token") |
| | if useAccessToken { |
| | newAPIError = types.NewError(errors.New("暂不支持使用 access token"), types.ErrorCodeAccessDenied, types.ErrOptionWithSkipRetry()) |
| | return |
| | } |
| |
|
| | group := common.GetContextKeyString(c, constant.ContextKeyUsingGroup) |
| | modelName := c.GetString("original_model") |
| |
|
| | userId := c.GetInt("id") |
| |
|
| | |
| | userCache, err := model.GetUserCache(userId) |
| | if err != nil { |
| | newAPIError = types.NewError(err, types.ErrorCodeQueryDataError, types.ErrOptionWithSkipRetry()) |
| | return |
| | } |
| | userCache.WriteContext(c) |
| |
|
| | tempToken := &model.Token{ |
| | UserId: userId, |
| | Name: fmt.Sprintf("playground-%s", group), |
| | Group: group, |
| | } |
| | _ = middleware.SetupContextForToken(c, tempToken) |
| | _, newAPIError = getChannel(c, group, modelName, 0) |
| | if newAPIError != nil { |
| | return |
| | } |
| | |
| | common.SetContextKey(c, constant.ContextKeyRequestStartTime, time.Now()) |
| |
|
| | Relay(c, types.RelayFormatOpenAI) |
| | } |
| |
|