ModelAdapter
Abstract base class for all model adapters.
Interface
class ModelAdapter(ABC):
@abstractmethod
async def generate(
self,
prompts: List[str],
**kwargs
) -> List[str]:
"""Generate responses for prompts"""
...
@abstractmethod
def get_token_count(self, text: str) -> int:
"""Count tokens in text"""
...
@abstractmethod
def get_cost_estimate(
self,
input_tokens: int,
output_tokens: int
) -> float:
"""Estimate cost for token usage"""
...
Factory Function
def get_model_adapter(model_name: str, config: Optional[Dict[str, Any]] = None) -> ModelAdapter:
...
Automatically selects the appropriate adapter based on model name prefix:
gpt-*→ OpenAIAdapterclaude-*→ AnthropicAdaptergemini-*→ GoogleAdaptermock-*→ MockAdapter- Others → HuggingFaceAdapter
Usage
from benchwise.models import get_model_adapter
adapter = get_model_adapter("gpt-4")
responses = await adapter.generate(["What is AI?"])