Add profile inheritance definition support
This commit is contained in:
36
profiles.go
36
profiles.go
@@ -2,9 +2,7 @@ package promptkit
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
|
||||
"gitea.maximumdirect.net/eric/promptkit/internal/jsonvalue"
|
||||
@@ -25,6 +23,7 @@ import (
|
||||
func OpenAICompatibleProfile(cfg OpenAICompatibleProfileConfig) Profile {
|
||||
return Profile{
|
||||
ID: cfg.ID,
|
||||
BaseProfileID: cfg.BaseProfileID,
|
||||
BackendID: cfg.BackendID,
|
||||
Endpoint: cfg.Endpoint,
|
||||
Model: cfg.Model,
|
||||
@@ -87,8 +86,9 @@ func toDomainProfile(publicProfile Profile) (domain.ExecutionProfile, error) {
|
||||
return domain.ExecutionProfile{}, err
|
||||
}
|
||||
prof := domain.ExecutionProfile{
|
||||
ID: strings.TrimSpace(publicProfile.ID),
|
||||
BackendID: strings.TrimSpace(publicProfile.BackendID),
|
||||
ID: publicProfile.ID,
|
||||
BaseProfileID: publicProfile.BaseProfileID,
|
||||
BackendID: publicProfile.BackendID,
|
||||
Endpoint: publicProfile.Endpoint,
|
||||
Model: publicProfile.Model,
|
||||
Temperature: publicProfile.Temperature,
|
||||
@@ -100,34 +100,8 @@ func toDomainProfile(publicProfile Profile) (domain.ExecutionProfile, error) {
|
||||
APIKeyRequired: publicProfile.APIKeyRequired,
|
||||
ExtraParams: extraParams,
|
||||
}
|
||||
if err := normalizeAndValidatePublicProfile(&prof); err != nil {
|
||||
if err := profile.NormalizeAndValidateDefinition(&prof); err != nil {
|
||||
return domain.ExecutionProfile{}, err
|
||||
}
|
||||
return prof, nil
|
||||
}
|
||||
|
||||
func normalizeAndValidatePublicProfile(prof *domain.ExecutionProfile) error {
|
||||
if strings.TrimSpace(prof.ID) == "" {
|
||||
return errors.New("id is required")
|
||||
}
|
||||
prof.Endpoint = strings.TrimSpace(prof.Endpoint)
|
||||
if strings.TrimSpace(prof.BackendID) == "" && prof.Endpoint == "" {
|
||||
return errors.New("backend or endpoint is required")
|
||||
}
|
||||
if prof.Endpoint != "" {
|
||||
endpoint, err := domain.NormalizeOpenAICompatibleBaseEndpoint(prof.Endpoint)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
prof.Endpoint = endpoint
|
||||
}
|
||||
if strings.TrimSpace(prof.Model) == "" {
|
||||
return errors.New("model is required")
|
||||
}
|
||||
return domain.ValidateExecutionTargetSettings(domain.ExecutionTarget{
|
||||
Temperature: prof.Temperature,
|
||||
MaxTokens: prof.MaxTokens,
|
||||
TopP: prof.TopP,
|
||||
TimeoutSeconds: prof.TimeoutSeconds,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user