diff --git a/src/providers/__init__.py b/src/providers/__init__.py new file mode 100644 index 000000000..557a3e2b1 --- /dev/null +++ b/src/providers/__init__.py @@ -0,0 +1 @@ +"""Inference provider registry package.""" diff --git a/src/providers/inference/__init__.py b/src/providers/inference/__init__.py new file mode 100644 index 000000000..e4144a405 --- /dev/null +++ b/src/providers/inference/__init__.py @@ -0,0 +1 @@ +"""Inference providers, catalog models, and shared registry types.""" diff --git a/src/providers/inference/azure/__init__.py b/src/providers/inference/azure/__init__.py new file mode 100644 index 000000000..2c404ed6f --- /dev/null +++ b/src/providers/inference/azure/__init__.py @@ -0,0 +1 @@ +"""Azure inference provider package.""" diff --git a/src/providers/inference/bedrock/__init__.py b/src/providers/inference/bedrock/__init__.py new file mode 100644 index 000000000..0ceafff75 --- /dev/null +++ b/src/providers/inference/bedrock/__init__.py @@ -0,0 +1 @@ +"""Bedrock inference provider package.""" diff --git a/src/providers/inference/catalog.py b/src/providers/inference/catalog.py new file mode 100644 index 000000000..5a7917b16 --- /dev/null +++ b/src/providers/inference/catalog.py @@ -0,0 +1,16 @@ +"""Internal inference catalog models.""" + +from typing import Any + +from pydantic import BaseModel, Field + +from providers.inference.types import ModelType + + +class CatalogModel(BaseModel): + """Cached catalog row for inference providers and the registry.""" + + name: str + provider_resource_id: str + model_type: ModelType + metadata: dict[str, Any] = Field(default_factory=dict) diff --git a/src/providers/inference/openai/__init__.py b/src/providers/inference/openai/__init__.py new file mode 100644 index 000000000..58e09e810 --- /dev/null +++ b/src/providers/inference/openai/__init__.py @@ -0,0 +1 @@ +"""OpenAI inference provider package.""" diff --git a/src/providers/inference/sentence_transformers/__init__.py b/src/providers/inference/sentence_transformers/__init__.py new file mode 100644 index 000000000..f0803640e --- /dev/null +++ b/src/providers/inference/sentence_transformers/__init__.py @@ -0,0 +1 @@ +"""Sentence-transformers inference provider package.""" diff --git a/src/providers/inference/types.py b/src/providers/inference/types.py new file mode 100644 index 000000000..e8dbbcc96 --- /dev/null +++ b/src/providers/inference/types.py @@ -0,0 +1,19 @@ +"""Shared literals and aliases for the inference provider registry.""" + +from typing import Any, Final, Literal + +ProviderType = Literal[ + "openai", + "azure", + "vertexai", + "bedrock", + "watsonx", + "vllm", + "sentence_transformers", +] + +ModelType = Literal["llm", "embedding", "rerank"] + +type ProviderId = str + +PROVIDER_CLASSES: Final[dict[ProviderType, Any]] = {} diff --git a/src/providers/inference/vertexai/__init__.py b/src/providers/inference/vertexai/__init__.py new file mode 100644 index 000000000..4039d7de8 --- /dev/null +++ b/src/providers/inference/vertexai/__init__.py @@ -0,0 +1 @@ +"""Vertex AI inference provider package.""" diff --git a/src/providers/inference/vllm/__init__.py b/src/providers/inference/vllm/__init__.py new file mode 100644 index 000000000..debb49eb6 --- /dev/null +++ b/src/providers/inference/vllm/__init__.py @@ -0,0 +1 @@ +"""vLLM inference provider package.""" diff --git a/src/providers/inference/watsonx/__init__.py b/src/providers/inference/watsonx/__init__.py new file mode 100644 index 000000000..3ef1ef4ef --- /dev/null +++ b/src/providers/inference/watsonx/__init__.py @@ -0,0 +1 @@ +"""WatsonX inference provider package.""" diff --git a/tests/unit/providers/__init__.py b/tests/unit/providers/__init__.py new file mode 100644 index 000000000..5f2ac7b20 --- /dev/null +++ b/tests/unit/providers/__init__.py @@ -0,0 +1 @@ +"""Unit tests for the providers package.""" diff --git a/tests/unit/providers/inference/__init__.py b/tests/unit/providers/inference/__init__.py new file mode 100644 index 000000000..c8331a150 --- /dev/null +++ b/tests/unit/providers/inference/__init__.py @@ -0,0 +1 @@ +"""Unit tests for providers.inference.""" diff --git a/tests/unit/providers/inference/test_catalog.py b/tests/unit/providers/inference/test_catalog.py new file mode 100644 index 000000000..075f52634 --- /dev/null +++ b/tests/unit/providers/inference/test_catalog.py @@ -0,0 +1,17 @@ +"""Unit tests for internal inference catalog models.""" + +from providers.inference.catalog import CatalogModel + + +def test_catalog_model_construction() -> None: + """CatalogModel stores name, wire id, type, and metadata.""" + row = CatalogModel( + name="fast-chat", + provider_resource_id="gpt-4o-mini", + model_type="llm", + metadata={"context_window": 128000}, + ) + assert row.name == "fast-chat" + assert row.provider_resource_id == "gpt-4o-mini" + assert row.model_type == "llm" + assert row.metadata["context_window"] == 128000