aiwrapper
Version:
A Universal AI Wrapper for JavaScript & TypeScript
32 lines (31 loc) • 1.01 kB
JavaScript
function estimateTokens(text) {
return Math.ceil(text.length / 4);
}
function calculateModelResponseTokens(model, messages, maxTokens) {
if (model.context.type !== "token") {
return maxTokens || 4e3;
}
const context = model.context;
if (context.outputIsFixed === 1 && context.maxOutput) {
if (maxTokens) {
return Math.min(maxTokens, context.maxOutput);
}
return context.maxOutput;
}
if (context.total && context.maxOutput) {
const inputTokens = messages.reduce((sum, message) => {
if (message.text.length === 0) return sum;
return sum + estimateTokens(message.text) + 4;
}, 0);
const remainingTokens = context.total - inputTokens;
if (maxTokens) {
return Math.max(0, Math.min(maxTokens, context.maxOutput, remainingTokens));
}
return Math.max(0, Math.min(context.maxOutput, remainingTokens));
}
return maxTokens || context.maxOutput || 4e3;
}
export {
calculateModelResponseTokens
};
//# sourceMappingURL=token-calculator.js.map