Skip to content

Commit 11192db

Browse files
author
Jicheng Lu
committed
add intermediate message
1 parent 7dd0fae commit 11192db

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed

src/lib/helpers/types/conversationTypes.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ IRichContent.prototype.language;
168168
* @property {boolean} has_message_files
169169
* @property {boolean} is_chat_message
170170
* @property {boolean} is_streaming
171+
* @property {boolean} is_dummy
172+
* @property {boolean} is_appended
171173
* @property {string} [indication]
172174
*/
173175

src/lib/services/signalr-service.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ export const signalr = {
2121
/** @type {import('$conversationTypes').OnMessageReceived} */
2222
onMessageReceivedFromAssistant: () => {},
2323

24+
/** @type {import('$conversationTypes').OnMessageReceived} */
25+
onIntermediateMessageReceivedFromAssistant: () => {},
26+
2427
/** @type {import('$conversationTypes').OnMessageReceived} */
2528
onNotificationGenerated: () => {},
2629

@@ -109,6 +112,15 @@ export const signalr = {
109112
}
110113
});
111114

115+
connection.on('OnIntermediateMessageReceivedFromAssistant', (message) => {
116+
// do something when receiving a message, such as updating the UI or showing a notification
117+
const obj = JSON.parse(message);
118+
if (conversationId === obj?.conversation_id) {
119+
console.log(`[OnIntermediateMessageReceivedFromAssistant] ${obj.sender.role}: ${obj.text}`);
120+
this.onIntermediateMessageReceivedFromAssistant(obj);
121+
}
122+
});
123+
112124
connection.on('OnNotificationGenerated', (message) => {
113125
const obj = JSON.parse(message);
114126
if (conversationId === obj?.conversation_id) {

src/routes/chat/[agentId]/[conversationId]/chat-box.svelte

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@
244244
signalr.onMessageReceivedFromClient = onMessageReceivedFromClient;
245245
signalr.onMessageReceivedFromCsr = onMessageReceivedFromClient;
246246
signalr.onMessageReceivedFromAssistant = onMessageReceivedFromAssistant;
247+
signalr.onIntermediateMessageReceivedFromAssistant = onIntermediateMessageReceivedFromAssistant;
247248
248249
signalr.beforeReceiveLlmStreamMessage = beforeReceiveLlmStreamMessage;
249250
signalr.onReceiveLlmStreamMessage = onReceiveLlmStreamMessage;
@@ -522,6 +523,7 @@
522523
if (!message.is_streaming) {
523524
if (dialogs[dialogs.length - 1]?.message_id === message.message_id
524525
&& dialogs[dialogs.length - 1]?.sender?.role === UserRole.Assistant
526+
&& !dialogs[dialogs.length - 1]?.is_appended
525527
) {
526528
dialogs[dialogs.length - 1] = {
527529
...message,
@@ -544,6 +546,30 @@
544546
}
545547
}
546548
549+
/** @param {import('$conversationTypes').ChatResponseModel} message */
550+
function onIntermediateMessageReceivedFromAssistant(message) {
551+
const idx = dialogs.findLastIndex(x => x.is_dummy);
552+
if (idx >= 0) {
553+
dialogs.splice(idx, 0, {
554+
...message,
555+
is_chat_message: true,
556+
is_appended: true
557+
});
558+
} else {
559+
dialogs.push({
560+
...message,
561+
is_chat_message: true,
562+
is_appended: true
563+
});
564+
}
565+
566+
refresh();
567+
568+
if (isFrame) {
569+
window.parent.postMessage(message, "*");
570+
}
571+
}
572+
547573
/** @param {import('$conversationTypes').ChatResponseModel} message */
548574
function beforeReceiveLlmStreamMessage(message) {
549575
isStreaming = true;
@@ -552,7 +578,8 @@
552578
) {
553579
dialogs.push({
554580
...message,
555-
is_chat_message: false
581+
is_chat_message: false,
582+
is_dummy: true
556583
});
557584
}
558585
refresh();
@@ -566,7 +593,7 @@
566593
567594
if (!USE_MESSAGE_QUEUE) {
568595
if (lastMsg?.sender?.role === UserRole.Assistant
569-
&& lastMsg?.message_id === message.message_id
596+
&& lastMsg?.is_dummy
570597
) {
571598
setTimeout(() => {
572599
dialogs[dialogs.length - 1].text += message.text;
@@ -593,7 +620,7 @@
593620
594621
const lastMsg = dialogs[dialogs.length - 1];
595622
if (lastMsg?.sender?.role !== UserRole.Assistant
596-
|| lastMsg?.message_id !== message.message_id
623+
|| !lastMsg?.is_dummy
597624
) {
598625
continue;
599626
}

0 commit comments

Comments
 (0)