sessionCountTokens method
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);
}