aix.ai_models¶
AI Model Management Module.
A unified interface for managing AI models across multiple providers.
Basic usage:
>>> from aix.ai_models import get_manager
>>> manager = get_manager()
>>> _ = manager.discover_from_source("openrouter", auto_register=True, verbose=False)
>>> models = manager.list_models(provider="openai")
Custom filtering:
>>> cheap_models = manager.list_models(
... custom_filter=lambda m: m.cost_per_token.get("input", 0) < 0.001
... )
Get connector-specific metadata:
>>> openai_meta = manager.get_connector_metadata("openai/gpt-4", "openai")
>>> # Use with: openai.ChatCompletion.create(**openai_meta, messages=[...])
Functions
|
Get a pre-configured model manager. |
Classes
|
Represents an AI model with its metadata. |
|
Registry for managing AI models using Mapping interface. |
Abstract base for model discovery sources. |
|
Abstract base for model connectors/clients. |
|
Registry for managing model connectors. |
|
|
Discover models from OpenRouter's public API. |
|
Discover locally installed Ollama models. |
|
Discover models from a provider's API (OpenAI, Anthropic, etc.). |
Format metadata for OpenAI Python client. |
|
Connector for OpenRouter API. |
|
Connector for LangChain library. |
|
Format metadata for direct Ollama API calls. |
|
Format metadata for DSPy framework. |
|
|
Unified interface for AI model management. |
- class aix.ai_models.Connector[source]¶
Bases:
ABCAbstract base for model connectors/clients.
- class aix.ai_models.ConnectorRegistry[source]¶
Bases:
MutableMapping[str,Connector]Registry for managing model connectors.
>>> registry = ConnectorRegistry() >>> class MyConnector(Connector): ... @property ... def name(self) -> str: ... return "my_connector" ... def format_metadata(self, model: Model) -> dict[str, Any]: ... return {"model": model.id} >>> connector = MyConnector() >>> registry[connector.name] = connector >>> "my_connector" in registry True
- class aix.ai_models.DSPyConnector[source]¶
Bases:
ConnectorFormat metadata for DSPy framework.
- class aix.ai_models.LangChainConnector[source]¶
Bases:
ConnectorConnector for LangChain library.
- class aix.ai_models.Model(id, provider, context_size=None, is_local=False, capabilities=<factory>, cost_per_token=<factory>, tags=<factory>, connector_metadata=<factory>, custom_metadata=<factory>)[source]¶
Bases:
objectRepresents an AI model with its metadata.
>>> model = Model( ... id="gpt-4", ... provider="openai", ... context_size=8192, ... is_local=False ... ) >>> model.id 'gpt-4'
- class aix.ai_models.ModelManager(*, storage_path=None)[source]¶
Bases:
objectUnified interface for AI model management.
Combines model registry, sources, and connectors into a single facade.
>>> manager = ModelManager() >>> manager.register_connector(OpenAIConnector()) >>> len(manager.connectors) 1
- add_model_tag(model_id, *tags)[source]¶
Add tags to a model.
- Return type:
>>> manager = ModelManager() >>> manager.models["gpt-4"] = Model(id="gpt-4", provider="openai") >>> manager.add_model_tag("gpt-4", "fast", "expensive") >>> "fast" in manager.models["gpt-4"].tags True
- property connectors: ConnectorRegistry¶
Access to connector registry.
- create_model_group(group_name, model_ids)[source]¶
Create a named group of models using tags.
- Return type:
>>> manager = ModelManager() >>> manager.models["gpt-4"] = Model(id="gpt-4", provider="openai") >>> manager.models["claude-3"] = Model(id="claude-3", provider="anthropic") >>> manager.create_model_group("premium", ["gpt-4", "claude-3"]) >>> premium = manager.list_models(tags=["group:premium"]) >>> len(premium) 2
- discover_from_source(source_name, *, auto_register=True, verbose=True)[source]¶
Discover models from a registered source.
- get_connector_metadata(model_id, connector_name)[source]¶
Get formatted metadata for a specific connector.
- Parameters:
- Return type:
- Returns:
Dict with metadata formatted for the specified connector
>>> manager = ModelManager() >>> manager.models["gpt-4"] = Model(id="gpt-4", provider="openai") >>> manager.register_connector(OpenAIConnector()) >>> meta = manager.get_connector_metadata("gpt-4", "openai") >>> meta["model"] 'gpt-4'
- get_model(model_id)[source]¶
Get a specific model by ID.
- Return type:
>>> manager = ModelManager() >>> manager.models["gpt-4"] = Model(id="gpt-4", provider="openai") >>> model = manager.get_model("gpt-4") >>> model.id 'gpt-4'
- list_models(*, provider=None, is_local=None, min_context_size=None, max_context_size=None, has_capabilities=None, tags=None, custom_filter=None)[source]¶
List models with optional filtering.
>>> manager = ModelManager() >>> manager.models["gpt-4"] = Model(id="gpt-4", provider="openai") >>> manager.models["llama2"] = Model(id="llama2", provider="ollama", is_local=True) >>> local = manager.list_models(is_local=True) >>> len(local) 1 >>> local[0].id 'llama2'
- property models: ModelRegistry¶
Access to model registry for direct manipulation.
>>> manager = ModelManager() >>> manager.models["test"] = Model(id="test", provider="test") >>> "test" in manager.models True
- register_connector(connector)[source]¶
Register a model connector.
- Return type:
>>> manager = ModelManager() >>> connector = OpenAIConnector() >>> manager.register_connector(connector) >>> connector.name in manager.connectors True
- register_source(name, source)[source]¶
Register a model discovery source.
- Return type:
>>> manager = ModelManager() >>> source = OpenRouterSource() >>> manager.register_source("openrouter", source) >>> "openrouter" in manager.list_sources() True
- set_custom_metadata(model_id, key, value)[source]¶
Set custom metadata on a model.
- Return type:
>>> manager = ModelManager() >>> manager.models["gpt-4"] = Model(id="gpt-4", provider="openai") >>> manager.set_custom_metadata("gpt-4", "my_note", "Use for production") >>> manager.models["gpt-4"].custom_metadata["my_note"] 'Use for production'
- class aix.ai_models.ModelRegistry(*, storage_path=None)[source]¶
Bases:
MutableMapping[str,Model]Registry for managing AI models using Mapping interface.
>>> registry = ModelRegistry() >>> registry["gpt-4"] = Model(id="gpt-4", provider="openai") >>> "gpt-4" in registry True >>> len(registry) 1
- filter(*, provider=None, is_local=None, min_context_size=None, max_context_size=None, has_capabilities=None, tags=None, custom_filter=None)[source]¶
Filter models by multiple criteria.
>>> registry = ModelRegistry() >>> registry["gpt-4"] = Model(id="gpt-4", provider="openai", context_size=8192) >>> registry["llama2"] = Model(id="llama2", provider="ollama", is_local=True) >>> local_models = registry.filter(is_local=True) >>> len(local_models) 1
- class aix.ai_models.OllamaConnector[source]¶
Bases:
ConnectorFormat metadata for direct Ollama API calls.
- class aix.ai_models.OllamaSource(*, base_url='http://localhost:11434', timeout=10)[source]¶
Bases:
ModelSourceDiscover locally installed Ollama models.
Queries the Ollama API for models available on the local machine.
- class aix.ai_models.OpenAIConnector[source]¶
Bases:
ConnectorFormat metadata for OpenAI Python client.
Provides model metadata in format expected by openai.ChatCompletion.create().
- class aix.ai_models.OpenRouterConnector[source]¶
Bases:
ConnectorConnector for OpenRouter API.
- class aix.ai_models.OpenRouterSource(*, timeout=30)[source]¶
Bases:
ModelSourceDiscover models from OpenRouter’s public API.
OpenRouter maintains a comprehensive registry of models across providers.
- class aix.ai_models.ProviderAPISource(provider_name, *, api_key=None, base_url='https://api.openai.com/v1', timeout=30)[source]¶
Bases:
ModelSourceDiscover models from a provider’s API (OpenAI, Anthropic, etc.).
Generic source for providers with /v1/models endpoint.
- aix.ai_models.get_manager(storage_path=None)[source]¶
Get a pre-configured model manager.
- Return type:
>>> manager = get_manager() >>> len(manager.connectors) > 0 True
Modules