Skip to content

Commit 7595f9c

Browse files
committed
Add coverage to explain_info()
1 parent 09f4638 commit 7595f9c

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

tests/test_llmrails.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515

1616
import os
1717
from typing import Any, Dict, List, Optional, Union
18-
from unittest.mock import patch
18+
from unittest.mock import MagicMock, patch
1919

2020
import pytest
21+
from langchain_core.language_models import BaseChatModel
2122

2223
from nemoguardrails import LLMRails, RailsConfig
24+
from nemoguardrails.logging.explain import ExplainInfo
2325
from nemoguardrails.rails.llm.config import Model
2426
from nemoguardrails.rails.llm.llmrails import get_action_details_from_flow_id
2527
from tests.utils import FakeLLM, clean_events, event_sequence_conforms
@@ -1170,3 +1172,18 @@ def dummy_parser(text):
11701172
assert "chained_action" in rails.runtime.action_dispatcher.registered_actions
11711173
assert "chained_param" in rails.runtime.registered_action_params
11721174
assert rails.runtime.registered_action_params["chained_param"] == "param_value"
1175+
1176+
1177+
def test_explain_calls_ensure_explain_info():
1178+
"""Make sure if no `explain_info` attribute is present in LLMRails it's populated with
1179+
an empty ExplainInfo object"""
1180+
1181+
mock_llm = MagicMock(spec=BaseChatModel)
1182+
config = RailsConfig.from_content(config={"models": []})
1183+
rails = LLMRails(config=config, llm=mock_llm)
1184+
rails.generate(messages=[{"role": "user", "content": "Hi!"}])
1185+
1186+
rails.explain_info = None
1187+
info = rails.explain()
1188+
assert info == ExplainInfo()
1189+
assert rails.explain_info == ExplainInfo()

0 commit comments

Comments
 (0)