
Если модель умеет рисовать велосипед в SVG, это ещё не значит, что в анимации лапы птицы останутся на педалях. В продолжение сравнения двух SVG-сцен я предложил официальному API и пяти платформам новую задачу: пеликан на велосипеде в четырёхсекундном цикле.
Модель возвращала HTML со встроенным SVG и кодом анимации. Все GIF созданы из этих ответов одним и тем же скриптом.
Методика
Эксперимент состоял из трёх серий, всего 21 запрос. В каждой серии сначала вызывался официальный API, затем пять платформ в случайном порядке и снова официальный API. Все пять ответов сравнивались с одной парой официальных ответов, полученных в той же серии. Результаты всех трёх серий сохранены.
В английском промпте требовалось показать пеликана и велосипед целиком, сбоку. Птица сидит на седле, держит руль крыльями, обе лапы движутся вместе с педалями. Два одинаковых колеса со спицами вращаются по часовой стрелке с одинаковой скоростью. Велосипед остаётся в центре кадра, земля движется влево. Анимация должна зацикливаться через четыре секунды, работать с частотой 24 fps и не использовать внешние ресурсы.
Лимит каждого ответа составлял 12 000 токенов. Параметры temperature и reasoning_effort явно не задавались. Запросы отправлялись без истории переписки, автоматические повторы были отключены. Три серии выполнялись параллельно, но порядок запросов внутри каждой сохранялся, поэтому задержки в статье не сравниваются. Для ожидания данных и проверки общей длительности потока был установлен предел 300 секунд.
До начала запросов были выбраны семь критериев: строение птицы и велосипеда; сохранение контакта с седлом, рулём и педалями; движение ног при педалировании; вращение колёс; перемещение и устойчивость сцены; переход через границу четырёхсекундного цикла; самостоятельный запуск. Размер окна при отрисовке — 960×640. Для каждого полного ответа сохранялись 96 кадров и отдельный кадр в момент 4 с, затем создавался GIF. Длительности кадров в GIF составляют 40 или 50 мс, в сумме — 4 000 мс.
Насколько различаются официальные ответы
В шести официальных ответах различаются форма тела и клюва, детали рамы и фон. На проверенных кадрах велосипед остаётся собранным, ноги следуют за педалями, а вращение колёс согласовано с движением земли. Поэтому различия в оформлении сами по себе не считаются расхождением: сравниваются видимая структура сцены и движение её частей.
GIF каждой платформы состоит из трёх строк. Слева указан номер серии, а изображения в строке расположены в порядке «официальный ответ до → ответ платформы → официальный ответ после». В каждой строке используются официальные ответы именно этой серии. Для второй серии OrcaRouter вместо анимации указано, что чтение завершилось по тайм-ауту и полного GIF нет.
Результаты по платформам
OrcaRouter
В первой и третьей сериях видимая структура и движение согласуются с официальными ответами. Во второй сервер вернул HTTP 200, но примерно через 400,5 секунды чтение завершилось по тайм-ауту. Этот запрос отмечен как ошибка API и не учитывается как совпадение.

TeamoRouter
Во всех трёх сериях велосипед сохраняет целостность, ноги движутся вместе с педалями, колёса вращаются. Форма птицы и оформление меняются; на проверенных кадрах явных структурных расхождений с официальными ответами не обнаружено.

OpenRouter
Все три ответа получены полностью. На проверенных кадрах посадка птицы, движение педалей и вращение колёс согласуются с официальными образцами. Основные различия относятся к оформлению сцены.

Token Harbor
Во всех трёх сериях получена работающая анимация. Фон и пропорции различаются, но на проверенных кадрах не видно отделившихся частей велосипеда или явного отрыва лап от педалей.

NaraRouter
Все три ответа получены полностью, но в каждом есть структурные ошибки. В первой серии тело птицы не касается седла, а шатуны не остаются соединёнными с движущимися педалями. Во второй спицы выходят за обод, положение лап не совпадает с положением педалей. В третьей переднее колесо отделено от рамы и смещено в левый верхний угол. Эти различия относятся к устройству сцены, а не к предпочтениям в стиле рисунка.

Итоги трёх серий
«Согласуется» относится только к структуре и движению, которые удалось проверить по выбранным кадрам. Это не означает тождества кода или пикселей и не подтверждает, что на сервере используется та же модель. Контакт в местах, закрытых другими деталями, нельзя считать достоверно проверенным.
Платформа | Число запросов | Выходные токены | Серия 1 | Серия 2 | Серия 3 |
|---|---|---|---|---|---|
OrcaRouter | 3 | 10 450* | Согласуется | Ошибка API | Согласуется |
TeamoRouter | 3 | 12 936 | Согласуется | Согласуется | Согласуется |
OpenRouter | 3 | 15 576 | Согласуется | Согласуется | Согласуется |
Token Harbor | 3 | 15 225 | Согласуется | Согласуется | Согласуется |
NaraRouter | 3 | 9 174 | Есть различия | Есть различия | Есть различия |
Число запросов включает неудачную попытку. Выходные токены — сумма значений completion_tokens, возвращённых API, а не оценка по длине HTML. Для OrcaRouter учтены только два полных ответа: для запроса с тайм-аутом данных об использовании токенов нет, что не означает нулевого расхода. Официальный API: 6 запросов, 31 374 выходных токена.
Всего отправлен 21 запрос: получено 20 полных ответов, каждый удалось отрисовать; в одном случае чтение завершилось по тайм-ауту. У NaraRouter во всех трёх сериях обнаружены явные структурные различия. Три ответа TeamoRouter, OpenRouter и Token Harbor, а также два полных ответа OrcaRouter согласуются с официальными образцами в пределах проверенной видимой структуры и движения. Рейтинг платформ по этим результатам не составлялся.

Комментарии 0