convokit
Version:
A flexible TypeScript framework for ingesting, processing, and exporting chat/conversation data for LLM training and analysis.
22 lines • 1 kB
JavaScript
import { ConvoKitLogging as ckl } from "../../../index.js";
export async function CKWeightedSample(CKTurnListConversations, Samples) {
ckl.time("CKWeightedSample", "Creating weighted sample");
// Calculate weights (sum of importance for each conversation)
const weights = CKTurnListConversations.map(CKTurnListConversation => CKTurnListConversation.reduce((s, m) => s + m.importance, 0));
const total = weights.reduce((a, b) => a + b, 0);
function pickOne() {
let r = Math.random() * total;
for (let i = 0; i < CKTurnListConversations.length; i++) {
r -= weights[i];
if (r <= 0)
return CKTurnListConversations[i];
}
return CKTurnListConversations[CKTurnListConversations.length - 1];
}
const result = [];
for (let i = 0; i < Samples; i++)
result.push(pickOne());
ckl.timeEnd("CKWeightedSample", "Creating weighted sample");
return result;
}
//# sourceMappingURL=CKWeightedSample.js.map