A centralized registry for discovering and managing LLM model capabilities. Track model features, costs, and limitations across providers like OpenAI and Anthropic. Supports both verified model definitions and user-managed entries with local storage.
Project description
LLM Registry
LLM Registry is a Python package that provides a unified interface for discovering and managing the capabilities of various Large Language Models (LLMs). It includes a robust API, a rich CLI, and supports synchronization between local and remote model registries.
Table of Contents
- Overview
- Features
- Installation
- Library Usage
- CLI Usage
- Model Capabilities
- Configuration
- Development
- License
Overview
Manage and discover LLM model capabilities across multiple providers like OpenAI, Anthropic, and more in a centralized registry. Use this package to check model capabilities before initializing provider clients and to manage model metadata efficiently.
Features
- Unified API for capability discovery and management
- Multiple Providers: Supports OpenAI, Anthropic, Google, Cohere, Mistral, Meta, and others
- Local Storage: Track model metadata locally
- Rich Command-Line Interface (CLI): Intuitive commands for listing, adding, updating, and deleting models
- Dynamic Capability Management: Easily add, update, and delete model data
- Comprehensive Model Metadata: Track costs, features, and API parameters
- Token Cost Tracking: Standard and cached token costs
- Model Grouping: Organize models by family and provider
Installation
Install via pip:
pip install llm-registry
Library Usage
Integrate the package in your Python projects by following these steps:
Listing Models
from llm_registry import CapabilityRegistry, Provider
registry = CapabilityRegistry()
models = registry.get_models()
for model in models:
print(model)
Retrieve a Specific Model's Capabilities
model = registry.get_model("gpt-4")
if model and model.api_params.stream:
from openai import OpenAI # Replace with actual OpenAI client import
client = OpenAI() # Initialize client with streaming enabled
response = client.chat.completions.create(
model=model.model_id,
messages=[{"role": "user", "content": "Hello"}],
stream=True
)
Add a New Model Capability
from llm_registry.utils import create_model_capability
new_model = create_model_capability(
model_id="gpt-4",
provider=Provider.OPENAI,
model_family="GPT-4",
input_cost=0.01,
output_cost=0.03,
context_window=8192,
training_cutoff="2023-04",
supports_streaming=True,
supports_tools=True,
supports_json_mode=True,
supports_system_prompt=True
)
from llm_registry import CapabilityRepository
repo = CapabilityRepository()
repo.save_model_capabilities(new_model)
CLI Usage
The CLI tools llmr and llm-registry allow you to interact with model capabilities directly from the terminal.
List Models
View all available models:
llmr list
The above screenshot demonstrates how the CLI tool (llmr) currently looks like when listing models.
To filter models by provider:
llmr list --provider openai
Additional filtering options:
# Show only user-defined models
llmr list --user-only
# Show only package-included models
llmr list --package-only
Get Detailed Model Information
Get detailed information about a specific model:
llmr get gpt-4
For JSON output:
llmr get gpt-4 --json
Add Model
Add a new model:
llmr add gpt-4 \
--provider openai \
--model-family GPT-4 \
--input-cost 0.01 \
--output-cost 0.03 \
--cache-input-cost 0.005 \
--cache-output-cost 0.015 \
--context-window 8192 \
--training-cutoff 2023-04 \
--stream \
--tools \
--json-mode \
--system-prompt
Update Model
Update an existing model:
llmr update gpt-4 \
--provider openai \
--model-family "GPT-4 Turbo" \
--input-cost 0.005 \
--output-cost 0.015 \
--vision
Delete Model
Remove an existing model:
llmr delete gpt-4 --provider openai
Use -f or --force to bypass confirmation.
Model Capabilities
Each model entry tracks:
- Basic Information
- Provider (e.g., OpenAI, Anthropic)
- Model ID and Model Family
- Cost Details
- Input/Output token costs (per 1M tokens)
- Cached Input/Output token costs (per 1M tokens)
- Context window size
- Training data cutoff date
- API Parameters
- Max tokens support
- Temperature support
- Top-p support
- Streaming support
- Feature Support
- Streaming responses
- Tools/Function calling
- Vision/Image input
- JSON mode
- System prompt support
Configuration
Default model data is stored in ~/.llm-registry. You can override the directory by:
- Passing a
data_dirparameter toCapabilityRepositoryin code - Using the
--data-diroption in CLI commands
Development
Requirements
- Python 3.13+
- uv for dependency management
Setup
# Create virtual environment and sync dependencies
uv venv
uv sync --group dev
# Run tests with coverage analysis
pytest -v --cov=llm_registry
License
Distributed under the MIT License. See LICENSE for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llm_registry-0.3.1.tar.gz.
File metadata
- Download URL: llm_registry-0.3.1.tar.gz
- Upload date:
- Size: 778.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86abe83fa2a1281d82249a4a6c1e8e9fa8c8cd7c3bda16e3add4b25a58be54d5
|
|
| MD5 |
1eef230a8e4902717973437baf841bae
|
|
| BLAKE2b-256 |
bca213263b2a250129f9998d33391cd1dd951fe99c8041c6b28ddbdf6e1356b7
|
Provenance
The following attestation bundles were made for llm_registry-0.3.1.tar.gz:
Publisher:
publish.yml on yamanahlawat/llm-registry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_registry-0.3.1.tar.gz -
Subject digest:
86abe83fa2a1281d82249a4a6c1e8e9fa8c8cd7c3bda16e3add4b25a58be54d5 - Sigstore transparency entry: 178088507
- Sigstore integration time:
-
Permalink:
yamanahlawat/llm-registry@7045dc93547327bc8cae7e544cbf067474e99057 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/yamanahlawat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7045dc93547327bc8cae7e544cbf067474e99057 -
Trigger Event:
release
-
Statement type:
File details
Details for the file llm_registry-0.3.1-py3-none-any.whl.
File metadata
- Download URL: llm_registry-0.3.1-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2676553b899333e26382014fbf317593621b6b5f3499a701753b7653f46efe47
|
|
| MD5 |
4c17b355a28cd6b9b8a8a01cc9bf3cd3
|
|
| BLAKE2b-256 |
9165a97f747175e1e8bd06e1db4dae15070124ef1098374e03a08331f6883e42
|
Provenance
The following attestation bundles were made for llm_registry-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on yamanahlawat/llm-registry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_registry-0.3.1-py3-none-any.whl -
Subject digest:
2676553b899333e26382014fbf317593621b6b5f3499a701753b7653f46efe47 - Sigstore transparency entry: 178088509
- Sigstore integration time:
-
Permalink:
yamanahlawat/llm-registry@7045dc93547327bc8cae7e544cbf067474e99057 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/yamanahlawat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7045dc93547327bc8cae7e544cbf067474e99057 -
Trigger Event:
release
-
Statement type: