62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
import pytest
|
|
|
|
from app.ai_provider.config.models import ModelConfig, ProviderConfig
|
|
from app.ai_provider.core.registry import ModelRegistry, ProviderRegistry
|
|
from app.ai_provider.manager import ProviderManager
|
|
from app.ai_provider.types.messages import HumanMessage, SystemMessage
|
|
|
|
|
|
class TestProviderManager:
|
|
@pytest.fixture
|
|
def manager(self):
|
|
models = [
|
|
ModelConfig(
|
|
name="test",
|
|
provider="deepseek",
|
|
model="deepseek-v4-flash",
|
|
format="openai",
|
|
tags=["default"],
|
|
),
|
|
]
|
|
providers = {
|
|
"deepseek": ProviderConfig(
|
|
name="deepseek",
|
|
format="openai",
|
|
base_url_env="DEEPSEEK_BASE_URL",
|
|
api_key_env="DEEPSEEK_API_KEY",
|
|
),
|
|
}
|
|
model_reg = ModelRegistry(models)
|
|
provider_reg = ProviderRegistry(providers)
|
|
return ProviderManager(
|
|
model_registry=model_reg,
|
|
provider_registry=provider_reg,
|
|
)
|
|
|
|
def test_resolve_model(self, manager):
|
|
name = manager.resolve_model("test")
|
|
assert name == "test"
|
|
|
|
def test_resolve_model_default(self, manager):
|
|
name = manager.resolve_model()
|
|
assert name == "test"
|
|
|
|
def test_get_adapter_for_model(self, manager):
|
|
adapter = manager.get_adapter("test")
|
|
from app.ai_provider.llm.openai_format import OpenAIFormatAdapter
|
|
|
|
assert isinstance(adapter, OpenAIFormatAdapter)
|
|
|
|
def test_get_provider_config(self, manager):
|
|
prov = manager.get_provider_config("deepseek")
|
|
assert prov.name == "deepseek"
|
|
|
|
def test_to_message_list(self, manager):
|
|
msgs = manager.to_message_list(
|
|
system_messages=["You are helpful."],
|
|
history=[("user", "Hello")],
|
|
)
|
|
assert len(msgs) == 2
|
|
assert isinstance(msgs[0], SystemMessage)
|
|
assert isinstance(msgs[1], HumanMessage)
|