diff --git a/common/chat.cpp b/common/chat.cpp index 5364a6e017..70b9f5dc2c 100644 --- a/common/chat.cpp +++ b/common/chat.cpp @@ -80,7 +80,7 @@ json common_chat_msg::to_json_oaicompat(bool concat_typed_text) const { if (!content.empty()) { jmsg["content"] = content; } else if (!content_parts.empty()) { - if (concat_typed_text) { + if (concat_typed_text || contains_media()) { std::string text; bool last_was_media_marker = false; // join parts with newline, do not add newline before or after media markers diff --git a/common/chat.h b/common/chat.h index 01a47b383b..054f5ffe77 100644 --- a/common/chat.h +++ b/common/chat.h @@ -94,6 +94,15 @@ struct common_chat_msg { tool_name.empty() && tool_call_id.empty(); } + bool contains_media() const { + for (const auto & part : content_parts) { + if (part.type == "media_marker") { + return true; + } + } + return false; + } + void set_tool_call_ids(std::vector & ids_cache, const std::function & gen_tool_call_id) { for (auto i = 0u; i < tool_calls.size(); i++) {