query method

  1. @override
Future<AiClientResponse> query({
  1. required Message message,
  2. List<Message> history = const [],
  3. String? system,
  4. String? model,
  5. Duration? delay,
  6. List<Context>? contexts,
  7. List<Tool>? tools,
})
override

Implementation

@override
Future<AiClientResponse> query({
  required Message message,
  List<Message> history = const [],
  String? system,
  String? model,
  Duration? delay,
  List<Context>? contexts,
  List<Tool>? tools,
}) async {
  await Future.delayed(delay ?? this.delay ?? const Duration(milliseconds: 300));

  final data = _buildDataObject(
    model: model ?? _model,
    tools: tools,
    system: system,
    contexts: contexts,
    history: history,
    message: message,
  );

  try {
    logRequest(data);

    final response = await _dio.post('/chat/completions', data: data);

    logResponse(response.data);

    return _parseResponse(response.data, originalTools: tools ?? []);
  } on DioException catch (e) {
    logError(e);
    throw Exception('Failed to fetch response: [${e.response?.statusCode}] ${e.response?.data ?? e.message}');
  }
}