@@ -306,3 +306,97 @@ def test_config_base_url_overrides_env(self, mock_urlopen):
306306
307307 call_args = mock_urlopen .call_args [0 ][0 ]
308308 assert call_args .full_url == f"{ config_base_url } /v1/chat/completions"
309+
310+ @patch ("edgee.urlopen" )
311+ def test_send_with_compression_response (self , mock_urlopen ):
312+ """Should handle response with compression field"""
313+ mock_response_data = {
314+ "choices" : [
315+ {
316+ "index" : 0 ,
317+ "message" : {"role" : "assistant" , "content" : "Response" },
318+ "finish_reason" : "stop" ,
319+ }
320+ ],
321+ "usage" : {"prompt_tokens" : 100 , "completion_tokens" : 50 , "total_tokens" : 150 },
322+ "compression" : {
323+ "input_tokens" : 100 ,
324+ "saved_tokens" : 42 ,
325+ "rate" : 0.6102003642987249 ,
326+ },
327+ }
328+ mock_urlopen .return_value = self ._mock_response (mock_response_data )
329+
330+ client = Edgee ("test-api-key" )
331+ result = client .send (model = "gpt-4" , input = "Test" )
332+
333+ assert result .compression is not None
334+ assert result .compression .input_tokens == 100
335+ assert result .compression .saved_tokens == 42
336+ assert result .compression .rate == 0.6102003642987249
337+
338+ @patch ("edgee.urlopen" )
339+ def test_send_without_compression_response (self , mock_urlopen ):
340+ """Should handle response without compression field"""
341+ mock_response_data = {
342+ "choices" : [
343+ {
344+ "index" : 0 ,
345+ "message" : {"role" : "assistant" , "content" : "Response" },
346+ "finish_reason" : "stop" ,
347+ }
348+ ],
349+ }
350+ mock_urlopen .return_value = self ._mock_response (mock_response_data )
351+
352+ client = Edgee ("test-api-key" )
353+ result = client .send (model = "gpt-4" , input = "Test" )
354+
355+ assert result .compression is None
356+
357+ @patch ("edgee.urlopen" )
358+ def test_send_with_compression_response (self , mock_urlopen ):
359+ """Should handle response with compression field"""
360+ mock_response_data = {
361+ "choices" : [
362+ {
363+ "index" : 0 ,
364+ "message" : {"role" : "assistant" , "content" : "Response" },
365+ "finish_reason" : "stop" ,
366+ }
367+ ],
368+ "usage" : {"prompt_tokens" : 100 , "completion_tokens" : 50 , "total_tokens" : 150 },
369+ "compression" : {
370+ "input_tokens" : 100 ,
371+ "saved_tokens" : 42 ,
372+ "rate" : 0.6102003642987249 ,
373+ },
374+ }
375+ mock_urlopen .return_value = self ._mock_response (mock_response_data )
376+
377+ client = Edgee ("test-api-key" )
378+ result = client .send (model = "gpt-4" , input = "Test" )
379+
380+ assert result .compression is not None
381+ assert result .compression .input_tokens == 100
382+ assert result .compression .saved_tokens == 42
383+ assert result .compression .rate == 0.6102003642987249
384+
385+ @patch ("edgee.urlopen" )
386+ def test_send_without_compression_response (self , mock_urlopen ):
387+ """Should handle response without compression field"""
388+ mock_response_data = {
389+ "choices" : [
390+ {
391+ "index" : 0 ,
392+ "message" : {"role" : "assistant" , "content" : "Response" },
393+ "finish_reason" : "stop" ,
394+ }
395+ ],
396+ }
397+ mock_urlopen .return_value = self ._mock_response (mock_response_data )
398+
399+ client = Edgee ("test-api-key" )
400+ result = client .send (model = "gpt-4" , input = "Test" )
401+
402+ assert result .compression is None
0 commit comments