first
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
function copyMessage(message, includeReasoning = true) {
|
||||
const copy = { role: message.role, content: message.content };
|
||||
if (includeReasoning && message.reasoning) copy.reasoning = message.reasoning;
|
||||
return copy;
|
||||
}
|
||||
|
||||
function create(systemPrompt, messages = []) {
|
||||
const conversation = {
|
||||
systemPrompt,
|
||||
messages: messages.map(message => copyMessage(message)),
|
||||
|
||||
add(source) {
|
||||
if (Array.isArray(source?.messages)) {
|
||||
for (const message of source.messages) conversation.messages.push(copyMessage(message, false));
|
||||
return conversation;
|
||||
}
|
||||
|
||||
conversation.messages.push(copyMessage(source));
|
||||
return conversation;
|
||||
}
|
||||
};
|
||||
return conversation;
|
||||
}
|
||||
|
||||
function start(systemPrompt = null) {
|
||||
return create(systemPrompt);
|
||||
}
|
||||
|
||||
function from(blob, fallbackSystemPrompt = null) {
|
||||
const systemPrompt = blob.systemPrompt === undefined ? fallbackSystemPrompt : blob.systemPrompt;
|
||||
return create(systemPrompt, blob.messages || []);
|
||||
}
|
||||
|
||||
module.exports = { start, from };
|
||||
Reference in New Issue
Block a user