Skip to content

Commit 7f60e03

Browse files
committed
Fix Bedrock Anthropic line separator handling on Windows
Resolves an issue where Bedrock Anthropic failed to handle line separators properly on Windows. Resolves #404
1 parent 680150e commit 7f60e03

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,18 @@ public class MessageToPromptConverter {
3737

3838
private String assistantPrompt = ASSISTANT_PROMPT;
3939

40-
private MessageToPromptConverter() {
40+
private final String lineSeparator;
41+
42+
private MessageToPromptConverter(String lineSeparator) {
43+
this.lineSeparator = lineSeparator;
4144
}
4245

4346
public static MessageToPromptConverter create() {
44-
return new MessageToPromptConverter();
47+
return create(System.lineSeparator());
48+
}
49+
50+
public static MessageToPromptConverter create(String lineSeparator) {
51+
return new MessageToPromptConverter(lineSeparator);
4552
}
4653

4754
public MessageToPromptConverter withHumanPrompt(String humanPrompt) {
@@ -67,8 +74,9 @@ public String toPrompt(List<Message> messages) {
6774
.map(this::messageToString)
6875
.collect(Collectors.joining(System.lineSeparator()));
6976

70-
final String prompt = systemMessages + System.lineSeparator() + System.lineSeparator() + userMessages
71-
+ System.lineSeparator() + ASSISTANT_PROMPT;
77+
// Related to: https://github.com/spring-projects/spring-ai/issues/404
78+
final String prompt = systemMessages + this.lineSeparator + this.lineSeparator + userMessages
79+
+ this.lineSeparator + ASSISTANT_PROMPT;
7280

7381
return prompt;
7482
}

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ public Flux<ChatResponse> stream(Prompt prompt) {
9393
*/
9494
AnthropicChatRequest createRequest(Prompt prompt) {
9595

96-
final String promptValue = MessageToPromptConverter.create().toPrompt(prompt.getInstructions());
96+
// Related to: https://github.com/spring-projects/spring-ai/issues/404
97+
final String promptValue = MessageToPromptConverter.create("\n").toPrompt(prompt.getInstructions());
9798

9899
AnthropicChatRequest request = AnthropicChatRequest.builder(promptValue).build();
99100

0 commit comments

Comments
 (0)