fix: ensure tokens are properly accumulated by using passed tracker instance

Co-Authored-By: sha.zhou@jina.ai <sha.zhou@jina.ai>
This commit is contained in:
Devin AI
2025-02-11 10:31:17 +00:00
parent 03cb5a45d4
commit 5808ae9540
3 changed files with 16 additions and 7 deletions

View File

@@ -381,7 +381,9 @@ export async function evaluateQuestion(
maxTokens: getMaxTokens('evaluator')
});
(tracker || new TokenTracker()).trackUsage('evaluator', result.usage?.totalTokens || 0);
if (tracker) {
tracker.trackUsage('evaluator', result.usage?.totalTokens || 0);
}
console.log('Question Evaluation:', result.object);
// Always include definitive in types
@@ -419,7 +421,9 @@ async function performEvaluation(
maxTokens: params.maxTokens
});
(tracker || new TokenTracker()).trackUsage('evaluator', result.usage?.totalTokens || 0);
if (tracker) {
tracker.trackUsage('evaluator', result.usage?.totalTokens || 0);
}
console.log(`${evaluationType} Evaluation:`, result.object);
return result;
@@ -523,7 +527,9 @@ export async function evaluateAnswer(
}
} catch (error) {
const errorResult = await handleGenerateObjectError<EvaluationResponse>(error);
(tracker || new TokenTracker()).trackUsage('evaluator', errorResult.totalTokens || 0);
if (tracker) {
tracker.trackUsage('evaluator', errorResult.totalTokens || 0);
}
return {response: errorResult.object};
}
}
@@ -557,4 +563,4 @@ async function fetchSourceContent(urls: string[], tracker?: TokenTracker): Promi
console.error('Error fetching source content:', error);
return '';
}
}
}

View File

@@ -62,8 +62,9 @@ export function search(query: string, tracker?: TokenTracker): Promise<{ respons
const totalTokens = response.data.reduce((sum, item) => sum + (item.usage?.tokens || 0), 0);
console.log('Total URLs:', response.data.length);
const tokenTracker = tracker || new TokenTracker();
tokenTracker.trackUsage('search', totalTokens);
if (tracker) {
tracker.trackUsage('search', totalTokens);
}
resolve({ response, tokens: totalTokens });
});
@@ -81,4 +82,4 @@ export function search(query: string, tracker?: TokenTracker): Promise<{ respons
req.end();
});
}
}

View File

@@ -20,6 +20,8 @@ export class TokenTracker extends EventEmitter {
if (!this.budget || currentTotal + tokens <= this.budget) {
const usage = { tool, tokens, category };
this.usages.push(usage);
console.log(`[TokenTracker] Adding ${tokens} tokens from ${tool}${category ? ` (${category})` : ''}`);
console.log(`[TokenTracker] New total: ${this.getTotalUsage()}`);
this.emit('usage', usage);
}
}