From 4b1e1a22dbff69910398ff4cc103a2ec33e52f7f Mon Sep 17 00:00:00 2001 From: Liujian <824010343@qq.com> Date: Wed, 25 Dec 2024 11:59:34 +0800 Subject: [PATCH] add get simple ai provider api --- controller/ai/controller.go | 1 + controller/ai/iml.go | 4 ++++ module/ai-key/dto/enum.go | 4 ++-- module/ai/dto/output.go | 7 +++++++ module/ai/iml.go | 13 +++++++++++++ module/ai/module.go | 1 + plugins/core/ai.go | 1 + 7 files changed, 29 insertions(+), 2 deletions(-) diff --git a/controller/ai/controller.go b/controller/ai/controller.go index 9e8c48e2..5c9fed77 100644 --- a/controller/ai/controller.go +++ b/controller/ai/controller.go @@ -15,6 +15,7 @@ type IProviderController interface { UnConfiguredProviders(ctx *gin.Context) ([]*ai_dto.ProviderItem, error) SimpleProviders(ctx *gin.Context) ([]*ai_dto.SimpleProviderItem, error) Provider(ctx *gin.Context, id string) (*ai_dto.Provider, error) + SimpleProvider(ctx *gin.Context, id string) (*ai_dto.SimpleProvider, error) LLMs(ctx *gin.Context, driver string) ([]*ai_dto.LLMItem, *ai_dto.ProviderItem, error) Enable(ctx *gin.Context, id string) error Disable(ctx *gin.Context, id string) error diff --git a/controller/ai/iml.go b/controller/ai/iml.go index 0840eeb1..dd9200e0 100644 --- a/controller/ai/iml.go +++ b/controller/ai/iml.go @@ -37,6 +37,10 @@ func (i *imlProviderController) Provider(ctx *gin.Context, id string) (*ai_dto.P return i.module.Provider(ctx, id) } +func (i *imlProviderController) SimpleProvider(ctx *gin.Context, id string) (*ai_dto.SimpleProvider, error) { + return i.module.SimpleProvider(ctx, id) +} + func (i *imlProviderController) LLMs(ctx *gin.Context, driver string) ([]*ai_dto.LLMItem, *ai_dto.ProviderItem, error) { return i.module.LLMs(ctx, driver) } diff --git a/module/ai-key/dto/enum.go b/module/ai-key/dto/enum.go index f5a224f0..29a26280 100644 --- a/module/ai-key/dto/enum.go +++ b/module/ai-key/dto/enum.go @@ -2,9 +2,9 @@ package ai_key_dto var ( KeyNormal KeyStatus = "normal" - KeyExceed KeyStatus = "exceed" + KeyExceed KeyStatus = "exceeded" KeyExpired KeyStatus = "expired" - KeyDisable KeyStatus = "disable" + KeyDisable KeyStatus = "disabled" KeyError KeyStatus = "error" ) diff --git a/module/ai/dto/output.go b/module/ai/dto/output.go index 31272d8e..137a4b61 100644 --- a/module/ai/dto/output.go +++ b/module/ai/dto/output.go @@ -4,6 +4,13 @@ import ( "github.com/eolinker/go-common/auto" ) +type SimpleProvider struct { + Id string `json:"id"` + Name string `json:"name"` + Logo string `json:"logo"` + GetAPIKeyUrl string `json:"get_apikey_url"` +} + type Provider struct { Id string `json:"id"` Name string `json:"name"` diff --git a/module/ai/iml.go b/module/ai/iml.go index 7b662f61..ac336a77 100644 --- a/module/ai/iml.go +++ b/module/ai/iml.go @@ -60,6 +60,19 @@ type imlProviderModule struct { transaction store.ITransaction `autowired:""` } +func (i *imlProviderModule) SimpleProvider(ctx context.Context, id string) (*ai_dto.SimpleProvider, error) { + p, has := model_runtime.GetProvider(id) + if !has { + return nil, fmt.Errorf("ai provider not found") + } + return &ai_dto.SimpleProvider{ + Id: p.ID(), + Name: p.Name(), + Logo: p.Logo(), + GetAPIKeyUrl: p.HelpUrl(), + }, nil +} + func (i *imlProviderModule) Sort(ctx context.Context, input *ai_dto.Sort) error { return i.transaction.Transaction(ctx, func(txCtx context.Context) error { list, err := i.providerService.List(ctx) diff --git a/module/ai/module.go b/module/ai/module.go index 0241484b..176c5c38 100644 --- a/module/ai/module.go +++ b/module/ai/module.go @@ -16,6 +16,7 @@ type IProviderModule interface { UnConfiguredProviders(ctx context.Context) ([]*ai_dto.ProviderItem, error) SimpleProviders(ctx context.Context) ([]*ai_dto.SimpleProviderItem, error) Provider(ctx context.Context, id string) (*ai_dto.Provider, error) + SimpleProvider(ctx context.Context, id string) (*ai_dto.SimpleProvider, error) LLMs(ctx context.Context, driver string) ([]*ai_dto.LLMItem, *ai_dto.ProviderItem, error) UpdateProviderStatus(ctx context.Context, id string, enable bool) error UpdateProviderConfig(ctx context.Context, id string, input *ai_dto.UpdateConfig) error diff --git a/plugins/core/ai.go b/plugins/core/ai.go index 39fde966..cc45281b 100644 --- a/plugins/core/ai.go +++ b/plugins/core/ai.go @@ -14,6 +14,7 @@ func (p *plugin) aiAPIs() []pm3.Api { pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/providers/configured", []string{"context"}, []string{"providers", "backup"}, p.aiProviderController.ConfiguredProviders, access.SystemSettingsAiProviderView), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/ai/providers", []string{"context"}, []string{"providers"}, p.aiProviderController.SimpleProviders), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/config", []string{"context", "query:provider"}, []string{"provider"}, p.aiProviderController.Provider, access.SystemSettingsAiProviderView), + pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/ai/provider", []string{"context", "query:provider"}, []string{"provider"}, p.aiProviderController.SimpleProvider), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/llms", []string{"context", "query:provider"}, []string{"llms", "provider"}, p.aiProviderController.LLMs), pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/sort", []string{"context", "body"}, nil, p.aiProviderController.Sort), pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/config", []string{"context", "query:provider", "body"}, nil, p.aiProviderController.UpdateProviderConfig, access.SystemSettingsAiProviderManager),