@@ -350,4 +350,60 @@ public void userMessageWithMultipleImageFormats() {
350350 }
351351 }
352352
353+ @ Test
354+ public void userMessageWithOnlyFileMedia () {
355+ given (this .openAiApi .chatCompletionEntity (this .pomptCaptor .capture (), this .headersCaptor .capture ()))
356+ .willReturn (Mockito .mock (ResponseEntity .class ));
357+
358+ byte [] pdfData = "%PDF-1.7" .getBytes (StandardCharsets .UTF_8 );
359+ Media pdfMedia = Media .builder ()
360+ .mimeType (MimeType .valueOf ("application/pdf" ))
361+ .data (new ByteArrayResource (pdfData ))
362+ .build ();
363+
364+ this .chatModel .call (new Prompt (
365+ List .of (UserMessage .builder ().text ("Analyze this document" ).media (List .of (pdfMedia )).build ())));
366+
367+ ChatCompletionRequest request = this .pomptCaptor .getValue ();
368+ assertThat (request .messages ()).hasSize (1 );
369+ var userMessage = request .messages ().get (0 );
370+ assertThat (userMessage .rawContent ()).isInstanceOf (List .class );
371+
372+ @ SuppressWarnings ("unchecked" )
373+ List <Map <String , Object >> mediaContents = (List <Map <String , Object >>) userMessage .rawContent ();
374+ assertThat (mediaContents ).hasSize (2 ); // text + file
375+
376+ // Text content
377+ Map <String , Object > textContent = mediaContents .get (0 );
378+ assertThat (textContent .get ("type" )).isEqualTo ("text" );
379+ assertThat (textContent .get ("text" )).isEqualTo ("Analyze this document" );
380+
381+ // File content
382+ Map <String , Object > fileContent = mediaContents .get (1 );
383+ assertThat (fileContent .get ("type" )).isEqualTo ("file" );
384+ assertThat (fileContent ).containsKey ("file" );
385+ }
386+
387+ @ Test
388+ public void systemMessageWithMultipleMessages () {
389+ given (this .openAiApi .chatCompletionEntity (this .pomptCaptor .capture (), this .headersCaptor .capture ()))
390+ .willReturn (Mockito .mock (ResponseEntity .class ));
391+
392+ this .chatModel .call (new Prompt (List .of (new SystemMessage ("First system message" ),
393+ new SystemMessage ("Second system message" ), new UserMessage ("User query" ))));
394+
395+ ChatCompletionRequest request = this .pomptCaptor .getValue ();
396+ assertThat (request .messages ()).hasSize (3 );
397+
398+ // All messages should have string content
399+ for (int i = 0 ; i < 3 ; i ++) {
400+ var message = request .messages ().get (i );
401+ assertThat (message .rawContent ()).isInstanceOf (String .class );
402+ }
403+
404+ assertThat (request .messages ().get (0 ).content ()).isEqualTo ("First system message" );
405+ assertThat (request .messages ().get (1 ).content ()).isEqualTo ("Second system message" );
406+ assertThat (request .messages ().get (2 ).content ()).isEqualTo ("User query" );
407+ }
408+
353409}
0 commit comments