sendMessage method

  1. @override
Future<String> sendMessage({
  1. required String message,
  2. List<ChatMessage> conversationHistory = const [],
  3. Map<String, dynamic>? options,
})
override

Send a message and get a complete response

Implementation

@override
Future<String> sendMessage({
  required String message,
  List<ChatMessage> conversationHistory = const [],
  Map<String, dynamic>? options,
}) async {
  final messages = _prepareMessages(message, conversationHistory);

  final response = await http.post(
    Uri.parse(baseUrl),
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer $apiKey',
    },
    body: jsonEncode({
      'model': model,
      'messages': messages,
      'temperature': options?['temperature'] ?? temperature,
      'max_tokens': options?['maxTokens'] ?? maxTokens,
    }),
  );

  if (response.statusCode == 200) {
    final data = jsonDecode(response.body);
    final content = data['choices'][0]['message']['content'];

    _conversationHistory.add({'role': 'user', 'content': message});
    _conversationHistory.add({'role': 'assistant', 'content': content});

    return content;
  } else {
    throw Exception('OpenAI API error: ${response.statusCode}');
  }
}