Use map for generated model registry data

Replaces []ModelDefinition with map[string]ModelDefinition so
model ID uniqueness is enforced by the data structure itself
and lookups do not require a linear scan.

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
Aurélien Sibiril
2026-04-13 17:14:53 +02:00
committed by Sacha Al Himdani
parent 3f4ef7b104
commit 02c719dfdd
3 changed files with 285 additions and 465 deletions

View File

@@ -118,7 +118,7 @@ func main() {
package llm package llm
var generatedModels = []ModelDefinition{ var generatedModels = map[string]ModelDefinition{
`, `,
iscHeader, iscHeader,
openRouterURL, openRouterURL,
@@ -134,8 +134,7 @@ var generatedModels = []ModelDefinition{
fmt.Fprintf( fmt.Fprintf(
&buf, &buf,
` { ` %q: {
ID: %q,
Name: %q, Name: %q,
Provider: %q, Provider: %q,
ContextLength: %d, ContextLength: %d,

View File

@@ -19,8 +19,6 @@ import (
"sync" "sync"
) )
//go:generate go run go.probo.inc/probo/internal/cmd/genmodels
type ( type (
// ModelDefinition describes a model's capabilities and limits. // ModelDefinition describes a model's capabilities and limits.
ModelDefinition struct { ModelDefinition struct {
@@ -61,11 +59,11 @@ var (
) )
// NewRegistry builds a registry from the given model definitions. // NewRegistry builds a registry from the given model definitions.
func NewRegistry(models []ModelDefinition) *Registry { func NewRegistry(models map[string]ModelDefinition) *Registry {
r := &Registry{byID: make(map[string]*ModelDefinition, len(models)*3)} r := &Registry{byID: make(map[string]*ModelDefinition, len(models)*3)}
for i := range models { for id, m := range models {
m := &models[i] m.ID = id
r.index(m) r.index(&m)
} }
return r return r
} }

File diff suppressed because it is too large Load Diff