AiClient constructor

AiClient({
  1. required AiProvider provider,
  2. required String apiKey,
  3. String? model,
  4. HttpClient? httpClient,
  5. Duration timeout = const Duration(seconds: 60),
})

Implementation

AiClient({
  required this.provider,
  required String apiKey,
  String? model,
  HttpClient? httpClient,
  this.timeout = const Duration(seconds: 60),
}) : _apiKey = apiKey.trim(),
     model = model ?? provider.defaultModel,
     _http = httpClient ?? HttpClient(),
     _ownsClient = httpClient == null {
  if (_apiKey.isEmpty || !RegExp(r'^[\x21-\x7e]+$').hasMatch(_apiKey)) {
    throw ArgumentError(
      'Set a valid ${provider.environmentKey} environment variable.',
    );
  }
  if (!RegExp(r'^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$').hasMatch(this.model)) {
    throw ArgumentError('Invalid AI model ID.');
  }
  if (timeout <= Duration.zero)
    throw ArgumentError('AI timeout must be positive.');
}