57 lines
1.8 KiB
Go
57 lines
1.8 KiB
Go
|
|
package contract
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"net/http"
|
||
|
|
)
|
||
|
|
|
||
|
|
const (
|
||
|
|
ModelSourcePlatform = "platform"
|
||
|
|
ModelSourceCustom = "custom"
|
||
|
|
)
|
||
|
|
|
||
|
|
// PlatformAIConfig is a runtime-only OpenAI-compatible model configuration.
|
||
|
|
// Credentials and the signed HTTP client are supplied by the host and are
|
||
|
|
// never persisted in Agent Desk tables or returned by dashboard APIs.
|
||
|
|
type PlatformAIConfig struct {
|
||
|
|
BaseURL string
|
||
|
|
APIKey string
|
||
|
|
ChatEnabled bool
|
||
|
|
ChatModel string
|
||
|
|
VisionEnabled bool
|
||
|
|
VisionModel string
|
||
|
|
EmbeddingEnabled bool
|
||
|
|
ModelName string
|
||
|
|
EmbeddingModel string
|
||
|
|
EmbeddingDimension int
|
||
|
|
MaxOutputTokens int
|
||
|
|
TimeoutMS int
|
||
|
|
MaxRetryCount int
|
||
|
|
HTTPClient *http.Client
|
||
|
|
}
|
||
|
|
|
||
|
|
type PlatformAIStatus struct {
|
||
|
|
Enabled bool `json:"enabled"`
|
||
|
|
Balance float64 `json:"balance"`
|
||
|
|
Currency string `json:"currency"`
|
||
|
|
DefaultProvider string `json:"default_provider"`
|
||
|
|
DefaultModel string `json:"default_model"`
|
||
|
|
ChatEnabled bool `json:"chat_enabled"`
|
||
|
|
ChatProvider string `json:"chat_provider"`
|
||
|
|
ChatModel string `json:"chat_model"`
|
||
|
|
VisionEnabled bool `json:"vision_enabled"`
|
||
|
|
VisionModel string `json:"vision_model"`
|
||
|
|
EmbeddingEnabled bool `json:"embedding_enabled"`
|
||
|
|
EmbeddingModel string `json:"embedding_model"`
|
||
|
|
EmbeddingDimension int `json:"embedding_dimension"`
|
||
|
|
RechargeURL string `json:"recharge_url"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// PlatformAIProvider lets the host resolve the current model source on every
|
||
|
|
// request, so changing the system setting takes effect without restarting.
|
||
|
|
type PlatformAIProvider interface {
|
||
|
|
ModelSource(context.Context) (string, error)
|
||
|
|
Config(context.Context) (*PlatformAIConfig, error)
|
||
|
|
Status(context.Context) (*PlatformAIStatus, error)
|
||
|
|
}
|