diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java index 6925c16ee..cff4f8674 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java @@ -16,6 +16,10 @@ package org.springframework.ai.chat; import org.springframework.ai.chat.prompt.Prompt; + +import java.util.Arrays; + +import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.model.ModelClient; @@ -28,6 +32,12 @@ public interface ChatClient extends ModelClient { return (generation != null) ? generation.getOutput().getContent() : ""; } + default String call(Message... messages) { + Prompt prompt = new Prompt(Arrays.asList(messages)); + Generation generation = call(prompt).getResult(); + return (generation != null) ? generation.getOutput().getContent() : ""; + } + @Override ChatResponse call(Prompt prompt); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java index a6e4a0b76..642d72022 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java @@ -15,8 +15,11 @@ */ package org.springframework.ai.chat; +import java.util.Arrays; + import reactor.core.publisher.Flux; +import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.StreamingModelClient; @@ -30,6 +33,13 @@ public interface StreamingChatClient extends StreamingModelClient call(Message... messages) { + Prompt prompt = new Prompt(Arrays.asList(messages)); + return stream(prompt).map(response -> (response.getResult() == null || response.getResult().getOutput() == null + || response.getResult().getOutput().getContent() == null) ? "" + : response.getResult().getOutput().getContent()); + } + @Override Flux stream(Prompt prompt); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java index d981a67ed..4c9229516 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java @@ -15,6 +15,7 @@ */ package org.springframework.ai.chat.messages; +import java.util.Arrays; import java.util.List; import org.springframework.core.io.Resource; @@ -38,6 +39,10 @@ public class UserMessage extends AbstractMessage { super(MessageType.USER, textContent, mediaList); } + public UserMessage(String textContent, Media... media) { + this(textContent, Arrays.asList(media)); + } + @Override public String toString() { return "UserMessage{" + "content='" + getContent() + '\'' + ", properties=" + properties + ", messageType="