From 7d3d9605cb67ab0603094e049abc9b88b2c4f917 Mon Sep 17 00:00:00 2001 From: sunanzhi Date: Fri, 7 Mar 2025 11:38:14 +0800 Subject: [PATCH 1/3] fix: fix null pointer in unconfigured provider fetch, add model name to list --- module/ai/dto/output.go | 1 + module/ai/iml.go | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/module/ai/dto/output.go b/module/ai/dto/output.go index 263b09ad..9f14778a 100644 --- a/module/ai/dto/output.go +++ b/module/ai/dto/output.go @@ -83,6 +83,7 @@ type BackupProvider struct { type LLMItem struct { Id string `json:"id"` + Name string `json:"name"` Logo string `json:"logo"` Config string `json:"config"` AccessConfiguration string `json:"access_configuration"` diff --git a/module/ai/iml.go b/module/ai/iml.go index 658cf0f0..eb79576e 100644 --- a/module/ai/iml.go +++ b/module/ai/iml.go @@ -411,12 +411,16 @@ func (i *imlProviderModule) UnConfiguredProviders(ctx context.Context) ([]*ai_dt // 已配置,跳过 continue } + defaultLLMID := "" defaultLLM, _ := v.DefaultModel(model_runtime.ModelTypeLLM) + if defaultLLM != nil { + defaultLLMID = defaultLLM.ID() + } item := &ai_dto.ProviderItem{ Id: v.ID(), Name: v.Name(), Logo: v.Logo(), - DefaultLLM: defaultLLM.ID(), + DefaultLLM: defaultLLMID, Sort: v.Sort(), } items = append(items, item) @@ -508,6 +512,7 @@ func (i *imlProviderModule) LLMs(ctx context.Context, driver string) ([]*ai_dto. for _, v := range llms { items = append(items, &ai_dto.LLMItem{ Id: v.ID(), + Name: v.Name(), Logo: v.Logo(), Config: v.DefaultConfig(), AccessConfiguration: v.AccessConfiguration(), From d979eb7c2a48a69796f5a4610f737821069ffd8c Mon Sep 17 00:00:00 2001 From: sunanzhi Date: Fri, 7 Mar 2025 14:07:53 +0800 Subject: [PATCH 2/3] fix: resolve package error when LLMs list is empty --- module/ai/iml.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/module/ai/iml.go b/module/ai/iml.go index eb79576e..4fd70f10 100644 --- a/module/ai/iml.go +++ b/module/ai/iml.go @@ -503,10 +503,7 @@ func (i *imlProviderModule) LLMs(ctx context.Context, driver string) ([]*ai_dto. return nil, nil, fmt.Errorf("ai provider not found") } - llms, has := p.ModelsByType(model_runtime.ModelTypeLLM) - if !has { - return nil, nil, fmt.Errorf("ai provider not found") - } + llms, _ := p.ModelsByType(model_runtime.ModelTypeLLM) modelApiCountMap, _ := i.aiAPIService.CountMapByModel(ctx, "", map[string]interface{}{"provider": driver}) items := make([]*ai_dto.LLMItem, 0, len(llms)) for _, v := range llms { @@ -530,14 +527,15 @@ func (i *imlProviderModule) LLMs(ctx context.Context, driver string) ([]*ai_dto. if !errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil, err } - defaultLLM, has := p.DefaultModel(model_runtime.ModelTypeLLM) - if !has { - return nil, nil, fmt.Errorf("ai provider default llm not found") + defaultLLMID := "" + defaultLLM, _ := p.DefaultModel(model_runtime.ModelTypeLLM) + if defaultLLM != nil { + defaultLLMID = defaultLLM.ID() } return items, &ai_dto.ProviderItem{ Id: p.ID(), Name: p.Name(), - DefaultLLM: defaultLLM.ID(), + DefaultLLM: defaultLLMID, Logo: p.Logo(), }, nil } From 80b388bfc6035cb0416f845e06baea4714c51221 Mon Sep 17 00:00:00 2001 From: sunanzhi Date: Fri, 7 Mar 2025 14:33:23 +0800 Subject: [PATCH 3/3] fix: resolve error caused by fetching empty vendor config model --- module/ai/iml.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module/ai/iml.go b/module/ai/iml.go index 4fd70f10..1c455dd8 100644 --- a/module/ai/iml.go +++ b/module/ai/iml.go @@ -474,10 +474,9 @@ func (i *imlProviderModule) Provider(ctx context.Context, id string) (*ai_dto.Pr defaultLLM, has := p.GetModel(info.DefaultLLM) if !has { model, has := p.DefaultModel(model_runtime.ModelTypeLLM) - if !has { + if !has || model == nil { defaultLLM, _ = model_runtime.NewCustomizeModel("", "", "", "", "") } - defaultLLM = model } return &ai_dto.Provider{