Skip to content

Commit

Permalink
修复/v1/models
Browse files Browse the repository at this point in the history
  • Loading branch information
kkkunny committed Nov 9, 2024
1 parent 7420f93 commit 1754716
Showing 1 changed file with 42 additions and 45 deletions.
87 changes: 42 additions & 45 deletions internal/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,57 +103,60 @@ type ModelInfo struct {
func (api *Api) ListModels(ctx context.Context) (resp []*ModelInfo, err error) {
httpResp, err := stlerr.ErrorWith(api.client.R().
SetContext(ctx).
SetSuccessResult(make(map[string]any)).
Get(fmt.Sprintf("%s/chat/models/__data.json?x-sveltekit-invalidated=10", api.domain)))
if err != nil {
return nil, err
} else if httpResp.GetStatusCode() != http.StatusOK {
return nil, stlerr.Errorf("http error: code=%d, status=%s", httpResp.GetStatusCode(), httpResp.String())
}

defer func() {
if panicErr := recover(); panicErr != nil {
err = stlerr.Errorf("parse resp error: err=%+v", panicErr)
rawStr := "[" + regexp.MustCompile(`}\s*{`).ReplaceAllString(httpResp.String(), "},{") + "]"
var rawResp []map[string]any
err = stlerr.ErrorWrap(json.Unmarshal([]byte(rawStr), &rawResp))
if err != nil {
return nil, err
}

for _, rawRespItem := range rawResp {
if rawRespItem["type"] != "data" {
continue
}
}()

rawResp := *httpResp.SuccessResult().(*map[string]any)
data := rawResp["nodes"].([]any)[0].(map[string]any)["data"].([]any)
data := rawRespItem["nodes"].([]any)[0].(map[string]any)["data"].([]any)
modelIndexObjList := data[int64(data[0].(map[string]any)["models"].(float64))].([]any)
models := stlslices.Map(modelIndexObjList, func(_ int, modelIndexObj any) *ModelInfo {
modelIdx := int64(modelIndexObj.(float64))
modelMetaInfo := data[modelIdx].(map[string]any)

indexMap := data[0].(map[string]any)
modelsIndex := int64(indexMap["models"].(float64))
modelIndexObjList := data[modelsIndex].([]any)
models := stlslices.Map(modelIndexObjList, func(_ int, modelIndexObj any) *ModelInfo {
modelIdx := int64(modelIndexObj.(float64))
modelMetaInfo := data[modelIdx].(map[string]any)

idIndex := int64(modelMetaInfo["id"].(float64))
nameIndex := int64(modelMetaInfo["name"].(float64))
descriptionIndex := int64(modelMetaInfo["description"].(float64))
parametersIndex := int64(modelMetaInfo["parameters"].(float64))
unlistedIndex := int64(modelMetaInfo["unlisted"].(float64))
idIndex := int64(modelMetaInfo["id"].(float64))
nameIndex := int64(modelMetaInfo["name"].(float64))
descriptionIndex := int64(modelMetaInfo["description"].(float64))
parametersIndex := int64(modelMetaInfo["parameters"].(float64))
unlistedIndex := int64(modelMetaInfo["unlisted"].(float64))

id := data[idIndex].(string)
name := data[nameIndex].(string)
unlisted := data[unlistedIndex].(bool)
var desc string
var maxNewTokens int64
if !unlisted {
desc = data[descriptionIndex].(string)
parameters := data[parametersIndex].(map[string]any)
max_new_tokensIndex := int64(parameters["max_new_tokens"].(float64))
maxNewTokens = int64(data[max_new_tokensIndex].(float64))
}
id := data[idIndex].(string)
name := data[nameIndex].(string)
unlisted := data[unlistedIndex].(bool)
var desc string
var maxNewTokens int64
if !unlisted {
desc = data[descriptionIndex].(string)
parameters := data[parametersIndex].(map[string]any)
maxNewTokensIndex := int64(parameters["max_new_tokens"].(float64))
maxNewTokens = int64(data[maxNewTokensIndex].(float64))
}

return &ModelInfo{
ID: id,
Name: name,
Desc: desc,
MaxNewTokens: maxNewTokens,
Active: !unlisted,
}
})
return models, nil
return &ModelInfo{
ID: id,
Name: name,
Desc: desc,
MaxNewTokens: maxNewTokens,
Active: !unlisted,
}
})
return models, nil
}
return nil, stlerr.Errorf("not found model data")
}

type CreateConversationRequest struct {
Expand Down Expand Up @@ -213,12 +216,6 @@ func (api *Api) ListConversations(ctx context.Context) (resp []*SimpleConversati
return nil, stlerr.Errorf("http error: code=%d, status=%s", httpResp.GetStatusCode(), httpResp.String())
}

defer func() {
if panicErr := recover(); panicErr != nil {
err = stlerr.Errorf("parse resp error: err=%+v", panicErr)
}
}()

rawStr := "[" + regexp.MustCompile(`}\s*{`).ReplaceAllString(httpResp.String(), "},{") + "]"
var rawResp []map[string]any
err = stlerr.ErrorWrap(json.Unmarshal([]byte(rawStr), &rawResp))
Expand Down

0 comments on commit 1754716

Please sign in to comment.