@@ -5,29 +5,28 @@ import { downloadFile } from "./files/downloadFile";
5
5
6
6
export async function preprocessMessages (
7
7
messages : Message [ ] ,
8
+ webSearch : Message [ "webSearch" ] ,
8
9
multimodal : boolean ,
9
10
id : Conversation [ "_id" ]
10
11
) : Promise < Message [ ] > {
11
12
return await Promise . all (
12
- messages . map ( async ( message , idx ) => {
13
+ structuredClone ( messages ) . map ( async ( message , idx ) => {
13
14
// 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 ) ;
23
21
const currentDate = format ( new Date ( ) , "MMMM d, yyyy" ) ;
24
22
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:
26
25
=====================
27
- ${ message . webSearch . context }
26
+ ${ webSearch . context }
28
27
=====================
29
- ${ previousQuestions }
30
- Answer the question: ${ messages [ lastUsrMsgIndex ] . content } ` ;
28
+ ${ previousQuestions . length > 0 ? `Previous questions: \n- ${ previousQuestions . join ( "\n- " ) } ` : "" }
29
+ Answer the question: ${ lastQuestion } ` ;
31
30
}
32
31
// handle files if model is multimodal
33
32
if ( multimodal ) {
0 commit comments