sessionCountTokens method

  1. @override
Future<int> sessionCountTokens(
  1. String sessionId, {
  2. String? text,
})
override

Token count of the whole conversation, or of text when given.

Implementation

@override
Future<int> sessionCountTokens(String sessionId, {String? text}) async {
  final s = _session(sessionId);
  final model = s.model;
  final probe = text ?? s.pending.join('\n');
  if (model == null) return estimateTokens(probe);
  try {
    for (final name in ['measureInputUsage', 'measureContextUsage']) {
      if (model.has(name)) {
        final n = await model
            .callMethod<JSPromise<JSNumber>>(name.toJS, probe.toJS)
            .toDart;
        return n.toDartInt;
      }
    }
  } catch (_) {}
  return estimateTokens(probe);
}