3030public  class  OpenAiUnifiedChatCompletionRequestTests  extends  ESTestCase  {
3131
3232    public  void  testCreateRequest_WithUrlOrganizationUserDefined () throws  IOException  {
33-         var  request  = createRequest ("www.google.com" , "org" , "secret" , "abc" , "model" , "user" );
33+         var  request  = createRequest ("www.google.com" , "org" , "secret" , "abc" , "model" , "user" ,  true );
3434        var  httpRequest  = request .createHttpRequest ();
3535
3636        assertThat (httpRequest .httpRequestBase (), instanceOf (HttpPost .class ));
@@ -42,16 +42,27 @@ public void testCreateRequest_WithUrlOrganizationUserDefined() throws IOExceptio
4242        assertThat (httpPost .getLastHeader (ORGANIZATION_HEADER ).getValue (), is ("org" ));
4343
4444        var  requestMap  = entityAsMap (httpPost .getEntity ().getContent ());
45-         assertThat (requestMap , aMapWithSize (5 ));
45+         assertRequestMapWithUser (requestMap , "user" );
46+     }
47+ 
48+     private  void  assertRequestMapWithoutUser (Map <String , Object > requestMap ) {
49+         assertRequestMapWithUser (requestMap , null );
50+     }
51+ 
52+     private  void  assertRequestMapWithUser (Map <String , Object > requestMap , @ Nullable  String  user ) {
53+         assertThat (requestMap , aMapWithSize (user  != null  ? 6  : 5 ));
4654        assertThat (requestMap .get ("messages" ), is (List .of (Map .of ("role" , "user" , "content" , "abc" ))));
4755        assertThat (requestMap .get ("model" ), is ("model" ));
48-         assertThat (requestMap .get ("user" ), is ("user" ));
56+         if  (user  != null ) {
57+             assertThat (requestMap .get ("user" ), is (user ));
58+         }
4959        assertThat (requestMap .get ("n" ), is (1 ));
5060        assertTrue ((Boolean ) requestMap .get ("stream" ));
61+         assertThat (requestMap .get ("stream_options" ), is (Map .of ("include_usage" , true )));
5162    }
5263
5364    public  void  testCreateRequest_WithDefaultUrl () throws  URISyntaxException , IOException  {
54-         var  request  = createRequest (null , "org" , "secret" , "abc" , "model" , "user" );
65+         var  request  = createRequest (null , "org" , "secret" , "abc" , "model" , "user" ,  true );
5566        var  httpRequest  = request .createHttpRequest ();
5667
5768        assertThat (httpRequest .httpRequestBase (), instanceOf (HttpPost .class ));
@@ -63,16 +74,12 @@ public void testCreateRequest_WithDefaultUrl() throws URISyntaxException, IOExce
6374        assertThat (httpPost .getLastHeader (ORGANIZATION_HEADER ).getValue (), is ("org" ));
6475
6576        var  requestMap  = entityAsMap (httpPost .getEntity ().getContent ());
66-         assertThat (requestMap , aMapWithSize (5 ));
67-         assertThat (requestMap .get ("messages" ), is (List .of (Map .of ("role" , "user" , "content" , "abc" ))));
68-         assertThat (requestMap .get ("model" ), is ("model" ));
69-         assertThat (requestMap .get ("user" ), is ("user" ));
70-         assertThat (requestMap .get ("n" ), is (1 ));
71-         assertTrue ((Boolean ) requestMap .get ("stream" ));
77+         assertRequestMapWithUser (requestMap , "user" );
78+ 
7279    }
7380
7481    public  void  testCreateRequest_WithDefaultUrlAndWithoutUserOrganization () throws  URISyntaxException , IOException  {
75-         var  request  = createRequest (null , null , "secret" , "abc" , "model" , null );
82+         var  request  = createRequest (null , null , "secret" , "abc" , "model" , null ,  true );
7683        var  httpRequest  = request .createHttpRequest ();
7784
7885        assertThat (httpRequest .httpRequestBase (), instanceOf (HttpPost .class ));
@@ -84,14 +91,10 @@ public void testCreateRequest_WithDefaultUrlAndWithoutUserOrganization() throws
8491        assertNull (httpPost .getLastHeader (ORGANIZATION_HEADER ));
8592
8693        var  requestMap  = entityAsMap (httpPost .getEntity ().getContent ());
87-         assertThat (requestMap , aMapWithSize (4 ));
88-         assertThat (requestMap .get ("messages" ), is (List .of (Map .of ("role" , "user" , "content" , "abc" ))));
89-         assertThat (requestMap .get ("model" ), is ("model" ));
90-         assertThat (requestMap .get ("n" ), is (1 ));
91-         assertTrue ((Boolean ) requestMap .get ("stream" ));
94+         assertRequestMapWithoutUser (requestMap );
9295    }
9396
94-     public  void  testCreateRequest_WithStreaming () throws  URISyntaxException ,  IOException  {
97+     public  void  testCreateRequest_WithStreaming () throws  IOException  {
9598        var  request  = createRequest (null , null , "secret" , "abc" , "model" , null , true );
9699        var  httpRequest  = request .createHttpRequest ();
97100
@@ -103,7 +106,7 @@ public void testCreateRequest_WithStreaming() throws URISyntaxException, IOExcep
103106    }
104107
105108    public  void  testTruncate_DoesNotReduceInputTextSize () throws  URISyntaxException , IOException  {
106-         var  request  = createRequest (null , null , "secret" , "abcd" , "model" , null );
109+         var  request  = createRequest (null , null , "secret" , "abcd" , "model" , null ,  true );
107110        var  truncatedRequest  = request .truncate ();
108111        assertThat (request .getURI ().toString (), is (OpenAiUnifiedChatCompletionRequest .buildDefaultUri ().toString ()));
109112
@@ -112,17 +115,18 @@ public void testTruncate_DoesNotReduceInputTextSize() throws URISyntaxException,
112115
113116        var  httpPost  = (HttpPost ) httpRequest .httpRequestBase ();
114117        var  requestMap  = entityAsMap (httpPost .getEntity ().getContent ());
115-         assertThat (requestMap , aMapWithSize (4 ));
118+         assertThat (requestMap , aMapWithSize (5 ));
116119
117120        // We do not truncate for OpenAi chat completions 
118121        assertThat (requestMap .get ("messages" ), is (List .of (Map .of ("role" , "user" , "content" , "abcd" ))));
119122        assertThat (requestMap .get ("model" ), is ("model" ));
120123        assertThat (requestMap .get ("n" ), is (1 ));
121124        assertTrue ((Boolean ) requestMap .get ("stream" ));
125+         assertThat (requestMap .get ("stream_options" ), is (Map .of ("include_usage" , true )));
122126    }
123127
124128    public  void  testTruncationInfo_ReturnsNull () {
125-         var  request  = createRequest (null , null , "secret" , "abcd" , "model" , null );
129+         var  request  = createRequest (null , null , "secret" , "abcd" , "model" , null ,  true );
126130        assertNull (request .getTruncationInfo ());
127131    }
128132
@@ -147,7 +151,7 @@ public static OpenAiUnifiedChatCompletionRequest createRequest(
147151        boolean  stream 
148152    ) {
149153        var  chatCompletionModel  = OpenAiChatCompletionModelTests .createChatCompletionModel (url , org , apiKey , model , user );
150-         return  new  OpenAiUnifiedChatCompletionRequest (new  UnifiedChatInput (List .of (input ), "user" , true ), chatCompletionModel );
154+         return  new  OpenAiUnifiedChatCompletionRequest (new  UnifiedChatInput (List .of (input ), "user" , stream ), chatCompletionModel );
151155    }
152156
153157}
0 commit comments