evalstone/evalscope/tests/models/test_model_cache.py
sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 07:30:48 +00:00

61 lines
1.8 KiB
Python

from typing import List
import pytest
from evalscope.api.messages import ChatMessage
from evalscope.api.model import GenerateConfig, ModelAPI, ModelOutput, get_model
from evalscope.api.model.model import ModelCache
from evalscope.api.registry import MODEL_APIS
from evalscope.api.tool import ToolChoice, ToolInfo
class FakeOpenAIBackend(ModelAPI):
def generate(
self,
input: List[ChatMessage],
tools: List[ToolInfo],
tool_choice: ToolChoice,
config: GenerateConfig,
) -> ModelOutput:
return ModelOutput(model=self.model_name, choices=[])
class FakeLiteLLMBackend(ModelAPI):
def generate(
self,
input: List[ChatMessage],
tools: List[ToolInfo],
tool_choice: ToolChoice,
config: GenerateConfig,
) -> ModelOutput:
return ModelOutput(model=self.model_name, choices=[])
@pytest.fixture
def fake_backends():
MODEL_APIS['fake_openai_backend'] = FakeOpenAIBackend
MODEL_APIS['fake_litellm_backend'] = FakeLiteLLMBackend
ModelCache._models.clear()
yield
MODEL_APIS.pop('fake_openai_backend', None)
MODEL_APIS.pop('fake_litellm_backend', None)
ModelCache._models.clear()
def test_model_cache_key_includes_eval_type(fake_backends) -> None:
first = get_model(model='shared-model', eval_type='fake_openai_backend', api_key='key')
second = get_model(model='shared-model', eval_type='fake_litellm_backend', api_key='key')
assert first is not second
assert isinstance(first.api, FakeOpenAIBackend)
assert isinstance(second.api, FakeLiteLLMBackend)
def test_same_eval_type_returns_memoized_model(fake_backends) -> None:
first = get_model(model='shared-model', eval_type='fake_openai_backend', api_key='key')
again = get_model(model='shared-model', eval_type='fake_openai_backend', api_key='key')
assert again is first