Skip to content

Commit e41b123

Browse files
authored
Fix: stream static msg references (#521)
stream static msg references
1 parent 804bd59 commit e41b123

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

packages/mongodb-chatbot-server/src/processors/makeVerifiedAnswerGenerateUserPrompt.test.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ import { VerifiedAnswer, WithScore } from "mongodb-rag-core";
44
describe("makeVerifiedAnswerGenerateUserPrompt", () => {
55
it("uses verified answer if available, onNoVerifiedAnswerFound otherwise", async () => {
66
const MAGIC_VERIFIABLE = "VERIFIABLE";
7+
const references = [
8+
{
9+
title: "title",
10+
url: "url",
11+
},
12+
];
713
const generatePrompt = makeVerifiedAnswerGenerateUserPrompt({
814
findVerifiedAnswer: async ({ query }) => {
915
return {
@@ -12,7 +18,19 @@ describe("makeVerifiedAnswerGenerateUserPrompt", () => {
1218
query === MAGIC_VERIFIABLE
1319
? ({
1420
answer: "verified answer",
15-
} as unknown as WithScore<VerifiedAnswer>)
21+
_id: "123",
22+
author_email: "[email protected]",
23+
created: new Date(),
24+
references,
25+
question: {
26+
text: "question",
27+
embedding: [1, 2, 3],
28+
embedding_model: "model",
29+
embedding_model_version: "version",
30+
},
31+
updated: new Date(),
32+
score: 1,
33+
} satisfies WithScore<VerifiedAnswer>)
1634
: undefined,
1735
};
1836
},
@@ -42,6 +60,8 @@ describe("makeVerifiedAnswerGenerateUserPrompt", () => {
4260
userMessageText: MAGIC_VERIFIABLE,
4361
});
4462
expect(answer.staticResponse).toBeDefined();
63+
expect(answer.references).toHaveLength(1);
64+
expect(answer.references).toMatchObject(references);
4565
expect(answer.staticResponse?.content).toBe("verified answer");
4666
expect(answer.userMessage.content).toBe(MAGIC_VERIFIABLE); // onNoVerifiedAnswerFound not called
4767
});

packages/mongodb-chatbot-server/src/processors/makeVerifiedAnswerGenerateUserPrompt.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const makeVerifiedAnswerGenerateUserPrompt = ({
4747
content: userMessageText,
4848
role: "user",
4949
},
50+
references: verifiedAnswer.references,
5051
staticResponse: {
5152
metadata: {
5253
verifiedAnswer: {

packages/mongodb-chatbot-server/src/routes/generateResponse.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,28 @@ describe("streamGenerateResponseMessage", () => {
435435
`data: {"type":"references","data":${JSON.stringify(references)}}`
436436
);
437437
});
438+
it("should stream references if shouldGenerateMessage is true", async () => {
439+
await streamGenerateResponseMessage(baseArgs);
440+
const data = res._getData();
441+
442+
expect(data).toContain(
443+
`{"type":"references","data":${JSON.stringify(references)}}`
444+
);
445+
});
446+
it("should stream references if shouldGenerateMessage is false", async () => {
447+
await streamGenerateResponseMessage({
448+
...baseArgs,
449+
shouldGenerateMessage: false,
450+
llmConversation: [
451+
{ role: "user", content: "hello" },
452+
{ role: "assistant", content: "hi" },
453+
],
454+
});
455+
const data = res._getData();
456+
expect(data).toContain(
457+
`{"type":"references","data":${JSON.stringify(references)}}`
458+
);
459+
});
438460
it("should call tool before responding", async () => {
439461
const { messages } = await streamGenerateResponseMessage({
440462
...baseArgs,

packages/mongodb-chatbot-server/src/routes/generateResponse.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,8 @@ export async function streamGenerateResponseMessage({
449449
// Add references to the last assistant message
450450
if (newMessages.at(-1)?.role === "assistant" && outputReferences.length > 0) {
451451
(newMessages.at(-1) as AssistantMessage).references = outputReferences;
452+
}
453+
if (outputReferences.length > 0) {
452454
// Stream back references
453455
dataStreamer.streamData({
454456
type: "references",

0 commit comments

Comments
 (0)