openai

JSON-режим OpenAI ломает экранирование не-ASCII символов

Promtime

openai

Исследователи Giskard нашли ошибку в JSON-режиме OpenAI и Azure OpenAI: после префикса \u00 декодер разрешает только управляющие символы (\u0000–\u001f), поэтому é не собирается. Вместо \u00e9 модель выдаёт NUL и литералы e9, JSON остаётся валидным, но байты неверные.

Это задевает любые UTF-8 символы в escape-последовательности \uXXXX: акцентированные буквы, CJK, кириллицу. При парсинге в Python NUL-байт роняет продакшн: PostgreSQL отклоняет вставку строки, логи и индексы портятся незаметно. По RFC 8259 такой escape допустим, но ограничение в документации OpenAI не описано.

В JSON-режиме сбой шёл в 100% тестов на моделях от gpt-4o до gpt-5.2. На self-hosted gpt-oss-20b и qwen3.5-4B через vLLM ошибки не было. Giskard советует показывать в примерах сырые символы и ставить ensure_ascii=False в json.dumps.

Комментарии

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.

Из Google мы используем только имя и аватар. Почту не сохраняем.