Cut over public engine construction to ConfigKit sources
This commit is contained in:
105
types.go
105
types.go
@@ -468,111 +468,6 @@ type ExecutionTargetOverride struct {
|
||||
ExtraParams map[string]any
|
||||
}
|
||||
|
||||
// Profile is an in-memory execution profile for library consumers.
|
||||
//
|
||||
// A standalone Profile is equivalent to a loaded profile file after local
|
||||
// validation. A derived profile names BaseProfileID and can inherit target
|
||||
// fields when selected or inspected. Raw API keys do not belong in profiles;
|
||||
// use APIKeyRequired to require callers to provide a RunRequest.APIKey or
|
||||
// explicit request ExecutionTargetOverride.APIKeyEnv, or use profile YAML
|
||||
// api_key_env with file and FS profile sources. Profile has no stable JSON
|
||||
// representation.
|
||||
//
|
||||
// WithProfiles locally validates and copies Profile values during NewEngine.
|
||||
// It checks base-reference existence and resolved target completeness when a
|
||||
// derived profile is selected or inspected. Zero Temperature, MaxTokens, and
|
||||
// TopP values and blank ServiceTier and ReasoningEffort values leave those
|
||||
// provider controls unspecified. A zero TimeoutSeconds retains the framework
|
||||
// deadline, while an empty ExtraParams map inherits backend request defaults.
|
||||
// Use ExecutionTargetOverride pointer fields to request an explicit numeric
|
||||
// zero.
|
||||
type Profile struct {
|
||||
// ID is the required non-blank profile identifier. WithProfiles trims it.
|
||||
ID string
|
||||
// BaseProfileID optionally names one base profile. WithProfiles trims it. A
|
||||
// non-blank value permits required target fields to be inherited when the
|
||||
// profile is selected or inspected, which is also when reference existence
|
||||
// and resolved completeness are checked. A blank value leaves this as a
|
||||
// standalone profile.
|
||||
BaseProfileID string
|
||||
// BackendID optionally selects an engine backend. WithProfiles trims it.
|
||||
// Backend membership is checked when a request selects the profile; an
|
||||
// unknown ID makes preparation fail with ErrProfileLoad.
|
||||
BackendID string
|
||||
// Endpoint is the model-provider base URL. A standalone Profile requires an
|
||||
// endpoint when BackendID is blank; a derived Profile may inherit either
|
||||
// field. A non-blank endpoint overrides the backend endpoint when
|
||||
// non-blank. WithProfiles trims it and requires an absolute HTTP or HTTPS URL
|
||||
// with a host and no user information, query, or fragment.
|
||||
Endpoint string
|
||||
// Model is the provider model identifier. It is required for a standalone
|
||||
// Profile and may be inherited by a derived Profile.
|
||||
Model string
|
||||
// Temperature is from 0 through 2. Zero leaves the provider control
|
||||
// unspecified.
|
||||
Temperature float64
|
||||
// MaxTokens is non-negative. Zero leaves the provider control unspecified.
|
||||
MaxTokens int
|
||||
// TopP is from 0 through 1. Zero leaves the provider control unspecified
|
||||
// rather than selecting an explicit zero.
|
||||
TopP float64
|
||||
// TimeoutSeconds is non-negative. Zero retains the framework deadline.
|
||||
TimeoutSeconds int
|
||||
// ServiceTier is optional; a blank value leaves it unspecified.
|
||||
ServiceTier string
|
||||
// ReasoningEffort is optional; a blank value leaves it unspecified.
|
||||
ReasoningEffort string
|
||||
// APIKeyRequired clears a backend's inherited API-key environment name and
|
||||
// requires a non-blank RunRequest.APIKey unless the request explicitly
|
||||
// supplies ExecutionTargetOverride.APIKeyEnv. When false, a named
|
||||
// environment source remains optional. It does not store a credential.
|
||||
APIKeyRequired bool
|
||||
// ExtraParams contains provider-specific JSON-compatible values. An empty
|
||||
// map inherits backend request defaults, when any. WithProfiles validates
|
||||
// and deeply copies it during NewEngine. Excessively deep or large values
|
||||
// are rejected for safety.
|
||||
ExtraParams map[string]any
|
||||
}
|
||||
|
||||
// OpenAICompatibleProfileConfig configures an OpenAI-compatible in-memory
|
||||
// profile.
|
||||
//
|
||||
// It contains ordinary profile fields for OpenAI-compatible chat-completions
|
||||
// endpoints. BaseProfileID and APIKeyRequired follow Profile. Raw API keys do
|
||||
// not belong in this config. OpenAICompatibleProfileConfig has no stable JSON
|
||||
// representation and is not validated until its resulting Profile is supplied
|
||||
// through WithProfiles to NewEngine.
|
||||
type OpenAICompatibleProfileConfig struct {
|
||||
// ID becomes Profile.ID.
|
||||
ID string
|
||||
// BaseProfileID becomes Profile.BaseProfileID. A non-blank value permits the
|
||||
// resulting Profile to inherit target fields when it is selected or inspected.
|
||||
BaseProfileID string
|
||||
// BackendID becomes Profile.BackendID.
|
||||
BackendID string
|
||||
// Endpoint becomes Profile.Endpoint.
|
||||
Endpoint string
|
||||
// Model becomes Profile.Model.
|
||||
Model string
|
||||
// APIKeyRequired becomes Profile.APIKeyRequired.
|
||||
APIKeyRequired bool
|
||||
// Temperature becomes Profile.Temperature.
|
||||
Temperature float64
|
||||
// MaxTokens becomes Profile.MaxTokens.
|
||||
MaxTokens int
|
||||
// TopP becomes Profile.TopP.
|
||||
TopP float64
|
||||
// TimeoutSeconds becomes Profile.TimeoutSeconds.
|
||||
TimeoutSeconds int
|
||||
// ServiceTier becomes Profile.ServiceTier.
|
||||
ServiceTier string
|
||||
// ReasoningEffort becomes Profile.ReasoningEffort.
|
||||
ReasoningEffort string
|
||||
// ExtraParams becomes a shallow-copied Profile.ExtraParams map. NewEngine
|
||||
// performs validation and a deep copy when WithProfiles applies the result.
|
||||
ExtraParams map[string]any
|
||||
}
|
||||
|
||||
// ExecutionTargetPresence reports which effective numeric settings should be
|
||||
// sent even when zero. It has a stable JSON representation and lets injected
|
||||
// clients preserve omission semantics.
|
||||
|
||||
Reference in New Issue
Block a user