Documentation
¶
Overview ¶
Package models provides model metadata, registry, and discovery functionality for AI provider operations.
This package re-exports the model registry from internal/common/models, providing access to model metadata including capabilities, defaults, and parameters. It is primarily used for model discovery, validation, and dynamic provider model lookups.
GetDefaultsRegistry ¶
The primary entry point is GetDefaultsRegistry(), which returns the singleton defaults registry containing model metadata from the embedded models.dev dataset. This registry provides comprehensive information about AI models including:
- Display names and descriptions
- Token limits and context windows
- Capability flags (tools, streaming, vision)
- Pricing information
Example usage:
registry := models.GetDefaultsRegistry()
metadata := registry.GetModelDefaults("gpt-4o")
if metadata != nil {
fmt.Printf("Model: %s, MaxTokens: %d\n", metadata.DisplayName, metadata.MaxTokens)
}
Related Types ¶
The package exports the following key types:
- ModelMetadata: Comprehensive metadata for a model
- ModelCapabilities: Capabilities that a model supports
- CostInfo: Pricing information per million tokens
- DefaultsRegistry: Registry for model defaults
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetDefaultsRegistry ¶
func GetDefaultsRegistry() *models.DefaultsRegistry
GetDefaultsRegistry returns the singleton defaults registry.
The registry contains model metadata loaded from the embedded models.dev dataset. It provides comprehensive information about AI models including capabilities, defaults, and parameters.
This is the primary entry point for model discovery and validation. The returned registry is safe for concurrent use and is initialized once on first access.
Example:
registry := models.GetDefaultsRegistry()
metadata := registry.GetModelDefaults("gpt-4o")
if metadata != nil {
fmt.Printf("Model: %s, MaxTokens: %d\n",
metadata.DisplayName, metadata.MaxTokens)
}
Example ¶
ExampleGetDefaultsRegistry demonstrates basic usage of the model registry.
package main
import (
"fmt"
"github.com/cecil-the-coder/ai-provider-kit/pkg/models"
)
func main() {
registry := models.GetDefaultsRegistry()
// Get metadata for a specific model
metadata := registry.GetModelDefaults("gpt-4o")
if metadata != nil {
fmt.Printf("Model: %s\n", metadata.DisplayName)
fmt.Printf("MaxTokens: %d\n", metadata.MaxTokens)
fmt.Printf("SupportsTools: %v\n", metadata.Capabilities.SupportsTools)
fmt.Printf("SupportsStreaming: %v\n", metadata.Capabilities.SupportsStreaming)
fmt.Printf("SupportsVision: %v\n", metadata.Capabilities.SupportsVision)
}
// Get all available providers
providers := registry.GetAllProviders()
fmt.Printf("Providers: %v\n", providers)
// Get all models for a specific provider
providerModels := registry.GetProviderModels("openai")
for modelID, meta := range providerModels {
fmt.Printf(" %s: %s\n", modelID, meta.DisplayName)
}
}
Output:
Example (MultipleModels) ¶
ExampleGetDefaultsRegistry_multipleModels demonstrates looking up multiple models.
package main
import (
"fmt"
"github.com/cecil-the-coder/ai-provider-kit/pkg/models"
)
func main() {
registry := models.GetDefaultsRegistry()
// Look up various models
models := []string{
"gpt-4o",
"claude-sonnet-4",
"gemini-2.5-pro",
}
for _, modelID := range models {
metadata := registry.GetModelDefaults(modelID)
if metadata != nil {
fmt.Printf("%s: %s (max tokens: %d)\n",
modelID, metadata.DisplayName, metadata.MaxTokens)
}
}
}
Output:
Types ¶
type CostInfo ¶
CostInfo contains pricing information per million tokens.
This struct provides input and output token costs for models that have pricing information available in the registry.
type DefaultsRegistry ¶
type DefaultsRegistry = models.DefaultsRegistry
DefaultsRegistry manages the models.dev defaults.
The registry provides access to model metadata from the embedded models.dev dataset, including capabilities, token limits, and pricing. Use GetDefaultsRegistry() to obtain the singleton instance.
Methods:
- GetModelDefaults(modelID string) *ModelMetadata
- GetProviderModels(providerID string) map[string]*ModelMetadata
- GetAllProviders() []string
type ModelCapabilities ¶
type ModelCapabilities = models.ModelCapabilities
ModelCapabilities defines what capabilities a model supports.
These flags indicate whether a model can use tools, supports streaming responses, or processes vision/multimodal inputs.
type ModelMetadata ¶
type ModelMetadata = models.ModelMetadata
ModelMetadata contains comprehensive metadata for a model.
It includes display names, token limits, descriptions, capabilities, and cost information. This type is returned by the DefaultsRegistry when querying model information.
Example ¶
ExampleModelMetadata shows how to work with model metadata.
package main
import (
"fmt"
"os"
"github.com/cecil-the-coder/ai-provider-kit/pkg/models"
)
func main() {
registry := models.GetDefaultsRegistry()
metadata := registry.GetModelDefaults("gpt-4o")
if metadata == nil {
fmt.Println("Model not found")
os.Exit(1)
}
// Access display information
_ = metadata.DisplayName
_ = metadata.Description
// Access capabilities
capabilities := metadata.Capabilities
_ = capabilities.SupportsTools
_ = capabilities.SupportsStreaming
_ = capabilities.SupportsVision
// Access token limits
_ = metadata.MaxTokens
// Access pricing information (if available)
cost := metadata.CostPerMToken
_ = cost.InputCostPerMToken
_ = cost.OutputCostPerMToken
fmt.Printf("Model metadata: %s\n", metadata.DisplayName)
}
Output: