|
10 | 10 | import dspy |
11 | 11 | from dspy.utils.usage_tracker import track_usage |
12 | 12 | from tests.test_utils.server import litellm_test_server, read_litellm_test_server_request_logs |
| 13 | +from litellm.utils import ModelResponse, Message, Choices |
13 | 14 |
|
14 | 15 |
|
15 | 16 | def test_chat_lms_can_be_queried(litellm_test_server): |
@@ -324,6 +325,44 @@ def mock_create(*args, **kwargs): |
324 | 325 | assert time_counter[i + 1] - time_counter[i] >= 2 ** (i - 1) |
325 | 326 |
|
326 | 327 |
|
| 328 | +def test_logprobs_included_when_requested(): |
| 329 | + lm = dspy.LM(model="dspy-test-model", logprobs=True, cache=False) |
| 330 | + with mock.patch("litellm.completion") as mock_completion: |
| 331 | + mock_completion.return_value = ModelResponse( |
| 332 | + choices=[ |
| 333 | + Choices( |
| 334 | + message=Message(content="test answer"), |
| 335 | + logprobs={ |
| 336 | + "content": [ |
| 337 | + {"token": "test", "logprob": 0.1, "top_logprobs": [{"token": "test", "logprob": 0.1}]}, |
| 338 | + {"token": "answer", "logprob": 0.2, "top_logprobs": [{"token": "answer", "logprob": 0.2}]}, |
| 339 | + ] |
| 340 | + }, |
| 341 | + ) |
| 342 | + ], |
| 343 | + model="dspy-test-model", |
| 344 | + ) |
| 345 | + result = lm("question") |
| 346 | + assert result[0]["text"] == "test answer" |
| 347 | + assert result[0]["logprobs"].dict() == { |
| 348 | + "content": [ |
| 349 | + { |
| 350 | + "token": "test", |
| 351 | + "bytes": None, |
| 352 | + "logprob": 0.1, |
| 353 | + "top_logprobs": [{"token": "test", "bytes": None, "logprob": 0.1}], |
| 354 | + }, |
| 355 | + { |
| 356 | + "token": "answer", |
| 357 | + "bytes": None, |
| 358 | + "logprob": 0.2, |
| 359 | + "top_logprobs": [{"token": "answer", "bytes": None, "logprob": 0.2}], |
| 360 | + }, |
| 361 | + ] |
| 362 | + } |
| 363 | + assert mock_completion.call_args.kwargs["logprobs"] == True |
| 364 | + |
| 365 | + |
327 | 366 | @pytest.mark.asyncio |
328 | 367 | async def test_async_lm_call(): |
329 | 368 | from litellm.utils import ModelResponse, Message, Choices |
|
0 commit comments