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