mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-21 23:21:04 +08:00
refactor[go]: replace DSModel with ModelListItem (#17038)
This commit is contained in:
@@ -691,10 +691,10 @@ func (c *CoHereModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, err
|
||||
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
||||
}
|
||||
|
||||
models := make([]DSModel, 0, len(result.Models))
|
||||
models := make([]ModelListItem, 0, len(result.Models))
|
||||
for _, model := range result.Models {
|
||||
if model.ModelName != "" {
|
||||
models = append(models, DSModel{
|
||||
models = append(models, ModelListItem{
|
||||
ID: model.ModelName,
|
||||
OwnedBy: c.Name(),
|
||||
})
|
||||
|
||||
@@ -862,10 +862,10 @@ func (d *DeepInfraModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse,
|
||||
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
||||
}
|
||||
|
||||
models := make([]DSModel, 0, len(result))
|
||||
models := make([]ModelListItem, 0, len(result))
|
||||
for _, model := range result {
|
||||
if model.ModelName != "" {
|
||||
models = append(models, DSModel{
|
||||
models = append(models, ModelListItem{
|
||||
ID: model.ModelName,
|
||||
OwnedBy: d.Name(),
|
||||
})
|
||||
|
||||
@@ -492,12 +492,6 @@ func (d *DeepSeekModel) Embed(modelName *string, texts []string, apiConfig *APIC
|
||||
return nil, fmt.Errorf("%s, no such method", d.Name())
|
||||
}
|
||||
|
||||
type DSModel struct {
|
||||
ID string `json:"id"`
|
||||
Object string `json:"object"`
|
||||
OwnedBy string `json:"owned_by"`
|
||||
}
|
||||
|
||||
func (d *DeepSeekModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, error) {
|
||||
if err := d.baseModel.APIConfigCheck(apiConfig); err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -391,7 +391,7 @@ func (f *FishAudioModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse,
|
||||
if name == "" {
|
||||
continue
|
||||
}
|
||||
modelList.Models = append(modelList.Models, DSModel{ID: name})
|
||||
modelList.Models = append(modelList.Models, ModelListItem{ID: name})
|
||||
}
|
||||
|
||||
return ParseListModel(modelList), nil
|
||||
|
||||
@@ -97,12 +97,12 @@ func TestGiteeListModelsMapsAllDeepSeekAliasesToModelMetadata(t *testing.T) {
|
||||
|
||||
resp := ModelList{
|
||||
Object: "list",
|
||||
Models: make([]DSModel, 0, len(aliases)+1),
|
||||
Models: make([]ModelListItem, 0, len(aliases)+1),
|
||||
}
|
||||
for _, alias := range aliases {
|
||||
resp.Models = append(resp.Models, DSModel{ID: alias})
|
||||
resp.Models = append(resp.Models, ModelListItem{ID: alias})
|
||||
}
|
||||
resp.Models = append(resp.Models, DSModel{ID: "unknown-model"})
|
||||
resp.Models = append(resp.Models, ModelListItem{ID: "unknown-model"})
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
||||
|
||||
@@ -26,12 +26,12 @@ import (
|
||||
)
|
||||
|
||||
type googleModelPage struct {
|
||||
items []DSModel
|
||||
items []ModelListItem
|
||||
nextPageToken string
|
||||
}
|
||||
|
||||
func collectGoogleModelNames(ctx context.Context, listPage func(context.Context, string) (googleModelPage, error)) ([]ListModelResponse, error) {
|
||||
var models []DSModel
|
||||
var models []ModelListItem
|
||||
pageToken := ""
|
||||
|
||||
for {
|
||||
@@ -60,14 +60,14 @@ var googleListModels = func(ctx context.Context, config *genai.ClientConfig) ([]
|
||||
return googleModelPage{}, err
|
||||
}
|
||||
|
||||
var modelNames []DSModel
|
||||
var modelNames []ModelListItem
|
||||
for _, m := range models.Items {
|
||||
modelName := strings.TrimSpace(m.DisplayName)
|
||||
if modelName == "" {
|
||||
modelName = strings.TrimSpace(m.Name)
|
||||
}
|
||||
if modelName != "" {
|
||||
modelNames = append(modelNames, DSModel{
|
||||
modelNames = append(modelNames, ModelListItem{
|
||||
ID: modelName,
|
||||
OwnedBy: "Google",
|
||||
})
|
||||
|
||||
@@ -329,8 +329,8 @@ func TestGoogleModelListModelsPassesBaseURL(t *testing.T) {
|
||||
|
||||
func TestCollectGoogleModelNamesPaginates(t *testing.T) {
|
||||
pages := []googleModelPage{
|
||||
{items: []DSModel{{ID: "Gemini 2.5 Flash", OwnedBy: "Google"}}, nextPageToken: "page-2"},
|
||||
{items: []DSModel{{ID: "Gemini 2.5 Pro", OwnedBy: "Google"}}, nextPageToken: ""},
|
||||
{items: []ModelListItem{{ID: "Gemini 2.5 Flash", OwnedBy: "Google"}}, nextPageToken: "page-2"},
|
||||
{items: []ModelListItem{{ID: "Gemini 2.5 Pro", OwnedBy: "Google"}}, nextPageToken: ""},
|
||||
}
|
||||
var pageTokens []string
|
||||
|
||||
@@ -374,7 +374,7 @@ func TestCollectGoogleModelNamesReturnsPageError(t *testing.T) {
|
||||
_, err := collectGoogleModelNames(context.Background(), func(context.Context, string) (googleModelPage, error) {
|
||||
calls++
|
||||
if calls == 1 {
|
||||
return googleModelPage{items: []DSModel{{ID: "Gemini 2.5 Flash", OwnedBy: "Google"}}, nextPageToken: "page-2"}, nil
|
||||
return googleModelPage{items: []ModelListItem{{ID: "Gemini 2.5 Flash", OwnedBy: "Google"}}, nextPageToken: "page-2"}, nil
|
||||
}
|
||||
return googleModelPage{}, pageErr
|
||||
})
|
||||
|
||||
@@ -301,7 +301,7 @@ type gpustackModelInfo struct {
|
||||
}
|
||||
|
||||
type gpustackModelsResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
|
||||
func (g *GPUStackModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, error) {
|
||||
|
||||
@@ -288,8 +288,8 @@ type groqModelInfo struct {
|
||||
}
|
||||
|
||||
type groqListModelsResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Error interface{} `json:"error"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
Error interface{} `json:"error"`
|
||||
}
|
||||
|
||||
func (g *GroqModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, error) {
|
||||
|
||||
@@ -646,7 +646,7 @@ func (h *HuaweiCloudModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse
|
||||
}
|
||||
|
||||
var parsed struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
if err = json.Unmarshal(body, &parsed); err != nil {
|
||||
return nil, fmt.Errorf("failed to decode response: %w", err)
|
||||
|
||||
@@ -554,7 +554,7 @@ func (j *JieKouAIModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, e
|
||||
}
|
||||
|
||||
var result struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
if err = json.Unmarshal(body, &result); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse response: %w", err)
|
||||
|
||||
@@ -359,10 +359,10 @@ func (j *JinaModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, error
|
||||
}
|
||||
|
||||
// convert result["data"] to []map[string]interface{}
|
||||
models := make([]DSModel, 0, len(result["data"].([]interface{})))
|
||||
models := make([]ModelListItem, 0, len(result["data"].([]interface{})))
|
||||
for _, model := range result["data"].([]interface{}) {
|
||||
modelName := model.(map[string]interface{})["name"].(string)
|
||||
models = append(models, DSModel{
|
||||
models = append(models, ModelListItem{
|
||||
ID: modelName,
|
||||
OwnedBy: "",
|
||||
})
|
||||
|
||||
@@ -303,8 +303,8 @@ type longCatModelInfo struct {
|
||||
}
|
||||
|
||||
type longCatListModelsResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Error interface{} `json:"error"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
Error interface{} `json:"error"`
|
||||
}
|
||||
|
||||
const longCatMaxListModelsResponseBytes = 1 << 20
|
||||
|
||||
@@ -51,7 +51,7 @@ type modelscopeChatResponse struct {
|
||||
}
|
||||
|
||||
type modelscopeModelListResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
|
||||
// NewModelScopeModel creates a new ModelScope model instance.
|
||||
|
||||
@@ -493,7 +493,7 @@ type n1nModelCatalogItem struct {
|
||||
}
|
||||
|
||||
type n1nModelCatalogResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
|
||||
// ListModels returns the live n1n.ai model catalog
|
||||
|
||||
@@ -520,7 +520,7 @@ func (o *OllamaModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, err
|
||||
if name == "" {
|
||||
continue
|
||||
}
|
||||
modelList.Models = append(modelList.Models, DSModel{ID: name})
|
||||
modelList.Models = append(modelList.Models, ModelListItem{ID: name})
|
||||
}
|
||||
|
||||
return ParseListModel(modelList), nil
|
||||
|
||||
@@ -281,7 +281,7 @@ type perplexityModelInfo struct {
|
||||
}
|
||||
|
||||
type perplexityModelListResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
|
||||
func (p *PerplexityModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, error) {
|
||||
@@ -326,7 +326,7 @@ func (p *PerplexityModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse,
|
||||
return ParseListModel(ModelList{Models: wrapped.Data}), nil
|
||||
}
|
||||
|
||||
var bare []DSModel
|
||||
var bare []ModelListItem
|
||||
if err = json.Unmarshal(body, &bare); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse response: %w", err)
|
||||
}
|
||||
|
||||
@@ -275,8 +275,8 @@ type ppioModelInfo struct {
|
||||
}
|
||||
|
||||
type ppioListModelsResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Error interface{} `json:"error"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
Error interface{} `json:"error"`
|
||||
}
|
||||
|
||||
func (p *PPIOModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, error) {
|
||||
|
||||
@@ -559,7 +559,7 @@ func (r *ReplicateModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse,
|
||||
if modelName == "" {
|
||||
continue
|
||||
}
|
||||
modelList.Models = append(modelList.Models, DSModel{
|
||||
modelList.Models = append(modelList.Models, ModelListItem{
|
||||
ID: modelName,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -325,7 +325,7 @@ func (t *TogetherAIModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse,
|
||||
return nil, fmt.Errorf("API request failed with status %d: %s", resp.StatusCode, string(body))
|
||||
}
|
||||
|
||||
var result []DSModel
|
||||
var result []ModelListItem
|
||||
if err = json.Unmarshal(body, &result); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse response: %w", err)
|
||||
}
|
||||
|
||||
@@ -473,7 +473,7 @@ func (t *TokenHubModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, e
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid models list format")
|
||||
}
|
||||
modelList := ModelList{Models: make([]DSModel, 0, len(rawItems))}
|
||||
modelList := ModelList{Models: make([]ModelListItem, 0, len(rawItems))}
|
||||
for _, raw := range rawItems {
|
||||
item, ok := raw.(map[string]interface{})
|
||||
if !ok {
|
||||
@@ -484,7 +484,7 @@ func (t *TokenHubModel) ListModels(apiConfig *APIConfig) ([]ListModelResponse, e
|
||||
continue
|
||||
}
|
||||
ownedBy, _ := item["owned_by"].(string)
|
||||
modelList.Models = append(modelList.Models, DSModel{ID: id, OwnedBy: ownedBy})
|
||||
modelList.Models = append(modelList.Models, ModelListItem{ID: id, OwnedBy: ownedBy})
|
||||
}
|
||||
|
||||
return ParseListModel(modelList), nil
|
||||
|
||||
@@ -130,9 +130,15 @@ type TaskResponse struct {
|
||||
Segments []TaskSegment `json:"segments"`
|
||||
}
|
||||
|
||||
type ModelListItem struct {
|
||||
ID string `json:"id"`
|
||||
Object string `json:"object"`
|
||||
OwnedBy string `json:"owned_by"`
|
||||
}
|
||||
|
||||
type ModelList struct {
|
||||
Object string `json:"object"`
|
||||
Models []DSModel `json:"data"`
|
||||
Object string `json:"object"`
|
||||
Models []ModelListItem `json:"data"`
|
||||
}
|
||||
|
||||
// URLSuffix represents the URL suffixes for different API endpoints
|
||||
|
||||
@@ -53,7 +53,7 @@ type xinferenceChatResponse struct {
|
||||
}
|
||||
|
||||
type xinferenceModelListResponse struct {
|
||||
Data []DSModel `json:"data"`
|
||||
Data []ModelListItem `json:"data"`
|
||||
}
|
||||
|
||||
// NewXinferenceModel creates a new Xinference model instance.
|
||||
|
||||
Reference in New Issue
Block a user