99from ldai .evaluator import Evaluator
1010from ldai .managed_model import ManagedModel
1111from ldai .models import AICompletionConfig , LDMessage , ModelConfig , ProviderConfig
12- from ldai .providers .types import JudgeResult , LDAIMetrics , ManagedResult , ModelResponse
12+ from ldai .providers .types import JudgeResult , LDAIMetrics , ManagedResult , ModelResponse , RunnerResult
1313from ldai .tracker import LDAIConfigTracker , LDAIMetricSummary
1414
1515
1616
17+ def _make_runner_result (content : str = 'response text' ) -> RunnerResult :
18+ return RunnerResult (
19+ content = content ,
20+ metrics = LDAIMetrics (success = True , usage = None ),
21+ )
22+
23+
1724def _make_model_response (content : str = 'response text' ) -> ModelResponse :
1825 return ModelResponse (
1926 message = LDMessage (role = 'assistant' , content = content ),
@@ -30,7 +37,7 @@ def _make_summary() -> LDAIMetricSummary:
3037def _make_config_with_tracker (evaluator : Evaluator ) -> tuple [AICompletionConfig , MagicMock ]:
3138 """Build an AICompletionConfig with a fully-mocked tracker."""
3239 mock_tracker = MagicMock (spec = LDAIConfigTracker )
33- mock_tracker .track_metrics_of_async = AsyncMock (return_value = _make_model_response ())
40+ mock_tracker .track_metrics_of_async = AsyncMock (return_value = _make_runner_result ())
3441 mock_tracker .get_summary = MagicMock (return_value = _make_summary ())
3542 config = AICompletionConfig (
3643 key = 'test-config' ,
@@ -56,10 +63,10 @@ async def test_run_returns_managed_result(self):
5663 )
5764
5865 mock_runner = MagicMock ()
59- mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ('hi' ))
66+ mock_runner .invoke_model = AsyncMock (return_value = _make_runner_result ('hi' ))
6067
6168 mock_tracker = MagicMock (spec = LDAIConfigTracker )
62- mock_tracker .track_metrics_of_async = AsyncMock (return_value = _make_model_response ('hi' ))
69+ mock_tracker .track_metrics_of_async = AsyncMock (return_value = _make_runner_result ('hi' ))
6370 mock_tracker .get_summary = MagicMock (return_value = _make_summary ())
6471 config = AICompletionConfig (
6572 key = 'test-config' ,
@@ -96,7 +103,7 @@ async def _slow_evaluate(input_text: str, output_text: str) -> List[JudgeResult]
96103 )
97104
98105 mock_runner = MagicMock ()
99- mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ())
106+ mock_runner .invoke_model = AsyncMock (return_value = _make_runner_result ())
100107
101108 config , _tracker = _make_config_with_tracker (evaluator )
102109 model = ManagedModel (config , mock_runner )
@@ -130,7 +137,7 @@ async def _evaluate_coro(input_text: str, output_text: str) -> List[JudgeResult]
130137 )
131138
132139 mock_runner = MagicMock ()
133- mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ())
140+ mock_runner .invoke_model = AsyncMock (return_value = _make_runner_result ())
134141
135142 config , _tracker = _make_config_with_tracker (evaluator )
136143 model = ManagedModel (config , mock_runner )
@@ -160,7 +167,7 @@ async def _evaluate_coro(input_text: str, output_text: str) -> List[JudgeResult]
160167 )
161168
162169 mock_runner = MagicMock ()
163- mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ())
170+ mock_runner .invoke_model = AsyncMock (return_value = _make_runner_result ())
164171
165172 config , mock_tracker = _make_config_with_tracker (evaluator )
166173 mock_tracker .track_judge_result = MagicMock ()
@@ -195,7 +202,7 @@ async def _evaluate_coro(input_text: str, output_text: str) -> List[JudgeResult]
195202 )
196203
197204 mock_runner = MagicMock ()
198- mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ())
205+ mock_runner .invoke_model = AsyncMock (return_value = _make_runner_result ())
199206
200207 config , mock_tracker = _make_config_with_tracker (evaluator )
201208 mock_tracker .track_judge_result = MagicMock ()
@@ -212,7 +219,7 @@ async def test_noop_evaluator_returns_empty_list(self):
212219 evaluator = Evaluator .noop ()
213220
214221 mock_runner = MagicMock ()
215- mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ())
222+ mock_runner .invoke_model = AsyncMock (return_value = _make_runner_result ())
216223
217224 config , _tracker = _make_config_with_tracker (evaluator )
218225 model = ManagedModel (config , mock_runner )
@@ -232,7 +239,9 @@ async def test_invoke_emits_deprecation_warning(self):
232239 mock_runner = MagicMock ()
233240 mock_runner .invoke_model = AsyncMock (return_value = _make_model_response ())
234241
235- config , _tracker = _make_config_with_tracker (evaluator )
242+ config , mock_tracker = _make_config_with_tracker (evaluator )
243+ # invoke() expects a ModelResponse from the tracker, not a RunnerResult.
244+ mock_tracker .track_metrics_of_async = AsyncMock (return_value = _make_model_response ())
236245 model = ManagedModel (config , mock_runner )
237246
238247 with pytest .warns (DeprecationWarning , match = r"ManagedModel\.invoke\(\) is deprecated" ):
0 commit comments