Files
krow_backend/go-api/internal/gateway/routing.go
2026-08-28 12:21:44 +05:30

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),
}
}