diff --git a/tests/sdk/test_compatibility.py b/tests/sdk/test_compatibility.py index 2353aad..47c9cb1 100644 --- a/tests/sdk/test_compatibility.py +++ b/tests/sdk/test_compatibility.py @@ -36,6 +36,26 @@ def test_create(client, model, request_kwargs): completed(client.responses.create(**request_kwargs(model))) +@pytest.mark.parametrize('limit', [ + pytest.param(None, id='null'), + pytest.param(1, id='minimum'), + pytest.param(32, id='positive'), + pytest.param(2**64 - 1, id='u64-max'), +]) +@pytest.mark.parametrize('stream', [False, True]) +def test_max_output_tokens_hint(client, model, request_kwargs, limit, stream): + # This compatibility hint must not truncate the fixture's completed response. + response = client.responses.create(**request_kwargs( + model, max_output_tokens=limit, stream=stream)) + if stream: + with response: + events = list(response) + assert ''.join(e.delta for e in events if e.type == 'response.output_text.delta') == '你好' + completed(events[-1].response) + else: + completed(response) + + def input_cases(config): return { 'message_string': [{'role': 'user', 'content': 'Hello'}], @@ -174,7 +194,7 @@ def test_images_edit(client, config): @pytest.mark.parametrize('params', [ pytest.param({'store': True}, id='store'), - pytest.param({'max_output_tokens': 32}, id='max-output-tokens'), + pytest.param({'max_output_tokens': 0}, id='max-output-tokens-zero'), pytest.param({'previous_response_id': 'resp_1'}, id='previous-response-id'), pytest.param({'background': True}, id='background'), pytest.param({'tool_choice': 'required'}, id='tool-choice'), diff --git a/tests/sdk/test_parameters.py b/tests/sdk/test_parameters.py index 17c4b64..0819028 100644 --- a/tests/sdk/test_parameters.py +++ b/tests/sdk/test_parameters.py @@ -35,6 +35,8 @@ ('max-output-tokens-negative', {'max_output_tokens': -1}), ('max-output-tokens-fraction', {'max_output_tokens': 1.5}), ('max-output-tokens-type', {'max_output_tokens': '32'}), + ('max-output-tokens-bool', {'max_output_tokens': True}), + ('max-output-tokens-overflow', {'max_output_tokens': 2**64}), ('background', {'background': True}), ('store', {'store': True}), ('safety-identifier-type', {'safety_identifier': 42}),