Your report here intrigued me and I did a lot of tests. Both the GPT-4o and OpenAI o1 models process this similarly. I'll focus on o1...
I used different text to see what it's trying to output.
Your text: a :a b :b c :c
My text aa :a1 bb :b1 cc :c1
Consistent ChatGPT output (which might be different from the API:
aa
bb
cc
It's interpreting the text as key:value pairs and displaying the keys. I tried really hard to get the model to generate its own prompt to avoid pre-processing the text. Surprisingly (?) a firm prompt telling the model what not to do resulted in tripping the usage filter. ๐ฒ
The HTML that it generates isn't even valid:
aa<div></div>bb<div></div>cc<div></div>
I got o1 to consider this and it did reasonably acknowledge that there are two valid output formats for the data:
<p>aa :a1 bb :b1 cc :c1</p>
<pre>aa :a1 bb :b1 cc :c1</pre>
It will output that literal text but the markup is displayed, not processed as raw markup.
This does work:
Reproduce the following quoted string exactly as it is, without any modifications or processing: `aa :a1 bb :b1 cc :c1`.
Yes, the model wraps the text in a single-line <p><code>...</code></p> block, but the block is not wrapped in a big div "Copy code" container.
The model has explicit instructions to process text that looks like key:value pairs. I agree that shouldn't be there, especially to a point where we can't emphatically instruct the model not to do that.