convertMessagesToOpenAI static method

List<Map<String, dynamic>> convertMessagesToOpenAI(
  1. List<ChatMessage> messages,
  2. String? systemPrompt
)

Convert ChatMessage list to OpenAI format

Implementation

static List<Map<String, dynamic>> convertMessagesToOpenAI(
  List<ChatMessage> messages,
  String? systemPrompt,
) {
  final apiMessages = <Map<String, dynamic>>[];

  // Add system message if configured
  if (systemPrompt != null && systemPrompt.isNotEmpty) {
    apiMessages.add({'role': 'system', 'content': systemPrompt});
  }

  // Convert messages to OpenAI format
  for (final message in messages) {
    if (message.messageType is ToolResultMessage) {
      // Handle tool results as separate messages
      final toolResults = (message.messageType as ToolResultMessage).results;
      for (final result in toolResults) {
        apiMessages.add({
          'role': 'tool',
          'tool_call_id': result.id,
          'content': result.function.arguments.isNotEmpty
              ? result.function.arguments
              : message.content,
        });
      }
    } else {
      apiMessages.add(_convertMessageToOpenAI(message));
    }
  }

  return apiMessages;
}