Claude_Code / tests /providers /test_nvidia_nim_request.py
Jainish1808
Move project files to repository root for Hugging Face Space
bf177ff
Raw
History Blame Contribute Delete
4.57 kB
"""Tests for providers/nvidia_nim/request.py."""
from unittest.mock import MagicMock
import pytest
from config.nim import NimSettings
from providers.common.utils import set_if_not_none
from providers.nvidia_nim.request import (
_set_extra,
build_request_body,
)
@pytest.fixture
def req():
r = MagicMock()
r.model = "test"
r.messages = [MagicMock(role="user", content="hi")]
r.max_tokens = 100
r.system = None
r.temperature = None
r.top_p = None
r.stop_sequences = None
r.tools = None
r.tool_choice = None
r.extra_body = None
r.top_k = None
return r
class TestSetIfNotNone:
def test_value_not_none_sets(self):
body = {}
set_if_not_none(body, "key", "value")
assert body["key"] == "value"
def test_value_none_skips(self):
body = {}
set_if_not_none(body, "key", None)
assert "key" not in body
class TestSetExtra:
def test_key_in_extra_body_skips(self):
extra = {"top_k": 42}
_set_extra(extra, "top_k", 10)
assert extra["top_k"] == 42
def test_value_none_skips(self):
extra = {}
_set_extra(extra, "top_k", None)
assert "top_k" not in extra
def test_value_equals_ignore_value_skips(self):
extra = {}
_set_extra(extra, "top_k", -1, ignore_value=-1)
assert "top_k" not in extra
def test_value_set_when_valid(self):
extra = {}
_set_extra(extra, "top_k", 10, ignore_value=-1)
assert extra["top_k"] == 10
class TestBuildRequestBody:
def test_max_tokens_capped_by_nim(self, req):
req.max_tokens = 100000
nim = NimSettings(max_tokens=4096)
body = build_request_body(req, nim)
assert body["max_tokens"] == 4096
def test_presence_penalty_included_when_nonzero(self, req):
nim = NimSettings(presence_penalty=0.5)
body = build_request_body(req, nim)
assert body["presence_penalty"] == 0.5
def test_include_stop_str_in_output_not_sent(self, req):
body = build_request_body(req, NimSettings())
assert "include_stop_str_in_output" not in body.get("extra_body", {})
def test_parallel_tool_calls_included(self, req):
nim = NimSettings(parallel_tool_calls=False)
body = build_request_body(req, nim)
assert body["parallel_tool_calls"] is False
def test_reasoning_params_in_extra_body(self):
req = MagicMock()
req.model = "test"
req.messages = [MagicMock(role="user", content="hi")]
req.max_tokens = 100
req.system = None
req.temperature = None
req.top_p = None
req.stop_sequences = None
req.tools = None
req.tool_choice = None
req.extra_body = None
req.top_k = None
nim = NimSettings(enable_thinking=True)
body = build_request_body(req, nim)
extra = body["extra_body"]
assert extra["chat_template_kwargs"] == {
"thinking": True,
"enable_thinking": True,
}
assert extra["reasoning_budget"] == body["max_tokens"]
def test_no_chat_template_kwargs_when_thinking_disabled(self):
req = MagicMock()
req.model = "test"
req.messages = [MagicMock(role="user", content="hi")]
req.max_tokens = 100
req.system = None
req.temperature = None
req.top_p = None
req.stop_sequences = None
req.tools = None
req.tool_choice = None
req.extra_body = None
req.top_k = None
nim = NimSettings(enable_thinking=False)
body = build_request_body(req, nim)
extra = body.get("extra_body", {})
assert "chat_template_kwargs" not in extra
assert "reasoning_budget" not in extra
def test_no_reasoning_params_in_extra_body(self):
req = MagicMock()
req.model = "test"
req.messages = [MagicMock(role="user", content="hi")]
req.max_tokens = 100
req.system = None
req.temperature = None
req.top_p = None
req.stop_sequences = None
req.tools = None
req.tool_choice = None
req.extra_body = None
req.top_k = None
nim = NimSettings()
body = build_request_body(req, nim)
extra = body.get("extra_body", {})
for param in (
"thinking",
"reasoning_split",
"return_tokens_as_token_ids",
"include_reasoning",
"reasoning_effort",
):
assert param not in extra