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
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<std::string> & ids_cache,
const std::function<std::string()> & gen_tool_call_id) {
for (auto i = 0u; i < tool_calls.size(); i++) {