mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-04 10:13:53 +08:00
feat: add API endpoint to retrieve model configuration template
Introduce a new interface for fetching model configuration templates to enhance model management flexibility.
This commit is contained in:
@@ -3,7 +3,6 @@ package model_runtime
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/APIParkLab/APIPark/ai-provider/model-runtime/entity"
|
||||
"github.com/APIParkLab/APIPark/common"
|
||||
"gopkg.in/yaml.v3"
|
||||
"strconv"
|
||||
)
|
||||
@@ -70,14 +69,14 @@ func NewCustomizeModel(id string, name string, logo string, accessConfiguration
|
||||
logo = GetCustomizeLogo()
|
||||
}
|
||||
// handle access_config & model_config
|
||||
config := common.MergeJSON(accessConfiguration, modelParameters)
|
||||
return &Model{
|
||||
id: id,
|
||||
name: name,
|
||||
logo: logo,
|
||||
source: "customize",
|
||||
accessConfiguration: accessConfiguration,
|
||||
IConfig: NewConfig(config, nil),
|
||||
modelParameters: modelParameters,
|
||||
IConfig: NewConfig(modelParameters, nil),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ type IProviderModelController interface {
|
||||
AddProviderModel(ctx *gin.Context, provider string, input *model_dto.Model) (*model_dto.SimpleModel, error)
|
||||
UpdateProviderModel(ctx *gin.Context, provider string, input *model_dto.EditModel) error
|
||||
DeleteProviderModel(ctx *gin.Context, provider string, id string) error
|
||||
GetModelParametersTemplate(ctx *gin.Context) ([]*model_dto.ModelParametersTemplate, error)
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
@@ -17,6 +17,10 @@ type imlProviderModelController struct {
|
||||
module ai_model.IProviderModelModule `autowired:""`
|
||||
}
|
||||
|
||||
func (i *imlProviderModelController) GetModelParametersTemplate(ctx *gin.Context) ([]*model_dto.ModelParametersTemplate, error) {
|
||||
return i.module.GetModelParametersTemplate(ctx)
|
||||
}
|
||||
|
||||
func (i *imlProviderModelController) UpdateProviderModel(ctx *gin.Context, provider string, input *model_dto.EditModel) error {
|
||||
if strings.TrimSpace(input.Name) == "" {
|
||||
return fmt.Errorf("name is empty")
|
||||
|
||||
@@ -4,3 +4,10 @@ type SimpleModel struct {
|
||||
Id string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type ModelParametersTemplate struct {
|
||||
Id string `json:"id"`
|
||||
ProviderName string `json:"provider_name"`
|
||||
ModelName string `json:"model_name"`
|
||||
ModelParameters string `json:"model_parameters"`
|
||||
}
|
||||
|
||||
+23
-3
@@ -8,6 +8,7 @@ import (
|
||||
ai_model "github.com/APIParkLab/APIPark/service/ai-model"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
"slices"
|
||||
|
||||
"github.com/eolinker/go-common/store"
|
||||
)
|
||||
@@ -22,7 +23,26 @@ type imlProviderModelModule struct {
|
||||
transaction store.ITransaction `autowired:""`
|
||||
}
|
||||
|
||||
func (i imlProviderModelModule) UpdateProviderModel(ctx *gin.Context, provider string, input *model_dto.EditModel) error {
|
||||
func (i *imlProviderModelModule) GetModelParametersTemplate(ctx *gin.Context) ([]*model_dto.ModelParametersTemplate, error) {
|
||||
templates := make([]*model_dto.ModelParametersTemplate, 0)
|
||||
providerNames := []string{"openai", "google", "anthropic", "deepseek", "tongyi"}
|
||||
providers := model_runtime.Providers()
|
||||
for _, provider := range providers {
|
||||
if slices.Contains(providerNames, provider.ID()) {
|
||||
defaultModel, _ := provider.DefaultModel(model_runtime.ModelTypeLLM)
|
||||
templates = append(templates, &model_dto.ModelParametersTemplate{
|
||||
Id: provider.ID(),
|
||||
ProviderName: provider.Name(),
|
||||
ModelName: defaultModel.Name(),
|
||||
ModelParameters: defaultModel.DefaultConfig(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return templates, nil
|
||||
}
|
||||
|
||||
func (i *imlProviderModelModule) UpdateProviderModel(ctx *gin.Context, provider string, input *model_dto.EditModel) error {
|
||||
p, has := model_runtime.GetProvider(provider)
|
||||
if !has {
|
||||
return fmt.Errorf("ai provider not found")
|
||||
@@ -57,7 +77,7 @@ func (i imlProviderModelModule) UpdateProviderModel(ctx *gin.Context, provider s
|
||||
return nil
|
||||
}
|
||||
|
||||
func (i imlProviderModelModule) DeleteProviderModel(ctx *gin.Context, provider string, id string) error {
|
||||
func (i *imlProviderModelModule) DeleteProviderModel(ctx *gin.Context, provider string, id string) error {
|
||||
// check provider exist
|
||||
providerInfo, err := i.providerService.Get(ctx, provider)
|
||||
if err != nil {
|
||||
@@ -73,7 +93,7 @@ func (i imlProviderModelModule) DeleteProviderModel(ctx *gin.Context, provider s
|
||||
return i.providerModelService.Delete(ctx, id)
|
||||
}
|
||||
|
||||
func (i imlProviderModelModule) AddProviderModel(ctx *gin.Context, provider string, input *model_dto.Model) (*model_dto.SimpleModel, error) {
|
||||
func (i *imlProviderModelModule) AddProviderModel(ctx *gin.Context, provider string, input *model_dto.Model) (*model_dto.SimpleModel, error) {
|
||||
p, has := model_runtime.GetProvider(provider)
|
||||
if !has {
|
||||
return nil, fmt.Errorf("ai provider not found")
|
||||
|
||||
@@ -12,6 +12,7 @@ type IProviderModelModule interface {
|
||||
AddProviderModel(ctx *gin.Context, provider string, input *model_dto.Model) (*model_dto.SimpleModel, error)
|
||||
UpdateProviderModel(ctx *gin.Context, provider string, input *model_dto.EditModel) error
|
||||
DeleteProviderModel(ctx *gin.Context, provider string, id string) error
|
||||
GetModelParametersTemplate(ctx *gin.Context) ([]*model_dto.ModelParametersTemplate, error)
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
@@ -23,6 +23,7 @@ func (p *plugin) aiAPIs() []pm3.Api {
|
||||
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/ai/provider/model", []string{"context", "query:provider", "body"}, []string{"model"}, p.aiProviderModelController.AddProviderModel, access.SystemSettingsAiProviderManager),
|
||||
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/model", []string{"context", "query:provider", "body"}, nil, p.aiProviderModelController.UpdateProviderModel, access.SystemSettingsAiProviderManager),
|
||||
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/ai/provider/model", []string{"context", "query:provider", "query:id"}, nil, p.aiProviderModelController.DeleteProviderModel, access.SystemSettingsAiProviderManager),
|
||||
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/model/templates", []string{"context"}, []string{"templates"}, p.aiProviderModelController.GetModelParametersTemplate, access.SystemSettingsAiProviderView),
|
||||
|
||||
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/apis", []string{"context", "query:keyword", "query:provider", "query:start", "query:end", "query:page", "query:page_size", "query:sort", "query:asc", "query:models", "query:services"}, []string{"apis", "condition", "total"}, p.aiStatisticController.APIs),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user