Skip to content

Commit 02743d7

Browse files
authored
Merge pull request #172 from johnoliver/fix-chat-history
Fix ChatHistory.getLast
2 parents cb1a616 + 0063606 commit 02743d7

File tree

1 file changed

+5
-6
lines changed
  • semantickernel-api/src/main/java/com/microsoft/semantickernel/services/chatcompletion

1 file changed

+5
-6
lines changed

semantickernel-api/src/main/java/com/microsoft/semantickernel/services/chatcompletion/ChatHistory.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
import com.microsoft.semantickernel.services.chatcompletion.message.ChatMessageTextContent;
66
import java.nio.charset.Charset;
77
import java.util.ArrayList;
8-
import java.util.Collection;
98
import java.util.Collections;
109
import java.util.Iterator;
1110
import java.util.List;
1211
import java.util.Optional;
1312
import java.util.Spliterator;
14-
import java.util.concurrent.ConcurrentLinkedQueue;
1513
import java.util.function.Consumer;
1614
import javax.annotation.Nullable;
1715

@@ -20,7 +18,7 @@
2018
*/
2119
public class ChatHistory implements Iterable<ChatMessageContent<?>> {
2220

23-
private final Collection<ChatMessageContent<?>> chatMessageContents;
21+
private final List<ChatMessageContent<?>> chatMessageContents;
2422

2523
/**
2624
* The default constructor
@@ -35,7 +33,7 @@ public ChatHistory() {
3533
* @param instructions The instructions to add to the chat history
3634
*/
3735
public ChatHistory(@Nullable String instructions) {
38-
this.chatMessageContents = new ConcurrentLinkedQueue<>();
36+
this.chatMessageContents = Collections.synchronizedList(new ArrayList<>());
3937
if (instructions != null) {
4038
this.chatMessageContents.add(
4139
ChatMessageTextContent.systemMessage(instructions));
@@ -48,7 +46,8 @@ public ChatHistory(@Nullable String instructions) {
4846
* @param chatMessageContents The chat message contents to add to the chat history
4947
*/
5048
public ChatHistory(List<? extends ChatMessageContent<?>> chatMessageContents) {
51-
this.chatMessageContents = new ConcurrentLinkedQueue<>(chatMessageContents);
49+
this.chatMessageContents = Collections
50+
.synchronizedList(new ArrayList<>(chatMessageContents));
5251
}
5352

5453
/**
@@ -70,7 +69,7 @@ public Optional<ChatMessageContent<?>> getLastMessage() {
7069
return Optional.empty();
7170
}
7271
return Optional
73-
.of(((ConcurrentLinkedQueue<ChatMessageContent<?>>) chatMessageContents).peek());
72+
.of(chatMessageContents.get(chatMessageContents.size() - 1));
7473
}
7574

7675
/**

0 commit comments

Comments
 (0)