| from docsifer.core.llm_registry import LLMConfig, LLMRegistry |
|
|
|
|
| def test_from_dict_returns_none_when_no_key() -> None: |
| assert ( |
| LLMConfig.from_dict( |
| {"api_key": " "}, |
| default_base_url="https://api.openai.com/v1", |
| default_model="gpt-4o-mini", |
| ) |
| is None |
| ) |
| assert ( |
| LLMConfig.from_dict( |
| None, |
| default_base_url="https://api.openai.com/v1", |
| default_model="gpt-4o-mini", |
| ) |
| is None |
| ) |
|
|
|
|
| def test_from_dict_applies_defaults() -> None: |
| cfg = LLMConfig.from_dict( |
| {"api_key": "sk-test"}, |
| default_base_url="https://api.openai.com/v1", |
| default_model="gpt-4o-mini", |
| ) |
| assert cfg is not None |
| assert cfg.api_key == "sk-test" |
| assert cfg.base_url == "https://api.openai.com/v1" |
| assert cfg.model == "gpt-4o-mini" |
|
|
|
|
| def test_cache_key_changes_with_model() -> None: |
| a = LLMConfig(api_key="sk", base_url="https://x", model="m1") |
| b = LLMConfig(api_key="sk", base_url="https://x", model="m2") |
| assert a.cache_key != b.cache_key |
|
|
|
|
| def test_registry_caches_by_key(monkeypatch) -> None: |
| calls = {"n": 0} |
|
|
| class _DummyMD: |
| pass |
|
|
| def _build(self, config): |
| calls["n"] += 1 |
| return _DummyMD() |
|
|
| monkeypatch.setattr(LLMRegistry, "_build", _build) |
|
|
| reg = LLMRegistry(max_size=4, ttl=60) |
| cfg = LLMConfig(api_key="sk", base_url="https://x", model="m") |
| a = reg.get(cfg) |
| b = reg.get(cfg) |
| assert a is b |
| assert calls["n"] == 1 |
|
|