Skip to content

Commit 8d45caf

Browse files
authored
Refactor: Add null check, optimize string joining, and add JavaDocs (#3663)
* Refactor: Add null check, optimize string joining, and add JavaDocs Auto-cherry-pick to 1.0.x Fixes #3663 Signed-off-by: nirsa <islandtim@naver.com>
1 parent 4ec73e2 commit 8d45caf

File tree

1 file changed

+11
-1
lines changed
  • models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api

1 file changed

+11
-1
lines changed

models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.concurrent.atomic.AtomicBoolean;
2222
import java.util.function.Consumer;
2323
import java.util.function.Predicate;
24+
import java.util.stream.Collectors;
2425

2526
import com.fasterxml.jackson.annotation.JsonFormat;
2627
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -144,11 +145,20 @@ public OpenAiApi(String baseUrl, ApiKey apiKey, MultiValueMap<String, String> he
144145
.build(); // @formatter:on
145146
}
146147

148+
/**
149+
* Returns a string containing all text values from the given media content list. Only
150+
* elements of type "text" are processed and concatenated in order.
151+
* @param content The list of {@link ChatCompletionMessage.MediaContent}
152+
* @return a string containing all text values from "text" type elements
153+
* @throws IllegalArgumentException if content is null
154+
*/
147155
public static String getTextContent(List<ChatCompletionMessage.MediaContent> content) {
156+
Assert.notNull(content, "content cannot be null");
157+
148158
return content.stream()
149159
.filter(c -> "text".equals(c.type()))
150160
.map(ChatCompletionMessage.MediaContent::text)
151-
.reduce("", (a, b) -> a + b);
161+
.collect(Collectors.joining());
152162
}
153163

154164
/**

0 commit comments

Comments
 (0)