Skip to content

Commit 811f449

Browse files
authoredJul 16, 2024··
fix (ai/core): generateText token usage is sum over all roundtrips (#2304)
1 parent e117cf8 commit 811f449

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed
 

‎.changeset/cyan-brooms-share.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'ai': patch
3+
---
4+
5+
fix (ai/core): generateText token usage is sum over all roundtrips

‎packages/core/core/generate-text/generate-text.test.ts

+8
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,14 @@ describe('options.maxToolRoundtrips', () => {
494494
assert.deepStrictEqual(result.toolResults, []);
495495
});
496496

497+
it('should sum token usage', () => {
498+
assert.deepStrictEqual(result.usage, {
499+
completionTokens: 25,
500+
promptTokens: 20,
501+
totalTokens: 45,
502+
});
503+
});
504+
497505
it('should return information about all roundtrips', () => {
498506
assert.deepStrictEqual(result.roundtrips, [
499507
{

‎packages/core/core/generate-text/generate-text.ts

+15-2
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ By default, it's set to 0, which will disable the feature.
165165
const responseMessages: Array<CoreAssistantMessage | CoreToolMessage> =
166166
[];
167167
const roundtrips: GenerateTextResult<TOOLS>['roundtrips'] = [];
168+
const usage: CompletionTokenUsage = {
169+
completionTokens: 0,
170+
promptTokens: 0,
171+
totalTokens: 0,
172+
};
168173

169174
do {
170175
// once we have a roundtrip, we need to switch to messages format:
@@ -219,13 +224,21 @@ By default, it's set to 0, which will disable the feature.
219224
tracer,
220225
});
221226

227+
// token usage:
228+
const currentUsage = calculateCompletionTokenUsage(
229+
currentModelResponse.usage,
230+
);
231+
usage.completionTokens += currentUsage.completionTokens;
232+
usage.promptTokens += currentUsage.promptTokens;
233+
usage.totalTokens += currentUsage.totalTokens;
234+
222235
// add roundtrip information:
223236
roundtrips.push({
224237
text: currentModelResponse.text ?? '',
225238
toolCalls: currentToolCalls,
226239
toolResults: currentToolResults,
227240
finishReason: currentModelResponse.finishReason,
228-
usage: calculateCompletionTokenUsage(currentModelResponse.usage),
241+
usage: currentUsage,
229242
warnings: currentModelResponse.warnings,
230243
logprobs: currentModelResponse.logprobs,
231244
});
@@ -267,7 +280,7 @@ By default, it's set to 0, which will disable the feature.
267280
toolCalls: currentToolCalls,
268281
toolResults: currentToolResults,
269282
finishReason: currentModelResponse.finishReason,
270-
usage: calculateCompletionTokenUsage(currentModelResponse.usage),
283+
usage,
271284
warnings: currentModelResponse.warnings,
272285
rawResponse: currentModelResponse.rawResponse,
273286
logprobs: currentModelResponse.logprobs,

0 commit comments

Comments
 (0)
Please sign in to comment.