46 lines
1.5 KiB
Python

"""evalharness.model -- calling and deploying models.
Two plugin families, deliberately separate lifecycles:
ModelAdapter HOW to call (protocol): openai_compatible, mock, ...
Deployer HOW to run (environment): vllm, sglang, external (docker-pinned)
Model spec grammar (strings everywhere, no config ceremony):
mock / mock:boxed / mock:tool offline
openai/http://host:8000/v1?model_id any OpenAI-protocol endpoint (vllm, sglang, cloud)
deploy:vllm/qwen3-8b Deployer resolves endpoint (models.yaml pins env)
All adapters are async and return structured ModelOutput(text, tool_calls,
usage) -- the hinge the future agent loops hang on.
"""
from .adapter import (
ADAPTER_REGISTRY,
ModelAdapter,
OpenAICompatible,
MockAdapter,
register_adapter,
resolve_adapter,
parse_model_spec,
)
from .deployer import (
DEPLOYER_REGISTRY,
Deployer,
VLLMDeployer,
SGLangDeployer,
External,
deploy,
load_model_config,
register_deployer,
stop_all,
)
from .output import ModelOutput, ToolCall, Usage
from .runner import generate_predictions, run_eval
__all__ = [
'ModelAdapter', 'OpenAICompatible', 'MockAdapter', 'register_adapter',
'resolve_adapter', 'parse_model_spec', 'ADAPTER_REGISTRY',
'Deployer', 'VLLMDeployer', 'SGLangDeployer', 'External',
'register_deployer', 'deploy', 'stop_all', 'load_model_config', 'DEPLOYER_REGISTRY',
'ModelOutput', 'ToolCall', 'Usage', 'generate_predictions', 'run_eval',
]