Merge pull request #159 from APIParkLab/feature/ai-balance

add get simple ai provider api
This commit is contained in:
Dot.L
2024-12-25 12:01:03 +08:00
committed by GitHub
7 changed files with 29 additions and 2 deletions
+1
View File
@@ -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
+4
View File
@@ -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)
}
+2 -2
View File
@@ -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"
)
+7
View File
@@ -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"`
+13
View File
@@ -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)
+1
View File
@@ -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
+1
View File
@@ -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),