Skip to content

Commit 9fda0bb

Browse files
authored
deprecate totalBillableCharacters (#17499)
1 parent c56eccf commit 9fda0bb

File tree

5 files changed

+7
-18
lines changed

5 files changed

+7
-18
lines changed

packages/firebase_ai/firebase_ai/example/lib/pages/token_count_page.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ class _TokenCountPageState extends State<TokenCountPage> {
8787
const prompt = 'tell a short story';
8888
final content = Content.text(prompt);
8989
final tokenResponse = await widget.model.countTokens([content]);
90-
final tokenResult = 'Count token: ${tokenResponse.totalTokens}, billable '
91-
'characters: ${tokenResponse.totalBillableCharacters}';
90+
final tokenResult = 'Count token: ${tokenResponse.totalTokens}';
9291
_messages.add(MessageData(text: tokenResult, fromUser: false));
9392

9493
final contentResponse = await widget.model.generateContent([content]);

packages/firebase_ai/firebase_ai/lib/src/api.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ final class CountTokensResponse {
3131
/// The number of characters that the `model` could bill at.
3232
///
3333
/// Always non-negative.
34+
@Deprecated(
35+
'Use `totalTokens` instead; Gemini 2.0 series models and newer are always billed by token count.',
36+
)
3437
final int? totalBillableCharacters;
3538

3639
/// List of modalities that were processed in the request input.

packages/firebase_ai/firebase_ai/test/api_test.dart

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,14 @@ void main() {
2525
group('CountTokensResponse', () {
2626
test('constructor initializes fields correctly', () {
2727
final details = [ModalityTokenCount(ContentModality.text, 10)];
28-
final response = CountTokensResponse(100,
29-
totalBillableCharacters: 50, promptTokensDetails: details);
28+
final response = CountTokensResponse(100, promptTokensDetails: details);
3029
expect(response.totalTokens, 100);
31-
expect(response.totalBillableCharacters, 50);
3230
expect(response.promptTokensDetails, same(details));
3331
});
3432

3533
test('constructor with null optional fields', () {
3634
final response = CountTokensResponse(100);
3735
expect(response.totalTokens, 100);
38-
expect(response.totalBillableCharacters, isNull);
3936
expect(response.promptTokensDetails, isNull);
4037
});
4138
});
@@ -445,7 +442,6 @@ void main() {
445442
test('parses valid full JSON correctly', () {
446443
final json = {
447444
'totalTokens': 120,
448-
'totalBillableCharacters': 240,
449445
'promptTokensDetails': [
450446
{
451447
'modality': 'TEXT',
@@ -455,7 +451,6 @@ void main() {
455451
};
456452
final response = VertexSerialization().parseCountTokensResponse(json);
457453
expect(response.totalTokens, 120);
458-
expect(response.totalBillableCharacters, 240);
459454
expect(response.promptTokensDetails, isNotNull);
460455
expect(response.promptTokensDetails, hasLength(2));
461456
expect(response.promptTokensDetails![0].modality, ContentModality.text);
@@ -469,7 +464,6 @@ void main() {
469464
final json = {'totalTokens': 50};
470465
final response = VertexSerialization().parseCountTokensResponse(json);
471466
expect(response.totalTokens, 50);
472-
expect(response.totalBillableCharacters, isNull);
473467
expect(response.promptTokensDetails, isNull);
474468
});
475469

packages/firebase_vertexai/firebase_vertexai/example/lib/pages/token_count_page.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ class _TokenCountPageState extends State<TokenCountPage> {
8787
const prompt = 'tell a short story';
8888
final content = Content.text(prompt);
8989
final tokenResponse = await widget.model.countTokens([content]);
90-
final tokenResult = 'Count token: ${tokenResponse.totalTokens}, billable '
91-
'characters: ${tokenResponse.totalBillableCharacters}';
90+
final tokenResult = 'Count token: ${tokenResponse.totalTokens}';
9291
_messages.add(MessageData(text: tokenResult, fromUser: false));
9392

9493
final contentResponse = await widget.model.generateContent([content]);

packages/firebase_vertexai/firebase_vertexai/test/api_test.dart

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,14 @@ void main() {
2525
group('CountTokensResponse', () {
2626
test('constructor initializes fields correctly', () {
2727
final details = [ModalityTokenCount(ContentModality.text, 10)];
28-
final response = CountTokensResponse(100,
29-
totalBillableCharacters: 50, promptTokensDetails: details);
28+
final response = CountTokensResponse(100, promptTokensDetails: details);
3029
expect(response.totalTokens, 100);
31-
expect(response.totalBillableCharacters, 50);
3230
expect(response.promptTokensDetails, same(details));
3331
});
3432

3533
test('constructor with null optional fields', () {
3634
final response = CountTokensResponse(100);
3735
expect(response.totalTokens, 100);
38-
expect(response.totalBillableCharacters, isNull);
3936
expect(response.promptTokensDetails, isNull);
4037
});
4138
});
@@ -445,7 +442,6 @@ void main() {
445442
test('parses valid full JSON correctly', () {
446443
final json = {
447444
'totalTokens': 120,
448-
'totalBillableCharacters': 240,
449445
'promptTokensDetails': [
450446
{
451447
'modality': 'TEXT',
@@ -455,7 +451,6 @@ void main() {
455451
};
456452
final response = VertexSerialization().parseCountTokensResponse(json);
457453
expect(response.totalTokens, 120);
458-
expect(response.totalBillableCharacters, 240);
459454
expect(response.promptTokensDetails, isNotNull);
460455
expect(response.promptTokensDetails, hasLength(2));
461456
expect(response.promptTokensDetails![0].modality, ContentModality.text);
@@ -469,7 +464,6 @@ void main() {
469464
final json = {'totalTokens': 50};
470465
final response = VertexSerialization().parseCountTokensResponse(json);
471466
expect(response.totalTokens, 50);
472-
expect(response.totalBillableCharacters, isNull);
473467
expect(response.promptTokensDetails, isNull);
474468
});
475469

0 commit comments

Comments
 (0)