query method

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

Implementation

@override
Future<AiClientResponse> query({
  String? model,
  Duration? delay,
  List<Message> history = const [],
  required Message message,
  String? system,
  List<Context>? contexts,
  List<Tool> tools = const [],
}) 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}');
  }
}