evaluate method

  1. @override
Future<EvaluationResult> evaluate(
  1. Iterable<ChatMessage> messages,
  2. ChatResponse modelResponse, {
  3. ChatConfiguration? chatConfiguration,
  4. Iterable<EvaluationContext>? additionalContext,
  5. CancellationToken? cancellationToken,
})
override

Evaluates modelResponse and returns an EvaluationResult.

messages is the full conversation history that produced modelResponse. chatConfiguration is required when the evaluator itself uses an AI model. additionalContext provides domain-specific context beyond what is in messages.

Implementation

@override
Future<EvaluationResult> evaluate(
  Iterable<ChatMessage> messages,
  ChatResponse modelResponse, {
  ChatConfiguration? chatConfiguration,
  Iterable<EvaluationContext>? additionalContext,
  CancellationToken? cancellationToken,
}) async {
  final results = await Future.wait(
    _evaluators.map((e) => _safeEvaluate(
          e,
          messages,
          modelResponse,
          chatConfiguration: chatConfiguration,
          additionalContext: additionalContext,
          cancellationToken: cancellationToken,
        )),
  );
  final merged = EvaluationResult();
  for (final result in results) {
    result.metrics.forEach((k, v) => merged.metrics[k] = v);
  }
  return merged;
}