import os
from enum import Enum
from typing import Optional
class TestMode(Enum):
MOCK = "mock"
LIGHT = "light"
FULL = "full"
MODEL_CONFIGS = {
"BAAI/bge-small-en-v1.5": 384,
"BAAI/bge-base-en-v1.5": 768,
"BAAI/bge-large-en-v1.5": 1024,
"BAAI/bge-m3": 1024,
"BAAI/bge-small-zh-v1.5": 512,
"BAAI/bge-base-zh-v1.5": 768,
"BAAI/bge-large-zh-v1.5": 1024,
"sentence-transformers/all-MiniLM-L6-v2": 384,
"sentence-transformers/all-mpnet-base-v2": 768,
}
DEFAULT_MODEL_NAME = "BAAI/bge-small-en-v1.5"
DEFAULT_MODEL_DIMENSION = 384
DEFAULT_TEST_MODE = TestMode.MOCK
MAX_TEXT_LENGTH = 10000
def get_test_mode() -> TestMode:
mode_str = os.environ.get("TEST_MODE", DEFAULT_TEST_MODE.value)
try:
return TestMode(mode_str)
except ValueError:
print(
f"Warning: Invalid TEST_MODE '{mode_str}', using default '{DEFAULT_TEST_MODE.value}'"
)
return DEFAULT_TEST_MODE
def is_mock_mode() -> bool:
return get_test_mode() == TestMode.MOCK
def is_real_mode() -> bool:
return get_test_mode() in (TestMode.LIGHT, TestMode.FULL)
def get_model_name() -> str:
return os.environ.get("TEST_MODEL_NAME", DEFAULT_MODEL_NAME)
def get_model_path() -> Optional[str]:
return os.environ.get("TEST_MODEL_PATH")
def get_model_dimension() -> int:
dim_override = os.environ.get("TEST_MODEL_DIMENSION")
if dim_override:
try:
return int(dim_override)
except ValueError:
print(f"Warning: Invalid TEST_MODEL_DIMENSION '{dim_override}'")
model_name = get_model_name()
return MODEL_CONFIGS.get(model_name, DEFAULT_MODEL_DIMENSION)
def get_device_type() -> str:
return os.environ.get("TEST_DEVICE", "cpu")
def get_api_base_url() -> str:
return os.environ.get("TEST_API_BASE_URL", "http://localhost:9002")