| 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) |
| } |
|
|