implement proportional token buffer: use 1.5x input tokens instead of fixed 2048
This commit is contained in:
parent
21349b9fcc
commit
54f05b0af0
4 changed files with 11 additions and 7 deletions
|
|
@ -13,8 +13,9 @@ function estimateTokens(text) {
|
|||
function calculateAvailableTokens(chatHistory, maxTokens) {
|
||||
const inputText = chatHistory.map(msg => msg.content).join('');
|
||||
const inputTokens = estimateTokens(inputText);
|
||||
const availableTokens = Math.max(100, maxTokens - inputTokens - 2048); // Reserve 2048 tokens buffer
|
||||
console.log(`Token calculation: max=${maxTokens}, input≈${inputTokens}, available≈${availableTokens}`);
|
||||
const buffer = Math.max(2048, Math.floor(inputTokens * 1.5)); // Use 1.5x input tokens as buffer, minimum 2048
|
||||
const availableTokens = Math.max(100, maxTokens - inputTokens - buffer);
|
||||
console.log(`Token calculation: max=${maxTokens}, input≈${inputTokens}, buffer=${buffer}, available≈${availableTokens}`);
|
||||
return availableTokens;
|
||||
}
|
||||
import { initializeChatHistory, saveConversationHistory } from "./storage.js";
|
||||
|
|
|
|||
|
|
@ -74,11 +74,12 @@ async function* sendMessageWithHistory(messageHistory) {
|
|||
const modelMaxTokens = getSelectedModelMaxTokens();
|
||||
const inputText = messageHistory.map(msg => msg.content).join('');
|
||||
const inputTokens = Math.ceil(inputText.length / 4); // Simple token estimation
|
||||
const availableTokens = Math.max(100, modelMaxTokens - inputTokens - 2048); // 2048 token buffer
|
||||
const buffer = Math.max(2048, Math.floor(inputTokens * 1.5)); // Use 1.5x input tokens as buffer, minimum 2048
|
||||
const availableTokens = Math.max(100, modelMaxTokens - inputTokens - buffer);
|
||||
|
||||
console.log("Translation using endpoint:", apiUrl);
|
||||
console.log("Translation using model:", model);
|
||||
console.log("Translation token calculation: max=" + modelMaxTokens + ", input≈" + inputTokens + ", available≈" + availableTokens);
|
||||
console.log("Translation token calculation: max=" + modelMaxTokens + ", input≈" + inputTokens + ", buffer=" + buffer + ", available≈" + availableTokens);
|
||||
|
||||
const response = await fetch(apiUrl, {
|
||||
method: "POST",
|
||||
|
|
|
|||
|
|
@ -144,7 +144,8 @@ Your task:
|
|||
|
||||
Return only the article text ready for TTS, nothing else.`;
|
||||
const inputTokens = Math.ceil((systemPrompt + preCleanedContent).length / 4);
|
||||
const availableTokens = Math.max(100, modelMaxTokens - inputTokens - 2048);
|
||||
const buffer = Math.max(2048, Math.floor(inputTokens * 1.5)); // Use 1.5x input tokens as buffer, minimum 2048
|
||||
const availableTokens = Math.max(100, modelMaxTokens - inputTokens - buffer);
|
||||
|
||||
const payload = {
|
||||
model: getSelectedModel(),
|
||||
|
|
|
|||
|
|
@ -144,8 +144,9 @@ async function* sendMessageWithCustomHistory(messageHistory) {
|
|||
// Estimate input tokens for intro generation
|
||||
const inputText = messageHistory.map(msg => msg.content).join('');
|
||||
const inputTokens = Math.ceil(inputText.length / 4);
|
||||
const calculatedAvailable = Math.max(2048, modelMaxTokens - inputTokens - 50);
|
||||
console.log("UI (intro generation) using calculated available tokens:", calculatedAvailable, "of model max:", modelMaxTokens);
|
||||
const buffer = Math.max(2048, Math.floor(inputTokens * 1.5)); // Use 1.5x input tokens as buffer, minimum 2048
|
||||
const calculatedAvailable = Math.max(100, modelMaxTokens - inputTokens - buffer);
|
||||
console.log("UI (intro generation) using calculated available tokens:", calculatedAvailable, "buffer:", buffer, "of model max:", modelMaxTokens);
|
||||
|
||||
const response = await fetch(apiUrl, {
|
||||
method: "POST",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue