Skip to content

Commit b6a4d26

Browse files
Add missing test for logprob field (#8115)
1 parent 6efbb5d commit b6a4d26

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

tests/clients/test_lm.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import dspy
1111
from dspy.utils.usage_tracker import track_usage
1212
from tests.test_utils.server import litellm_test_server, read_litellm_test_server_request_logs
13+
from litellm.utils import ModelResponse, Message, Choices
1314

1415

1516
def test_chat_lms_can_be_queried(litellm_test_server):
@@ -324,6 +325,44 @@ def mock_create(*args, **kwargs):
324325
assert time_counter[i + 1] - time_counter[i] >= 2 ** (i - 1)
325326

326327

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+
327366
@pytest.mark.asyncio
328367
async def test_async_lm_call():
329368
from litellm.utils import ModelResponse, Message, Choices

0 commit comments

Comments
 (0)