File tree Expand file tree Collapse file tree 2 files changed +28
-2
lines changed
main/java/com/google/adk/models/langchain4j
test/java/com/google/adk/models/langchain4j Expand file tree Collapse file tree 2 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -607,8 +607,11 @@ private List<Part> toParts(AiMessage aiMessage) {
607607 });
608608 return parts ;
609609 } else {
610- Part part = Part .builder ().text (aiMessage .text ()).build ();
611- return List .of (part );
610+ String text = aiMessage .text ();
611+ if (text == null ) {
612+ return List .of ();
613+ }
614+ return List .of (Part .builder ().text (text ).build ());
612615 }
613616 }
614617
Original file line number Diff line number Diff line change @@ -970,4 +970,27 @@ void testNoUsageMetadataWithoutEstimator() {
970970 // IMPORTANT: usageMetadata should be empty when no TokenUsage and no estimator
971971 assertThat (response .usageMetadata ()).isEmpty ();
972972 }
973+
974+ @ Test
975+ @ DisplayName ("Should handle null AiMessage text without throwing NPE" )
976+ void testGenerateContentWithNullAiMessageText () {
977+ // Given
978+ final LlmRequest llmRequest =
979+ LlmRequest .builder ().contents (List .of (Content .fromParts (Part .fromText ("Hello" )))).build ();
980+
981+ final ChatResponse chatResponse = mock (ChatResponse .class );
982+ final AiMessage aiMessage = mock (AiMessage .class );
983+ when (aiMessage .text ()).thenReturn (null );
984+ when (aiMessage .hasToolExecutionRequests ()).thenReturn (false );
985+ when (chatResponse .aiMessage ()).thenReturn (aiMessage );
986+ when (chatModel .chat (any (ChatRequest .class ))).thenReturn (chatResponse );
987+
988+ // When
989+ final Flowable <LlmResponse > responseFlowable = langChain4j .generateContent (llmRequest , false );
990+ final LlmResponse response = responseFlowable .blockingFirst ();
991+ // Then - no NPE thrown, and content has no text parts
992+ assertThat (response ).isNotNull ();
993+ assertThat (response .content ()).isPresent ();
994+ assertThat (response .content ().get ().parts ().orElse (List .of ())).isEmpty ();
995+ }
973996}
You can’t perform that action at this time.
0 commit comments