@@ -28,6 +28,7 @@ import com.google.cloud.vertexai.api.GenerationConfig;
|
||||
import com.google.cloud.vertexai.api.Part;
|
||||
import com.google.cloud.vertexai.api.Schema;
|
||||
import com.google.cloud.vertexai.api.Tool;
|
||||
import com.google.cloud.vertexai.generativeai.ContentMaker;
|
||||
import com.google.cloud.vertexai.generativeai.GenerativeModel;
|
||||
import com.google.cloud.vertexai.generativeai.PartMaker;
|
||||
import com.google.cloud.vertexai.generativeai.ResponseStream;
|
||||
@@ -258,6 +259,16 @@ public class VertexAiGeminiChatModel
|
||||
|
||||
GenerativeModel generativeModel = generativeModelBuilder.build();
|
||||
|
||||
String systemContext = prompt.getInstructions()
|
||||
.stream()
|
||||
.filter(m -> m.getMessageType() == MessageType.SYSTEM)
|
||||
.map(m -> m.getContent())
|
||||
.collect(Collectors.joining(System.lineSeparator()));
|
||||
|
||||
if (StringUtils.hasText(systemContext)) {
|
||||
generativeModel.withSystemInstruction(ContentMaker.fromString(systemContext));
|
||||
}
|
||||
|
||||
return new GeminiRequest(toGeminiContent(prompt), generativeModel);
|
||||
}
|
||||
|
||||
@@ -289,18 +300,12 @@ public class VertexAiGeminiChatModel
|
||||
|
||||
private List<Content> toGeminiContent(Prompt prompt) {
|
||||
|
||||
String systemContext = prompt.getInstructions()
|
||||
.stream()
|
||||
.filter(m -> m.getMessageType() == MessageType.SYSTEM)
|
||||
.map(m -> m.getContent())
|
||||
.collect(Collectors.joining(System.lineSeparator()));
|
||||
|
||||
List<Content> contents = prompt.getInstructions()
|
||||
.stream()
|
||||
.filter(m -> m.getMessageType() == MessageType.USER || m.getMessageType() == MessageType.ASSISTANT)
|
||||
.map(message -> Content.newBuilder()
|
||||
.setRole(toGeminiMessageType(message.getMessageType()).getValue())
|
||||
.addAllParts(messageToGeminiParts(message, systemContext))
|
||||
.addAllParts(messageToGeminiParts(message))
|
||||
.build())
|
||||
.toList();
|
||||
|
||||
@@ -321,14 +326,11 @@ public class VertexAiGeminiChatModel
|
||||
}
|
||||
}
|
||||
|
||||
static List<Part> messageToGeminiParts(Message message, String systemContext) {
|
||||
static List<Part> messageToGeminiParts(Message message) {
|
||||
|
||||
if (message instanceof UserMessage userMessage) {
|
||||
|
||||
String messageTextContent = (userMessage.getContent() == null) ? "null" : userMessage.getContent();
|
||||
if (StringUtils.hasText(systemContext)) {
|
||||
messageTextContent = systemContext + "\n\n" + messageTextContent;
|
||||
}
|
||||
Part textPart = Part.newBuilder().setText(messageTextContent).build();
|
||||
|
||||
List<Part> parts = new ArrayList<>(List.of(textPart));
|
||||
|
||||
@@ -28,7 +28,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.ai.chat.messages.AssistantMessage;
|
||||
import org.springframework.ai.chat.messages.Message;
|
||||
import org.springframework.ai.chat.messages.SystemMessage;
|
||||
import org.springframework.ai.chat.messages.UserMessage;
|
||||
import org.springframework.ai.chat.model.ChatResponse;
|
||||
import org.springframework.ai.chat.model.Generation;
|
||||
|
||||
Reference in New Issue
Block a user