Columnar создала Jevaro: ответы модели Jev в формате Apache Arrow

Jev, новая модель TypeSafe AI, которая превращает текст на естественном языке и состояние приложения в типизированные решения: выбор варианта, оценку и вероятности. Ответы API отдаёт в JSON. По описанию из анонса компании, Jev выдаёт вероятности параллельно, а не генерирует ответ токен за токеном; TypeSafe заявляет заметный выигрыш в скорости и стоимости по сравнению с универсальными языковыми моделями в сценариях принятия решений (в посте это пересказ заявления компании, а не проверка).
Команда Columnar задалась вопросом: можно ли ускорить конвейеры на основе Jev, если отдавать ответы в формате Apache Arrow, а не в JSON. Для этого авторы спроектировали схему Arrow для трёх типов вопросов Jev. Choice хранится как структура из индекса варианта (uint8), уверенности и вектора вероятностей фиксированного размера; подписи вариантов лежат в метаданных поля. Score устроен так же, а легенда уровней оценки, в метаданных. Noul, просто число float64 (вероятность). Такие данные могли бы напрямую читать pandas, Polars, DuckDB и Apache DataFusion без десериализации JSON и повторной сборки типизированных столбцов.
Сегодня API Jev Arrow не поддерживает, поэтому авторы смоделировали, как это выглядело бы. Вторая проблема, формат запроса: API удобно задавать много вопросов об одном состоянии, но в нём нет массовой операции, чтобы задать один набор вопросов о множестве независимых состояний. А именно такая задача возникает при проверке модели на выборке исторических обращений клиентов: приходится делать тысячи или миллионы отдельных вызовов.
Выходом стал Jevaro, небольшой прокси-сервер на Python с клиентами на Python и JavaScript. Он принимает в одном запросе несколько состояний и общий набор вопросов, вызывает Jev для каждого состояния и возвращает поток Arrow IPC; результаты идут в порядке входных данных, схема уходит сразу, ответы, по мере готовности. Для скорости использовали долгоживущий пул соединений HTTP/2, окно из ожидающих асинхронных запросов, повторные попытки SDK при обрывах и ограничениях по частоте. Прокси также позволяет браузерным клиентам работать без доступа к ключу TypeSafe; цена решения, лишний процесс и сетевой переход.
Замер: пакет из 10 000 синтетических сообщений клиентов, к каждому, Choice (отдел), Score (срочность) и Noul (запрошен ли возврат). Быстрейший прогон вернул все 10 000 строк за 21,5 секунды, около 464 состояний в секунду. Схема пришла клиенту через 34 миллисекунды, первая строка ответа, через 290 миллисекунд. В это время входят вызовы API, повторные попытки и получение полного результата локально. Оценка стоимости по заявленному расходу токенов и опубликованным тарифам TypeSafe, $0,20 за 30 000 ответов. Авторы предупреждают: лимиты API TypeSafe сейчас часто меняются, поэтому скорость у других может отличаться.
Главный вывод авторов: Jevaro всё равно делает по одному вызову на состояние, а ответы приходят в JSON, который приходится разбирать. Они ожидают (это ожидание, а не измерение), что встроенный массовый вызов с выдачей Arrow даст на порядки более высокую пропускную способность, и хотели бы проверить это вместе с командой TypeSafe. Их пожелание к API узкое: массовая точка доступа, возвращающая Arrow. Дальше они планируют добавить ввод в формате Arrow, лучше подстраиваться под лимиты и экспериментировать с размером пакетов записей; отдельные возможности для конвейеров, смешивающих вероятностные решения с детерминированной обработкой данных, строят в Columnar Gateway.
Ключевые факты
- Jevaro, экспериментальный прокси на Python (клиенты на Python и JavaScript): принимает много состояний и общий набор вопросов, вызывает Jev и отдаёт поток Apache Arrow IPC в порядке входных данных.
- API Jev сегодня возвращает JSON и не имеет массовой операции, поэтому Jevaro всё равно делает один вызов на состояние.
- Схема Arrow для трёх типов вопросов: Choice (индекс, уверенность, вектор вероятностей), Score (оценка, уверенность, вероятности) и Noul (число float64).
- Тест на 10 000 синтетических сообщений: быстрейший прогон, 21,5 секунды (около 464 состояний в секунду), схема через 34 мс, первая строка через 290 мс.
- Оценка стоимости, $0,20 за 30 000 ответов; авторы ожидают, что встроенный массовый вызов с Arrow даст на порядки больше пропускной способности, но этого не измеряли.
Почему это важно
Jev, попытка сделать ответы ИИ удобными для кода: модель возвращает не текст, а варианты, оценки и вероятности. Пост показывает, что при массовой обработке узким местом становится не сама модель, а формат и устройство API: по одному вызову на состояние и ответы в JSON. Авторы предлагают конкретную схему Arrow для ответов Jev, которую можно использовать как заготовку для будущего интерфейса.
Кому это важно
Инженерам данных и разработчикам, которые хотят прогнать Jev по большой выборке исторических данных и сравнить ответы с известными исходами. Также тем, кто работает с pandas, Polars, DuckDB или Apache DataFusion, и команде TypeSafe как источнику пожеланий по API.
Как это применить
Jevaro запускается через uv: нужно задать переменную TYPESAFE_API_KEY и выполнить uvx jevaro-server, затем подключиться клиентом на Python (пакет jevaro, TypeSafeClient) или JavaScript (npm install jevaro). Клиент возвращает PyArrow RecordBatchReader либо AsyncRecordBatchStreamReader; целиком результат можно собрать вызовом read_all(). Условия лицензии и цены самого Jevaro в тексте не указаны; оценка стоимости $0,20 за 30 000 ответов относится к вызовам API TypeSafe.
Можно ли доверять
Цифры получены авторами Jevaro на собственном синтетическом тесте; это самый быстрый прогон, а не среднее. Сравнения с другими способами обработки или с моделями в тесте нет, точность и калибровка Jev на этой задаче не приводятся. Стоимость, оценка по заявленному расходу токенов и опубликованным тарифам, а не счёт. Данные о выигрыше Jev в скорости и цене, пересказ заявления TypeSafe. Оценка «на порядки» для встроенного массового вызова, ожидание авторов, не измерение. Columnar заинтересована в теме: она развивает продукт Columnar Gateway.
Риски и подводные камни
Jevaro, экспериментальный прокси: он добавляет лишний процесс и сетевой переход, а разбор JSON в Arrow всё равно происходит, пусть и вне пользовательского кода. Лимиты API TypeSafe сейчас часто меняются, поэтому скорость может отличаться. Arrow-вывод и массовая точка доступа у самого API не существуют; о согласии TypeSafe их сделать в тексте не говорится, авторы лишь хотят проверить такой вариант вместе с ней.
«Наш список пожеланий к API TypeSafe узкий: массовая точка доступа, которая возвращает Arrow.»
— Columnar, блог компании