Files
plyngent/tests/test_runtime/test_client_factory.py
T

61 lines
2.1 KiB
Python
Raw Normal View History

from __future__ import annotations
import pytest
from plyngent.config.models import (
AnthropicProvider,
DeepseekProvider,
OpenAICompatibleProvider,
OpenAIProvider,
)
from plyngent.lmproto.deepseek import DeepseekOpenAIClient
from plyngent.lmproto.openai_compatible import OpenAIClient
from plyngent.runtime import ProviderNotSupportedError, create_client, provider_to_openai_config
def test_openai_provider_defaults_base_url() -> None:
provider = OpenAIProvider(access_key_or_token="sk-test")
config = provider_to_openai_config(provider)
assert config.access_key_or_token == "sk-test"
assert config.base_url == "https://api.openai.com/v1"
client = create_client(provider)
assert isinstance(client, OpenAIClient)
def test_openai_compatible_requires_url() -> None:
provider = OpenAICompatibleProvider(access_key_or_token="sk-test")
with pytest.raises(ProviderNotSupportedError, match="url"):
_ = create_client(provider)
def test_openai_compatible_client() -> None:
provider = OpenAICompatibleProvider(
access_key_or_token="sk-test",
url="https://example.com/v1",
)
client = create_client(provider)
assert isinstance(client, OpenAIClient)
assert provider_to_openai_config(provider).base_url == "https://example.com/v1"
def test_deepseek_openai_convention() -> None:
provider = DeepseekProvider(access_key_or_token="sk-test")
client = create_client(provider)
assert isinstance(client, DeepseekOpenAIClient)
assert provider_to_openai_config(provider).base_url == "https://api.deepseek.com/v1"
def test_deepseek_anthropic_convention_not_implemented() -> None:
provider = DeepseekProvider(
access_key_or_token="sk-test",
extras={"convention": "anthropic"},
)
with pytest.raises(ProviderNotSupportedError, match="anthropic"):
_ = create_client(provider)
def test_anthropic_not_implemented() -> None:
provider = AnthropicProvider(access_key_or_token="sk-test")
with pytest.raises(ProviderNotSupportedError, match="anthropic"):
_ = create_client(provider)