Skip to content

Commit 00443e1

Browse files
authored
Pass websearch to preprocessMessages (#876)
There was a bug where the websearch was fetching relevant chunks for context correctly but it wasn't getting injected into the prompt, this PR fixes that.
1 parent 482a094 commit 00443e1

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

src/lib/server/preprocessMessages.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,28 @@ import { downloadFile } from "./files/downloadFile";
55

66
export async function preprocessMessages(
77
messages: Message[],
8+
webSearch: Message["webSearch"],
89
multimodal: boolean,
910
id: Conversation["_id"]
1011
): Promise<Message[]> {
1112
return await Promise.all(
12-
messages.map(async (message, idx) => {
13+
structuredClone(messages).map(async (message, idx) => {
1314
// start by adding websearch to the last message
14-
if (idx === messages.length - 1 && message.webSearch && message.webSearch.context) {
15-
const lastUsrMsgIndex = messages.map((el) => el.from).lastIndexOf("user");
16-
const previousUserMessages = messages.filter((el) => el.from === "user").slice(0, -1);
17-
const previousQuestions =
18-
previousUserMessages.length > 0
19-
? `Previous questions: \n${previousUserMessages
20-
.map(({ content }) => `- ${content}`)
21-
.join("\n")}`
22-
: "";
15+
if (idx === messages.length - 1 && webSearch && webSearch.context) {
16+
const lastQuestion = messages.findLast((el) => el.from === "user")?.content ?? "";
17+
const previousQuestions = messages
18+
.filter((el) => el.from === "user")
19+
.slice(0, -1)
20+
.map((el) => el.content);
2321
const currentDate = format(new Date(), "MMMM d, yyyy");
2422

25-
message.content = `I searched the web using the query: ${message.webSearch.searchQuery}. Today is ${currentDate} and here are the results:
23+
message.content = `I searched the web using the query: ${webSearch.searchQuery}.
24+
Today is ${currentDate} and here are the results:
2625
=====================
27-
${message.webSearch.context}
26+
${webSearch.context}
2827
=====================
29-
${previousQuestions}
30-
Answer the question: ${messages[lastUsrMsgIndex].content}`;
28+
${previousQuestions.length > 0 ? `Previous questions: \n- ${previousQuestions.join("\n- ")}` : ""}
29+
Answer the question: ${lastQuestion}`;
3130
}
3231
// handle files if model is multimodal
3332
if (multimodal) {

src/routes/conversation/[id]/+server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ export async function POST({ request, locals, params, getClientAddress }) {
324324
// inject websearch result & optionally images into the messages
325325
const processedMessages = await preprocessMessages(
326326
messagesForPrompt,
327+
messageToWriteTo.webSearch,
327328
model.multimodal,
328329
convId
329330
);

0 commit comments

Comments
 (0)