Коротко
CORS Chat позволяет подключаться из браузера к совместимым OpenAI Responses API, включая локальные серверы в LM Studio. Главное преимущество — быстрый тест разных моделей без отдельного интерфейса, но только если endpoint разрешает CORS.
Самое полезное в CORS Chat — не очередное окно для общения с моделью, а возможность проверять локальные и сторонние LLM прямо из браузера. Отдельный backend для такого теста не нужен: достаточно endpoint, совместимого с OpenAI Responses API и настроенного на CORS.
Simon Willison собрал инструмент, чтобы гонять Qwen 3.8 27B в LM Studio на M5 MacBook Pro и NVIDIA DGX Spark. Он проверил связку с LM Studio через опцию --cors, а также с OpenRouter — оба варианта заработали.
В интерфейсе можно указывать собственные заголовки, сохранять несколько чатов с разными моделями и настройками reasoning. История остаётся в браузере, а разговор можно экспортировать в виде JSON обычным копированием. Для разработчика это удобнее, чем каждый раз писать временный скрипт или подключать тяжёлую UI-обвязку.
Есть и маленькая, но показательная деталь: если модель генерирует SVG, CORS Chat отображает его постепенно, пока токены ещё приходят. Это хорошо показывает идею инструмента: он нужен не только для финального ответа, но и для наблюдения за тем, как endpoint ведёт себя во время streaming.
Но фильтр здесь жёсткий. Endpoint должен поддерживать именно OpenAI Responses-совместимый формат и разрешать запросы из браузера через CORS. Если сервер не отдаёт нужные заголовки или использует несовместимый API, CORS Chat проблему не обойдёт. Кроме того, разговоры сохраняются локально в браузере, поэтому перенос между устройствами не происходит автоматически — остаётся экспортировать JSON вручную.
Для локальных моделей это выглядит как хороший компромисс: минимум инфраструктуры, быстрый доступ к разным настройкам и возможность сравнивать endpoint на практике. Но CORS из удобной настройки превращается в главный критерий совместимости: ваш сервер вообще готов разговаривать с браузером напрямую?
Источник: Simon Willison's Weblog