models

package
v1.0.62 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2025 License: MIT Imports: 1 Imported by: 0

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

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

Types

type CostInfo

type CostInfo = models.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)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL