Jack04810's picture
Add files using upload-large-folder tool
534c64f verified
Raw
History Blame Contribute Delete
1.46 kB
"""Privileged profile resolution (text / visual / hybrid)."""
from __future__ import annotations
from typing import Any
from opsd_utils import debug_log as opsd_debug
PROFILE_SPECS: dict[str, dict[str, Any]] = {
"text": {
"providers": ["text"],
"dual_image": False,
},
"visual": {
"providers": ["visual_facts"],
"dual_image": True,
},
"hybrid": {
"providers": ["text", "visual_facts"],
"dual_image": True,
},
}
DEFAULT_PROFILE = "hybrid"
def effective_profile(sample: dict[str, Any], profile: str) -> str:
"""Force text profile for samples without images (e.g. math_lm)."""
profile = profile if profile in PROFILE_SPECS else DEFAULT_PROFILE
if not sample.get("image"):
if profile in ("visual", "hybrid"):
opsd_debug.log(
"privileged_profile",
"downgrade profile (no image)",
requested_profile=profile,
effective_profile="text",
)
return "text"
return profile
def resolve_profile_config(
profile: str,
provider_override: list[str] | None = None,
) -> dict[str, Any]:
spec = PROFILE_SPECS.get(profile, PROFILE_SPECS[DEFAULT_PROFILE])
providers = list(provider_override) if provider_override else list(spec["providers"])
return {
"profile": profile,
"providers": providers,
"dual_image": spec["dual_image"],
}