Perplexity представила новую архитектуру поиска — Search as Code (SaC). Идея простая: вместо того чтобы модель просто отправляла запрос в поисковый движок и получала готовый результат, она сама собирает пайплайн из отдельных «кирпичиков» поискового стека. Эти кирпичики — примитивы для поиска, ранжирования, фильтрации, агрегации — выложены в Agentic Search SDK. Модель пишет Python-код, который их вызывает, и выполняет его в безопасной sandbox-среде. Так она получает полный контроль над каждым шагом.
Зачем это нужно? Традиционный поиск жёсткий. Он заточен под человека: вбил запрос — получил список ссылок. Для простых AI-задач это ещё работает, но для сложных агентов — нет. Агенты выполняют задачи часами, им нужно делать сотни и тысячи операций поиска за минуту, переключаться между разными стратегиями, не засорять контекст лишним мусором. Старый подход даёт три проблемы: грубый контекст (много лишнего или, наоборот, не хватает), невозможность применить знания модели о том, как именно искать, и неэффективное управление потоком (всё приходится делать последовательно, через отдельные вызовы модели).
Архитектура SaC состоит из трёх слоёв. Модель — это мозг: она решает, что искать и как строить пайплайн. Sandbox — песочница, где выполняется код модели. Agentic Search SDK — набор примитивов, которые модель может вызывать. Сами sandbox-ы используют файловую систему для передачи промежуточных результатов между витками: модель явно сохраняет данные на диск и загружает их в следующем шаге. Так надёжнее, чем держать всё в памяти, как в Jupyter.
Команда Perplexity уже проверила SaC на реальной задаче: нужно было найти больше 200 CVE с высоким уровнем опасности за 2023–2025 годы, причём каждый — с ссылкой на официальный бюллетень вендора. SaC набрала 100% точности, потратив на 85% меньше токенов (42.9K вместо 288.7K). Конкуренты (не Perplexity) не дотянули даже до 25%. Секрет в том, что модель сама написала код: сначала сделала параллельные запросы по шаблонам для разных вендоров, потом через LLM-подсказки уточнила, где данных мало, а в конце отфильтровала результаты по жёсткой схеме — чтобы каждая уязвимость была привязана к конкретному продукту и версии фикса. Всё это — обычный Python-код, а не захардкоженный пайплайн.