getModerationStats method

Future<ModerationStats> getModerationStats(
  1. List<String> texts, {
  2. String? model,
})

Get moderation statistics for a batch of texts

Implementation

Future<ModerationStats> getModerationStats(
  List<String> texts, {
  String? model,
}) async {
  final results = await moderateTexts(texts, model: model);

  final flaggedCount = results.where((r) => r.flagged).length;
  final categoryStats = <String, int>{};

  for (final result in results) {
    final categoriesMap = _categoriesToMap(result.categories);
    for (final category in categoriesMap.keys) {
      if (categoriesMap[category] == true) {
        categoryStats[category] = (categoryStats[category] ?? 0) + 1;
      }
    }
  }

  return ModerationStats(
    totalTexts: texts.length,
    flaggedTexts: flaggedCount,
    safeTexts: texts.length - flaggedCount,
    flaggedPercentage: (flaggedCount / texts.length) * 100,
    categoryBreakdown: categoryStats,
    mostCommonViolation:
        categoryStats.entries.reduce((a, b) => a.value > b.value ? a : b).key,
  );
}