2024-01-03 22:16:50 -08:00
export function stringifyTurns ( turns ) {
let res = '' ;
for ( let turn of turns ) {
if ( turn . role === 'assistant' ) {
res += ` \n Your output: \n ${ turn . content } ` ;
} else if ( turn . role === 'system' ) {
res += ` \n System output: ${ turn . content } ` ;
} else {
res += ` \n User input: ${ turn . content } ` ;
}
}
return res . trim ( ) ;
2024-05-10 13:41:29 -05:00
}
export function toSinglePrompt ( turns , system = null , stop _seq = '***' , model _nickname = 'assistant' ) {
let messages = turns ;
if ( system ) messages . unshift ( { role : 'system' , content : system } ) ;
let prompt = "" ;
let role = "" ;
messages . forEach ( ( message ) => {
role = message . role ;
if ( role === 'assistant' ) role = model _nickname ;
prompt += ` ${ role } : ${ message . content } ${ stop _seq } ` ;
} ) ;
if ( role !== model _nickname ) // if the last message was from the user/system, add a prompt for the model. otherwise, pretend we are extending the model's own message
prompt += model _nickname + ": " ;
return prompt ;
2024-01-03 22:16:50 -08:00
}