diff --git a/lib/src/core/models/chat/sub_models/choices/sub_models/message.dart b/lib/src/core/models/chat/sub_models/choices/sub_models/message.dart index 146ff311..a18ee38b 100644 --- a/lib/src/core/models/chat/sub_models/choices/sub_models/message.dart +++ b/lib/src/core/models/chat/sub_models/choices/sub_models/message.dart @@ -64,9 +64,15 @@ final class OpenAIChatCompletionChoiceMessageModel { // This method used to convert the [OpenAIChatCompletionChoiceMessageModel] to a [Map] object. Map toMap() { + final content_ = () { + if (content?.length == 1) return content?.first.toMap(single: true); + + return content?.map((contentItem) => contentItem.toMap()).toList(); + }(); + return { "role": role.name, - "content": content?.map((contentItem) => contentItem.toMap()).toList(), + "content": content_, if (toolCalls != null && role == OpenAIChatMessageRole.assistant) "tool_calls": toolCalls!.map((toolCall) => toolCall.toMap()).toList(), if (name != null) "name": name, diff --git a/lib/src/core/models/chat/sub_models/choices/sub_models/sub_models/content.dart b/lib/src/core/models/chat/sub_models/choices/sub_models/sub_models/content.dart index 6d410757..4e3a14a5 100644 --- a/lib/src/core/models/chat/sub_models/choices/sub_models/sub_models/content.dart +++ b/lib/src/core/models/chat/sub_models/choices/sub_models/sub_models/content.dart @@ -65,13 +65,15 @@ class OpenAIChatCompletionChoiceMessageContentItemModel { } /// This method used to convert the [OpenAIChatCompletionChoiceMessageContentItemModel] to a [Map] object. - Map toMap() { + Object? toMap({bool single = false}) { + if (text != null && single) return text; + return { "type": type, if (text != null) "text": text, if (imageUrl != null) "image_url": imageUrl, if (imageBase64 != null) - "image_url": {"url": "data:image/jpeg;base64,${imageBase64}"} + "image_url": {"url": "data:image/jpeg;base64,${imageBase64}"}, }; }