31 lines
1.1 KiB
Go
31 lines
1.1 KiB
Go
package config
|
|
|
|
// BackendDefaultsHook is called during Prepare() and can modify cfg.
|
|
// Only fills in values that are not already set by the user.
|
|
type BackendDefaultsHook func(cfg *ModelConfig, modelPath string)
|
|
|
|
var backendHooks = map[string][]BackendDefaultsHook{}
|
|
|
|
// RegisterBackendHook registers a hook for a backend name.
|
|
// Special keys:
|
|
// - "*" = global catch-all, runs for EVERY backend (before specific hooks)
|
|
// - "" = runs only when cfg.Backend is empty (auto-detect case)
|
|
// - "vllm", "llama-cpp" etc. = runs only for that specific backend
|
|
//
|
|
// Multiple hooks per key are supported; they run in registration order.
|
|
func RegisterBackendHook(backend string, hook BackendDefaultsHook) {
|
|
backendHooks[backend] = append(backendHooks[backend], hook)
|
|
}
|
|
|
|
// runBackendHooks executes hooks in order:
|
|
// 1. "*" (global) hooks for every backend
|
|
// 2. Backend-specific hooks for cfg.Backend (includes "" when backend is empty)
|
|
func runBackendHooks(cfg *ModelConfig, modelPath string) {
|
|
for _, h := range backendHooks["*"] {
|
|
h(cfg, modelPath)
|
|
}
|
|
for _, h := range backendHooks[cfg.Backend] {
|
|
h(cfg, modelPath)
|
|
}
|
|
}
|