34 lines
1.5 KiB
Go
34 lines
1.5 KiB
Go
package gateway
|
|
|
|
import (
|
|
"github.com/anthropics/anthropic-sdk-go"
|
|
|
|
"github.com/krow/krow-backend/go-api/internal/config"
|
|
)
|
|
|
|
// FromConfig builds the gateway's routing table from validated settings.
|
|
//
|
|
// The effort per tier is fixed here rather than configured, and that is the
|
|
// point of the function existing at all: a deployment chooses *which model*
|
|
// answers a tier, and the platform chooses *how hard it thinks*. If a
|
|
// deployment could redefine effort, two installations running the same
|
|
// definition would disagree about what "deep" means while both reporting the
|
|
// tier as deep — and the tier is written into every trajectory.
|
|
//
|
|
// fast → low a lookup, a restatement, a short structured reading
|
|
// balanced → high the default, and what most turns should cost
|
|
// deep → xhigh a turn worth several tool calls and real deliberation
|
|
//
|
|
// `max` is deliberately not reachable from a spec. It is the setting for when
|
|
// correctness matters more than cost, which is a judgement an operator makes
|
|
// about a deployment, not one an agent author makes about a page.
|
|
func FromConfig(c config.ModelConfig) Config {
|
|
return Config{
|
|
APIKey: c.APIKey,
|
|
Fast: Routing{Model: c.Fast, Effort: anthropic.OutputConfigEffortLow},
|
|
Balanced: Routing{Model: c.Balanced, Effort: anthropic.OutputConfigEffortHigh},
|
|
Deep: Routing{Model: c.Deep, Effort: anthropic.OutputConfigEffortXhigh},
|
|
MaxOutputTokens: int64(c.MaxOutputTokens),
|
|
}
|
|
}
|