refactor[go]: replace DSModel with ModelListItem (#17038)

This commit is contained in:
Haruko386
2026-07-20 10:50:53 +08:00
committed by GitHub
parent a9db04ab23
commit 0f94e05ffa
23 changed files with 44 additions and 44 deletions

View File

@@ -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(),
})

View File

@@ -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(),
})

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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",
})

View File

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

View File

@@ -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) {

View File

@@ -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) {

View File

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

View File

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

View File

@@ -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: "",
})

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

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

View File

@@ -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) {

View File

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

View File

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

View File

@@ -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

View File

@@ -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

View File

@@ -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.