generate method

  1. @override
Future<ImageGenerationResponse> generate({
  1. required ImageGenerationRequest request,
  2. ImageGenerationOptions? options,
  3. CancellationToken? cancellationToken,
})
override

Generates images based on the given request.

Implementation

@override
Future<ImageGenerationResponse> generate({
  required ImageGenerationRequest request,
  ImageGenerationOptions? options,
  CancellationToken? cancellationToken,
}) async {
  if (_logger.isEnabled(LogLevel.debug)) {
    _logger.logDebug('generate invoked.');
  }

  if (_logger.isEnabled(LogLevel.trace)) {
    _logger.logTrace(
      'generate invoked. '
      'Prompt: ${request.prompt ?? 'null'}. '
      'Options: '
      '${options != null ? _asJson(_optionsToMap(options)) : 'null'}.',
    );
  }

  try {
    final result = await super.generate(
      request: request,
      options: options,
      cancellationToken: cancellationToken,
    );

    if (_logger.isEnabled(LogLevel.debug)) {
      _logger.logDebug('generate completed.');
    }

    if (_logger.isEnabled(LogLevel.trace)) {
      _logger.logTrace(
        'generate completed. '
        'Contents count: ${result.contents.length}.',
      );
    }

    return result;
  } on OperationCanceledException {
    if (_logger.isEnabled(LogLevel.debug)) {
      _logger.logDebug('generate canceled.');
    }
    rethrow;
  } catch (e) {
    _logger.logError('generate failed.', error: e);
    rethrow;
  }
}