GraphQL-моки от LLM: Airbnb, Expedia и проблема стандартизации
Airbnb и Expedia Group внедряют LLM-генерацию мок-данных для GraphQL, но их реализации несовместимы. Открытый RFC GraphQL Foundation пока не принят, что тормозит стандартизацию.

GraphQL-сообщество в 2026 году столкнулось с новой проблемой: как быстро и реалистично генерировать мок-данные для тестирования и разработки. Крупные компании, включая Airbnb и Expedia Group, начали использовать большие языковые модели для автоматического заполнения GraphQL-полей. Однако их подходы различаются, а спецификация GraphQL Foundation до сих пор не принята, что создаёт неопределённость для разработчиков.
Expedia Group в августе 2026 года открыла исходный код утилиты mockql-rs, написанной на Rust. Инструмент работает как CLI-интерфейс и заполняет поля, аннотированные директивой @mock, данными, сгенерированными LLM в момент запроса. Это означает, что разработчики могут получать правдоподобные данные без необходимости вручную создавать заглушки или подключать реальную базу данных.
Airbnb ранее, в апреле 2026 года, представила собственную реализацию под названием @generateMock. Она решает ту же задачу, но использует другую архитектуру: генерация данных происходит на этапе сборки, а не в рантайме. Обе компании используют одинаковое имя директивы @mock, но с разной семантикой, что создаёт путаницу.
Две архитектуры, одна директива
Различия между подходами Airbnb и Expedia носят не только технический, но и концептуальный характер. mockql-rs от Expedia работает в реальном времени: когда поступает GraphQL-запрос, утилита перехватывает его и подставляет сгенерированные данные в поля, помеченные @mock. Это позволяет имитировать динамические данные, которые могут меняться от запроса к запросу, что полезно для тестирования сценариев с большим объёмом данных.
Airbnb же генерирует моки на этапе сборки. Это означает, что данные создаются один раз и затем используются многократно, что ускоряет выполнение тестов и делает их более предсказуемыми. Однако такой подход менее гибок: если требования к данным меняются, необходимо пересобирать проект.
Обе компании используют директиву @mock, но в Airbnb она имеет значение «сгенерировать данные на этапе сборки», а в Expedia — «сгенерировать данные при каждом запросе». Это несовместимо, и разработчик, знакомый с одной реализацией, не сможет без разбора использовать другую.
Предыстория и контекст
Проблема мок-данных в GraphQL не нова. До появления LLM разработчики использовали статические фикстуры, вручную написанные JSON-объекты, или библиотеки типа faker для генерации случайных данных. Однако такие подходы плохо масштабировались: для больших схем требовалось создавать множество фикстур, а случайные данные часто не соответствовали реальным бизнес-правилам.
С появлением больших языковых моделей возникла идея использовать их для генерации данных, которые выглядят естественно и соответствуют контексту. Например, для поля firstName модель может вернуть «Иван», а для email — «ivan@example.com». Это делает моки более реалистичными и сокращает время разработки.
В феврале 2026 года в GraphQL Foundation был открыт RFC, предлагающий стандартизировать подход к LLM-генерации моков. Однако на момент публикации статьи спецификация ещё не была принята, и компании продолжают развивать собственные решения.
Чем отличается подход Expedia от Airbnb?
Основное отличие — время генерации данных. Expedia генерирует данные в рантайме, при каждом запросе, что позволяет имитировать изменяющиеся данные. Airbnb генерирует данные на этапе сборки, что обеспечивает стабильность и скорость, но не позволяет динамически менять данные без пересборки.
Кроме того, Expedia использует Rust и CLI, что делает инструмент лёгким и быстрым, но требует установки отдельной утилиты. Airbnb, вероятно, интегрировал свою реализацию непосредственно в свой GraphQL-сервер, что упрощает использование, но делает её менее универсальной.
Технические подробности
mockql-rs от Expedia написан на Rust и распространяется как CLI-инструмент. Он перехватывает GraphQL-запросы и заменяет поля, аннотированные @mock, на данные, сгенерированные LLM. Для этого он использует API выбранной языковой модели, например OpenAI или локальную модель. Утилита гибко настраивается: можно указать, какие поля генерировать, а какие оставить как есть.
Airbnb, судя по доступной информации, реализовал @generateMock в своём GraphQL-слое. Директива позволяет указать тип данных, которые нужно сгенерировать, и на этапе сборки создаёт статические моки. Это похоже на подход, используемый в некоторых ORM, где генерируются фабрики данных.
Обе реализации сталкиваются с общими проблемами: стоимость вызовов LLM, задержки, безопасность генерируемых данных. Expedia решает проблему задержек за счёт кэширования и асинхронной генерации, Airbnb — за счёт предварительной генерации.
Кого затронет и как
Разработчики, использующие GraphQL, — главная затронутая группа. Они смогут быстрее создавать моки и тестировать свои приложения, но столкнутся с необходимостью выбирать между несовместимыми инструментами. Если они используют Airbnb, они привязаны к их подходу; если Expedia — к другому.
Бизнес выиграет от ускорения разработки и снижения затрат на ручное создание тестовых данных. Однако отсутствие стандарта может привести к фрагментации экосистемы и усложнить переход между компаниями.
Российские разработчики также могут воспользоваться этими инструментами, но им придётся учитывать особенности работы с LLM, включая доступность моделей и вопросы безопасности данных.
Что будет дальше
GraphQL Foundation продолжает работу над RFC, и, возможно, в ближайшие месяцы будет принята спецификация, которая унифицирует подходы. Если этого не произойдёт, сообщество может выбрать де-факто стандарт, основанный на одной из реализаций.
Expedia, вероятно, будет развивать mockql-rs, добавляя новые возможности и улучшая интеграцию с популярными GraphQL-серверами. Airbnb, возможно, поделится своей реализацией с сообществом, если увидит в этом выгоду.
Итог
Появление LLM-генерации мок-данных — значимый шаг в развитии инструментов разработки GraphQL. Однако отсутствие единого стандарта создаёт риски. Разработчикам стоит следить за развитием RFC и выбирать решения, которые смогут адаптироваться к будущим стандартам. Внедрение LLM в тестирование — тренд, который будет только усиливаться.