Wayfinder Router: маршрутизация запросов между локальными и облачными моделями без вызова ИИ

Wayfinder Router, инструмент для детерминированной маршрутизации пользовательских запросов между локальной и облачной LLM. Вместо того чтобы вызывать модель или обученный классификатор для оценки сложности промпта, Wayfinder анализирует его структуру: длину, заголовки, списки, код, и языковые индикаторы (доказательства, математику, жёсткие ограничения). На основе анализа выставляет оценку сложности от 0 до 1 и за микросекунды выдаёт рекомендацию: отправить простой запрос в локальную модель (экономия) или сложный в облачную (точность). Работает полностью офлайн, без сетевых вызовов и ключей API в момент маршрутизации. По умолчанию анализирует только структуру (входит в окончательный бинарный релиз); лексические сигналы (math, reasoning) опциональны и требуют настройки на ваш трафик. Инструмент выложен с терминальным чатом (работает из коробки с uvx, без инсталляции), веб-интерфейсом с интерактивным слайдером и шлюзом, совместимым с любым OpenAI-compatible эндпоинтом (Anthropic, DeepSeek, Groq, Together, vLLM, Ollama и т.д.). Ключи прочитываются из переменных окружения и никогда не записываются на диск. Автор подчёркивает, что Wayfinder не гонится за максимальной точностью (на RouterBench проигрывает на коротких но сложных запросах), а обеспечивает единственный роутер, который работает офлайн с нулевыми вызовами моделей и поддаётся настройке по вашему реальному трафику.
Ключевые факты
- Анализирует структуру промпта (длина, код, заголовки) и лексические сигналы (math, reasoning, constraints) за микросекунды, без вызова модели
- Рекомендует маршрут (локальная/облачная модель) на основе оценки сложности; работает полностью офлайн и детерминирован
- Поддерживает любой OpenAI-compatible эндпоинт: Anthropic, OpenAI, DeepSeek, Groq, Together, Ollama, vLLM, llama.cpp
- Ключи читаются из env в момент запроса и никогда не трогают конфиг; поддерживает хранилища (1Password, macOS Keychain, Linux secret-tool, vault, AWS Secrets Manager и др.)
- Калибруется на ваш трафик: бинарный порог (threshold), многоуровневая маршрутизация (tiers) или обученный классификатор; инструмент для калибровки работает офлайн
Почему это важно
Маршрутизация LLM-запросов, это реальная проблема для приложений, использующих гибридные стеки (локальная + облачная модель). Обычные роутеры или вызывают обученный классификатор/LLM (добавляют задержку и стоимость, то есть едят ту экономию, ради которой маршрутизируешь), или полагаются на семантику и требуют обучения. Wayfinder идёт другим путём: структурный анализ (длина, разметка, код) и лексические сигналы (признаки сложности в тексте) вычисляются мгновенно, локально и бесплатно. Это позволяет избежать платных фронтир-моделей для простых задач (резюме, typo-фиксы) и отправить сложное туда, где оно обработается лучше.
Кому это важно
Разработчикам, которые строят приложения с гибридным LLM-стеком (Ollama/vLLM локально + OpenAI/Anthropic в облаке); продуктам с высокой латентностью-сознательностью (IDE-плагины, агенты, чаты); командам, которые хотят контролировать маршрутизацию и не полагаться на чёрные ящики; компаниям, которые цену ценят: дешёвый роутер без API-вызовов экономит не только на самих моделях, но и на инфраструктуре маршрутизации.
Как это применить
Установка: pip install wayfinder-router (или через uvx без инсталляции). Инициализация конфига: wayfinder-router init (выбирает пресет: Ollama + Anthropic, два OpenAI уровня, два Gemini уровня, или ручной выбор). Экспортируешь ключи (ANTHROPIC_API_KEY, OPENAI_API_KEY и т.д.), Wayfinder читает их в момент запроса, не сохраняет. Запускаешь шлюз: wayfinder-router serve --port 8088. Твой приложение (чат, IDE, агент) указывает base_url на локальный шлюз вместо прямого вызова облачного API. Ответ возвращается с заголовками x-wayfinder-router-model и x-wayfinder-router-score, чтобы видеть, куда маршрутизировалось и с какой оценкой. Для калибровки: подготовишь JSONL с размеченными примерами ({text, label}), запускаешь wayfinder-router calibrate (работает офлайн) и получаешь оптимальный threshold или конфиг классификатора.
Можно ли доверять
Автор honesty встроил в документацию: Wayfinder НЕ претендует на best-in-class точность. На RouterBench проигрывает на коротких но семантически сложных примерах (типа «что такое 100-е простое число?», нет структурных признаков, семантический роутер выигрывает). Лексические сигналы (math, reasoning) в double-blind тесте на независимо-авторских промптах показали прирост только на ~20% unseen hard prompts и проигрывают simple word-count baseline, поэтому они opt-in с дефолтными нулевыми весами. Преимущество, которое переживает blind-тест, структурный анализ без модельного вызова: его можно запустить и подладить на свой трафик. Открыта бенчмарк и FAQ с честными ответами о границах.
Риски и подводные камни
Семантически коварные промпты (невинно выглядящие, но требующие высокой способности) без структурных признаков не будут маршрутизированы правильно, дефолтный Wayfinder отправит их в локальную модель и получит худший результат. Лексические веса требуют калибровки на ваш конкретный трафик: взять готовый конфиг и применить на другом корпусе, значит рисковать. Threshold в бинарной маршрутизации, это рычаг, который придётся настраивать под вас; что хорошо для одного распределения запросов, может быть плохо для другого. Deterministic routing означает, что если структурные сигналы ложно срабатывают (например, длинное резюме выглядит как сложный запрос), маршрутизация будет неправильной каждый раз. Ключи читаются из env в момент запроса, если env polluted или украдена, все маршруты скомпрометированы (но это не специфично для Wayfinder).