feat(llm): añade MockProvider determinista con 3 escenarios canónicos
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
"""Tests del proveedor LLM mock determinista."""
|
||||
|
||||
import json
|
||||
|
||||
import pytest
|
||||
|
||||
from agentforge_core.llm.base import Message
|
||||
from agentforge_core.llm.mock import MockProvider
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def provider() -> MockProvider:
|
||||
return MockProvider()
|
||||
|
||||
|
||||
async def test_mock_provider_es_determinista(provider: MockProvider) -> None:
|
||||
msgs = [Message(role="user", content="caída registros SIP")]
|
||||
r1 = await provider.complete(msgs)
|
||||
r2 = await provider.complete(msgs)
|
||||
assert r1.content == r2.content
|
||||
|
||||
|
||||
async def test_mock_provider_devuelve_json_valido(provider: MockProvider) -> None:
|
||||
msgs = [Message(role="user", content="degradación MOS pool SBC")]
|
||||
r = await provider.complete(msgs)
|
||||
parsed = json.loads(r.content)
|
||||
assert "severity" in parsed
|
||||
assert "proposed_actions" in parsed
|
||||
assert isinstance(parsed["proposed_actions"], list)
|
||||
|
||||
|
||||
async def test_mock_provider_respuesta_canonica_si_no_match(provider: MockProvider) -> None:
|
||||
msgs = [Message(role="user", content="texto random sin patrón")]
|
||||
r = await provider.complete(msgs)
|
||||
parsed = json.loads(r.content)
|
||||
assert parsed["severity"] in {"low", "medium", "high", "critical"}
|
||||
Reference in New Issue
Block a user