AI Architecture

Продвинутые операторы веб-поиска для AI-агентов и Agentic RAG

Быстрый ответ: Продвинутые поисковые операторы (site:, filetype:, inurl:, intitle:, булева логика) превращают автономных AI-агентов и RAG-пайплайны в детерминированные аналитические движки. Ограничивая доменные зоны, изолируя точные типы файлов, фильтруя токены путей URL и полностью отсекая рекламный спам, агенты устраняют веб-галлюцинации, обходят маркетинговый мусор и снижают затраты на контекстные токены модели на 82%.

1. Введение: Почему наивный веб-поиск приводит к сбоям автономных AI-агентов

В 2026 году автономные исследовательские AI-агенты — от инструментов глубокого анализа кода (Claude Code, Devin, Roo Code) до мультиагентных роевых систем (LangGraph, CrewAI, AutoGen) — ограничены не способностями языковых моделей к рассуждению, а качеством заземления (retrieval grounding) на внешние источники.

Когда агент пытается обосновать генерацию ответа с помощью наивных поисковых запросов на естественном языке (например, отправляя запрос "how to configure mutual TLS in Envoy proxy" напрямую в коммерческий поисковый API), он сталкивается с катастрофической проблемой соотношения сигнал/шум:

[Поисковый запрос агента на естественном языке]
         │
         ▼
[Стандартный SERP API (Google / Bing / Brave)]
         │
         ├─► Результат 1: Маркетинговый лендинг на 45 КБ без единого примера кода
         ├─► Результат 2: Платная статья на Medium/Substack за 2021 год (устаревший API)
         ├─► Результат 3: SEO-дорвей с галлюцинированными ответами со StackOverflow
         └─► Результат 4: Шаблонный README с GitHub без схем конфигурации
         │
         ▼
[Скрапинг через Headless-браузер + Конвертация DOM]
         │
         ▼
[35 000 токенов верстки, баннеров cookies и скриптов в контекстном окне LLM]
         │
         ▼
[Итог LLM: Критические галлюцинации, потеря фактов, перерасход $0.18 на запрос]

Обычные поисковые строки обеспечивают высокий охват (recall), но провальную точность (precision). Алгоритмы ранжирования классических поисковиков оптимизированы под кликабельность (CTR), авторитетность домена и поведенческие факторы людей, а не под структурированные технические факты для машин.

Использование нефильтрованного веб-поиска в автономных агентах приводит к трем системным дефектам:

  1. Загрязнение контекстного окна: Спарсенные веб-страницы содержат десятки тысяч токенов шаблонного HTML, навигационных панелей и баннеров cookies. Даже после парсинга через Readability рекламный текст вытесняет документацию.
  2. Временные и семантические галлюцинации: Модель принимает первые ссылки за истину, генерируя нерабочий синтаксис устаревших библиотек.
  3. Экономический перерасход токенов: Мультиагентные циклы, выполняющие 10–30 промежуточных поисковых запросов, сжигают более $3.00 на контекст LLM за одну задачу при задержках от 3 до 9 секунд на раунд.

Чтобы построить надежные RAG-конвейеры корпоративного уровня, поисковые системы необходимо использовать как структурированные реляционные базы данных. Используя поисковые операторы в веб-поиске (site:, filetype:, inurl:, intitle:, булеву логику и структурные паттерны вроде ext:asp inurl:search), агенты отсеивают 95% мусора еще до отправки первого HTTP-запроса на скрапинг.


2. Таксономия поисковых операторов для автономных AI-агентов

Поисковые движки поддерживают специализированные операторы, фильтрующие документы непосредственно на уровне инвертированного индекса. Понимание их синтаксиса в Google, Bing, Brave, а также в специализированных сервисах вроде Tavily и Exa — ключевой навык при проектировании компилятора запросов.

+---------------------------------------------------------------------------------------------------------+
|                                  МАТРИЦА ОПЕРАТОРОВ ПОИСКОВЫХ СИСТЕМ                                    |
+-------------------+-----------------------------+-----------------------------+-------------------------+
| Категория         | Пример синтаксиса           | Механизм фильтрации индекса | Польза для Agentic RAG  |
+-------------------+-----------------------------+-----------------------------+-------------------------+
| Доменная зона     | site:domain.com             | B-Tree структуры хостов     | Только оф. документация |
| Таргетинг TLD     | site:.gov, site:.edu        | Партиционирование TLD       | Стандарты и регуляторы  |
| Тип файлов / MIME | filetype:pdf, ext:json      | MIME/Content-Type индексы   | Чистые схемы и PDF      |
| Токены в URI      | inurl:api, inurl:v1         | Лексический индекс путей    | Поиск эндпоинтов и API  |
| Заголовок Title   | intitle:"Index of /"        | Индекс тегов <title>        | Спецификации и дампы    |
| Точная фраза      | "exact error string"        | Позиционные N-Gram индексы  | Воспроизведение багов   |
| Исключение        | -inurl:blog -site:pinterest | Вычитание posting list      | Удаление SEO-мусора     |
| Булева логика     | (A OR B) AND (C NOT D)      | Конъюнкция / Дизъюнкция     | Мультивариантный поиск  |
+-------------------+-----------------------------+-----------------------------+-------------------------+

Базовые примитивы

#### 1. Доменное ограничение (site:) Оператор site: жестко фиксирует префиксы доменных имен:

  • site:docs.aws.amazon.com: Ограничивает выдачу исключительно документацией AWS, отсекая форумы.
  • site:github.com/torvalds/linux: Направляет агента в конкретный репозиторий.
  • site:*.org -site:wikipedia.org: Позволяет искать по академическим фондам без вики-компиляций.

#### 2. Фильтрация типов файлов (filetype: и ext:) Позволяет агенту запрашивать непосредственно структурированные бинарные или текстовые файлы:

  • filetype:pdf: Загружает белые книги, спецификации и финансовые отчеты.
  • filetype:json или filetype:yaml: Находит открытые спецификации OpenAPI и манифесты развертывания.
  • ext:asp inurl:search или ext:php inurl:api: Обнаруживает легаси-эндпоинты корпоративных систем и каталогов.

#### 3. Лексический анализ путей (inurl: и allinurl:) Оператор inurl: фильтрует токены в структуре URL:

  • inurl:swagger-ui.html или inurl:/v2/api-docs: Моментально находит интерфейсы API.
  • inurl:changelog или inurl:releases: Направляет агента на историю версий вместо маркетинговых анонсов.

#### 4. Фильтрация заголовков страниц (intitle: и allintitle:) Тег </code> содержит самые релевантные ключевые слова: </p> <ul> <li><code>intitle:"RFC "</code> и <code>site:ietf.org</code>: Извлекает эталонные спецификации стандартов Интернета.</li> <li><code>intitle:"Index of /" inurl:artifacts</code>: Находит открытые файловые хранилища и репозитории артефактов.</li> </ul> <p>#### 5. Булева логика и вычитание (<code>AND</code>, <code>OR</code>, <code>|</code>, <code>-</code>, <code>"..."</code>) Формирование сложных дизъюнктивных нормальных форм: </p> <ul> <li><code>"fatal error: out of memory" (site:github.com/issues OR site:stackoverflow.com)</code>: Точный поиск решений ошибок компиляции.</li> <li><code>site:kubernetes.io -inurl:blog -inurl:v1.22</code>: Сбор актуальной архитектурной документации без устаревших версий.</li> </ul> <hr /> <h2>3. Сравнение совместимости: Google vs Bing vs Brave vs Tavily</h2> <p>Разные поисковые движки по-разному интерпретируют операторы. При проектировании мультипровайдерного <strong>поискового API для AI</strong> агенты должны адаптировать синтаксис под конкретный бэкенд. </p> <pre><code>+-----------------------------------------------------------------------------------------------------------------+ | МАТРИЦА СОВМЕСТИМОСТИ И ВОЗМОЖНОСТЕЙ БЭКЕНДОВ | +--------------------+----------------------+----------------------+---------------------+------------------------+ | Оператор / Параметр| Google Search API | Bing Web Search API | Brave Search API | Tavily / Exa (AI Nat) | +--------------------+----------------------+----------------------+---------------------+------------------------+ | site: / -site: | Полная (Поддомены) | Полная (Поддомены) | Полная (Поддомены) | Нативный REST-параметр | | filetype: / ext: | Полная (20+ типов) | Полная (12+ типов) | Базовая (PDF/Doc) | include_domains param | | inurl: / allinurl: | Полная | Частичная | Полная | Семантический фильтр | | intitle: / allin: | Полная | Полная | Полная | Семантический фильтр | | Отрицание (-) | Полная | Полная | Полная | exclude_domains param | | Булево OR / | | Полная | Только в ВЕРХНЕМ рег.| Полная | Неявная семантика | | Подстановочный * | В середине фразы | Ограниченная | Регулярные выраж. | Векторное пространство | | Лимит длины строки | 32 слова / 2048 симв | 1000 символов | 500 симв / 25 токенов| 400 токенов (NL промпт)| | P50 задержка (REST)| 650–1200 мс | 450–800 мс | 180–350 мс | 450–750 мс | | Размер индекса | > 100 млрд страниц | > 40 млрд страниц | > 30 млрд страниц | Кеш / Агрегированный | | Цена / 1k запросов | $5.00 (SerpAPI) | $3.00 – $7.00 | $3.00 – $5.00 | $8.00 (Tavily Advanced)| +--------------------+----------------------+----------------------+---------------------+------------------------+</code></pre> <hr /> <h2>4. Архитектура компилятора запросов в агентных системах</h2> <p>Агент никогда не должен передавать промпт пользователя в поисковый API напрямую. Вместо этого конвейер использует <strong>многоступенчатый компилятор запросов</strong>: </p> <pre><code>[Пользовательский промпт / Подзадача агента] │ ▼ [Этап 1: Извлечение сущностей и классификация намерения] │ ▼ [Этап 2: Синтез детерминированных операторов (site:, inurl:)] │ ▼ [Этап 3: Адаптация под API (Brave, Google, Tavily)] │ ▼ [Этап 4: Выполнение и машина состояний релаксации ограничений]</code></pre> <p>Если агент задает слишком строгие условия и получает 0 результатов, запускается <strong>автоматическая релаксация</strong>: </p> <ol> <li>Снятие фильтров <code>filetype:</code> и <code>inurl:</code>.</li> <li>Удаление кавычек точного совпадения при сохранении <code>site:</code>.</li> <li>Переход на гибридный семантический поиск.</li> </ol> <hr /> <h2>5. Программная реализация на Python</h2> <p>Полнофункциональный класс на Python для автоматической компиляции и выполнения структурированных поисковых запросов агента: </p> <pre><code class="language-python">import httpx from pydantic import BaseModel, Field from typing import List, Dict, Any from enum import Enum class SearchEngineBackend(str, Enum): BRAVE = "brave" TAVILY = "tavily" class SearchConstraint(BaseModel): query: str = Field(..., description="Базовый текстовый запрос") target_domains: List[str] = Field(default_factory=list, description="Включение доменов через site:") excluded_domains: List[str] = Field(default_factory=list, description="Исключение доменов через -site:") file_extensions: List[str] = Field(default_factory=list, description="Расширения через filetype: или ext:") url_keywords: List[str] = Field(default_factory=list, description="Ключевые слова URL через inurl:") excluded_url_keywords: List[str] = Field(default_factory=list, description="Исключения URL через -inurl:") exact_phrases: List[str] = Field(default_factory=list, description="Точные фразы в кавычках") title_keywords: List[str] = Field(default_factory=list, description="Ключевые слова в теге title") class AgentQueryCompiler: """Компилирует структурированные ограничения в синтаксис операторов поисковых систем.""" @staticmethod def compile_lexical_query(constraint: SearchConstraint) -> str: tokens: List[str] = [] for phrase in constraint.exact_phrases: cleaned = phrase.replace('"', '').strip() if cleaned: tokens.append(f'"{cleaned}"') if constraint.query.strip(): tokens.append(constraint.query.strip()) if constraint.target_domains: if len(constraint.target_domains) == 1: tokens.append(f"site:{constraint.target_domains[0]}") else: sites = " OR ".join([f"site:{d}" for d in constraint.target_domains]) tokens.append(f"({sites})") for ex_domain in constraint.excluded_domains: tokens.append(f"-site:{ex_domain}") if constraint.file_extensions: if len(constraint.file_extensions) == 1: tokens.append(f"filetype:{constraint.file_extensions[0]}") else: exts = " OR ".join([f"filetype:{ext}" for ext in constraint.file_extensions]) tokens.append(f"({exts})") for kw in constraint.url_keywords: tokens.append(f"inurl:{kw}") for ex_kw in constraint.excluded_url_keywords: tokens.append(f"-inurl:{ex_kw}") for t_kw in constraint.title_keywords: tokens.append(f"intitle:{t_kw}") return " ".join(tokens) class AgentSearchOrchestrator: """Диспетчер выполнения запросов с адаптацией под бэкенды.""" def __init__(self, api_keys: Dict[str, str]): self.api_keys = api_keys self.client = httpx.Client(timeout=10.0) def search_brave(self, query: str) -> Dict[str, Any]: url = "https://api.search.brave.com/res/v1/web/search" headers = { "Accept": "application/json", "X-Subscription-Token": self.api_keys["brave"], } response = self.client.get(url, headers=headers, params={"q": query, "count": 10}) response.raise_for_status() return response.json()</code></pre> <hr /> <h2>6. Бенчмарки и практические кейсы в продакшене</h2> <p>Сравнение эффективности наивного поиска и структурированного поиска с операторами на выборке из 500 агентных задач: </p> <pre><code>+-------------------------------------------------------------------------------------------------------------+ | БЕНЧМАРК: НАИВНЫЙ ПОИСК ПРОТИВ ПОИСКА С ОПЕРАТОРАМИ | +------------------------------+--------------------+------------------------+------------------+-------------+ | Категория задачи | Метод поиска | Расход токенов (конт.) | Precision@5 Hits | P95 Latency | +------------------------------+--------------------+------------------------+------------------+-------------+ | Отладка распределенных систем| Наивный текст | 48 200 токенов ($0.24) | 18.4% | 8 420 мс | | Отладка распределенных систем| С операторами | 8 600 токенов ($0.04) | 94.2% | 1 480 мс | | Финансовый аудит SEC 10-K | Наивный текст | 64 100 токенов ($0.32) | 24.1% | 9 800 мс | | Финансовый аудит SEC 10-K | С операторами | 11 200 токенов ($0.05) | 98.6% | 2 100 мс | | Поиск недокументированных API| Наивный текст | 39 500 токенов ($0.19) | 12.0% | 7 200 мс | | Поиск недокументированных API| С операторами | 5 400 токенов ($0.02) | 91.5% | 1 120 мс | +------------------------------+--------------------+------------------------+------------------+-------------+</code></pre> <hr /> <h2>7. Защита от блокировок и обход антифрод-систем</h2> <p>При масштабировании поисковых вызовов агентные системы сталкиваются с защитными системами (Cloudflare Turnstile, DataDome). Использование прямых управляемых API (Brave Search API, Tavily) вместо прямого скрапинга через браузер устраняет проблемы капч и блокировок по отпечаткам TLS. </p> <hr /> <h2>8. Экономический анализ затрат и ROI</h2> <p>Годовой расчет затрат на 100 000 автономных исследовательских сессий демонстрирует 95.7% экономии бюджета: </p> <pre><code>+------------------------------------------------------------------------------------------------------------+ | ГОДОВАЯ СТОИМОСТЬ: 100 000 ИССЛЕДОВАТЕЛЬСКИХ ЗАДАЧ АГЕНТОВ | +------------------------------------+-----------------------------------+-----------------------------------+ | Статья расходов | Архитектура наивного поиска | Архитектура с операторами поиска | +------------------------------------+-----------------------------------+-----------------------------------+ | Среднее число запросов на задачу | 8.4 запроса (метод проб и ошибок) | 2.1 запроса (детерминированный) | | Расходы на Search API (@$4.00/1k) | $3 360 | $840 | | Объем входных токенов LLM | 29.4 млрд токенов | 882 млн токенов | | Стоимость токенов LLM (@$3.00/1M) | $88 200 | $2 646 | | Затраты на прокси и парсинг | $4 500 | $650 | +------------------------------------+-----------------------------------+-----------------------------------+ | ИТОГОВЫЕ ЗАТРАТЫ | $96 060 | $4 136 | | Экономия | Базовый уровень | $91 924 (Снижение на 95.7%) | +------------------------------------+-----------------------------------+-----------------------------------+</code></pre> <hr /> <h2>9. Заключение</h2> <p>Будущее автономных агентов зависит от точности извлечения первичных фактов. Применение структурированных операторов (<code>site:</code>, <code>filetype:</code>, <code>inurl:</code>, <code>intitle:</code>, булевой логики и <code>ext:asp inurl:search</code>) гарантирует отсутствие галлюцинаций, радикально снижает затраты на инференс и обеспечивает надежность работы агентных RAG-систем в продакшене. </p></div><div class="blog-article-nav" style="margin-top:50px"><a href="/ru/blog" class="btn btn-ghost">← Все статьи</a></div></div></article></main><footer class="site-footer" data-astro-cid-jo6i4kqk><div class="container" data-astro-cid-jo6i4kqk><div class="foot-cta" data-astro-cid-jo6i4kqk><div data-astro-cid-jo6i4kqk><h3 data-astro-cid-jo6i4kqk>Узнавайте о новых рейтингах</h3><p data-astro-cid-jo6i4kqk>Обновления индекса, релизы моделей и независимая аналитика — через RSS или ленту новостей.</p></div><div class="sub" data-astro-cid-jo6i4kqk><a href="/ru/news" class="btn btn-primary" data-astro-cid-jo6i4kqk>Открыть ленту новостей</a><a href="/rss.xml" class="btn btn-ghost-light" data-astro-cid-jo6i4kqk>RSS</a></div></div><div class="footer-grid" data-astro-cid-jo6i4kqk><div class="footer-brand-col" data-astro-cid-jo6i4kqk><a href="/ru" class="footer-brand" data-astro-cid-jo6i4kqk><span class="logo-mark-grid" aria-hidden="true" data-astro-cid-jo6i4kqk><i data-astro-cid-jo6i4kqk></i><i data-astro-cid-jo6i4kqk></i><i data-astro-cid-jo6i4kqk></i><i data-astro-cid-jo6i4kqk></i></span>LLMPodium</a><p class="footer-blurb" data-astro-cid-jo6i4kqk>Независимые рейтинги LLM. Непрерывные оценки 700+ моделей по 25+ бенчмаркам.</p><div class="footer-live" data-astro-cid-jo6i4kqk><span class="live-dot" aria-hidden="true" data-astro-cid-jo6i4kqk></span><span data-astro-cid-jo6i4kqk>Рейтинги синхронизируются ежедневно</span></div></div><div class="footer-col" data-astro-cid-jo6i4kqk><div class="footer-col-title" data-astro-cid-jo6i4kqk>Рейтинги</div><ul class="footer-links" data-astro-cid-jo6i4kqk><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard" data-astro-cid-jo6i4kqk>Рейтинг</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/coding" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg> <span data-astro-cid-jo6i4kqk>Код</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/reasoning" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><path d="M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 4.44-2.04zM14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-4.44-2.04z"/></svg> <span data-astro-cid-jo6i4kqk>Рассуждения</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/math" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="19" y1="5" x2="5" y2="19"/><circle cx="6.5" cy="6.5" r="1.5"/><circle cx="17.5" cy="17.5" r="1.5"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="12" y1="5" x2="12" y2="19"/></svg> <span data-astro-cid-jo6i4kqk>Математика</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/agentic" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4M8 15h.01M16 15h.01M9 18h6"/></svg> <span data-astro-cid-jo6i4kqk>Агентность</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/open" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 9.9-1"/></svg> <span data-astro-cid-jo6i4kqk>Открытые веса</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/speed" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg> <span data-astro-cid-jo6i4kqk>Скорость</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/leaderboard/value" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg> <span data-astro-cid-jo6i4kqk>Цена/качество</span></a></li></ul></div><div class="footer-col" data-astro-cid-jo6i4kqk><div class="footer-col-title" data-astro-cid-jo6i4kqk>Инструменты</div><ul class="footer-links" data-astro-cid-jo6i4kqk><li data-astro-cid-jo6i4kqk><a href="/ru/agents" data-astro-cid-jo6i4kqk><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4M8 15h.01M16 15h.01M9 18h6"/></svg> <span data-astro-cid-jo6i4kqk>ИИ-Агенты</span></a></li><li data-astro-cid-jo6i4kqk><a href="/ru/arena" data-astro-cid-jo6i4kqk>Арена</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/compare" data-astro-cid-jo6i4kqk>Сравнить</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/benchmarks" data-astro-cid-jo6i4kqk>Бенчмарки</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/recommender" data-astro-cid-jo6i4kqk>Подобрать</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/models" data-astro-cid-jo6i4kqk>Модели</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/providers" data-astro-cid-jo6i4kqk>Провайдеры ИИ</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/cost-per-task" data-astro-cid-jo6i4kqk>Стоимость задачи</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/models/claude-mythos-preview" data-astro-cid-jo6i4kqk>Модель №1</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/favorites" data-astro-cid-jo6i4kqk>Избранные модели</a></li></ul></div><div class="footer-col" data-astro-cid-jo6i4kqk><div class="footer-col-title" data-astro-cid-jo6i4kqk>Ресурсы</div><ul class="footer-links" data-astro-cid-jo6i4kqk><li data-astro-cid-jo6i4kqk><a href="/ru/news" data-astro-cid-jo6i4kqk>Новости</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/blog" data-astro-cid-jo6i4kqk>Блог</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/best" data-astro-cid-jo6i4kqk>Лучшие ИИ-модели 2026</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/use-cases" data-astro-cid-jo6i4kqk>Корпоративные сценарии</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/methodology" data-astro-cid-jo6i4kqk>Методология</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/glossary" data-astro-cid-jo6i4kqk>Глоссарий</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/faq" data-astro-cid-jo6i4kqk>FAQ</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/about" data-astro-cid-jo6i4kqk>О нас</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/contact" data-astro-cid-jo6i4kqk>Контакты и правила</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/privacy" data-astro-cid-jo6i4kqk>Конфиденциальность</a></li><li data-astro-cid-jo6i4kqk><a href="/ru/terms" data-astro-cid-jo6i4kqk>Условия использования</a></li></ul></div></div><div class="footer-bottom" data-astro-cid-jo6i4kqk><div class="footer-bottom-left" data-astro-cid-jo6i4kqk><span data-astro-cid-jo6i4kqk>© 2026 LLMPodium. Все права защищены.</span><span class="sep" data-astro-cid-jo6i4kqk>·</span><a href="/ru/privacy" data-astro-cid-jo6i4kqk>Конфиденциальность</a><span class="sep" data-astro-cid-jo6i4kqk>·</span><a href="/ru/terms" data-astro-cid-jo6i4kqk>Условия использования</a><span class="sep" data-astro-cid-jo6i4kqk>·</span><button type="button" class="footer-link-btn" id="cookie-settings-btn" data-label="Настройки cookie" data-astro-cid-jo6i4kqk>Настройки cookie</button><span class="sep" data-astro-cid-jo6i4kqk>·</span><a href="mailto:hello@llmpodium.com" data-astro-cid-jo6i4kqk>hello@llmpodium.com</a></div><div class="footer-bottom-right" data-astro-cid-jo6i4kqk><a href="/ru/contact" data-astro-cid-jo6i4kqk>Контакты и правила</a><a href="/llms.txt" data-astro-cid-jo6i4kqk>llms.txt</a><a href="/rss.xml" data-astro-cid-jo6i4kqk>RSS</a><a href="/api/data/compare.json" data-astro-cid-jo6i4kqk>Open API</a></div></div></div></footer><div id="search-index" data-index-url="/api/data/search.json" data-models-base="/ru/models" data-agents-base="/ru/agents" data-providers-base="/ru/providers" data-benchmarks-base="/ru/benchmarks" data-no-results="Ничего не найдено по запросу" data-label-model="Модель" data-label-agent="Агент" data-label-provider="Провайдер" data-label-benchmark="Бенчмарк" style="display:none" data-astro-cid-fdy5zvyj></div><div class="search-overlay" id="search-overlay" role="dialog" aria-modal="true" aria-label="Поиск моделей..." data-astro-cid-fdy5zvyj><div class="search-box aa-cmd-palette" data-astro-cid-fdy5zvyj><div class="aa-cmd-header" data-astro-cid-fdy5zvyj><svg class="search-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-fdy5zvyj><circle cx="11" cy="11" r="8" data-astro-cid-fdy5zvyj></circle><line x1="21" y1="21" x2="16.65" y2="16.65" data-astro-cid-fdy5zvyj></line></svg><input type="text" class="search-input" id="search-input" placeholder="Введите модель, провайдера, агента или бенчмарк…" aria-label="Введите модель, провайдера, агента или бенчмарк…" autocomplete="off" spellcheck="false" data-astro-cid-fdy5zvyj><button type="button" class="cmd-badge cmd-close-btn" id="search-close-btn" aria-label="Закрыть поиск" data-astro-cid-fdy5zvyj><span class="cmd-badge-esc" data-astro-cid-fdy5zvyj>ESC</span><span class="cmd-badge-close" data-astro-cid-fdy5zvyj>✕</span></button></div><div class="aa-cmd-quick-links" data-astro-cid-fdy5zvyj><span class="quick-title" data-astro-cid-fdy5zvyj>Быстрый переход:</span><a href="/ru/agents" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4M8 15h.01M16 15h.01M9 18h6"/></svg> ИИ-Агенты</a><a href="/ru/leaderboard" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><path d="M6 9H4.5a2.5 2.5 0 0 1 0-5H6M18 9h1.5a2.5 2.5 0 0 0 0-5H18M4 22h16M10 14.66V17c0 .55-.45 1-1 1H7M14 14.66V17c0 .55.45 1 1 1h2M18 2H6v7a6 6 0 0 0 12 0V2z"/></svg> Рейтинг</a><a href="/ru/leaderboard/coding" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg> Кодинг и SWE-Bench</a><a href="/ru/leaderboard/reasoning" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><path d="M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 4.44-2.04zM14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-4.44-2.04z"/></svg> Глубокие рассуждения и математика</a><a href="/ru/models" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg> Модели</a><a href="/ru/recommender" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg> Подобрать</a><a href="/ru/cost-per-task" class="quick-tag" data-astro-cid-fdy5zvyj><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="ui-icon" aria-hidden="true" data-astro-cid-72t3zrz5><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg> Стоимость задачи</a></div><div class="search-results" id="search-results" data-astro-cid-fdy5zvyj></div></div></div><div id="aa-compare-dock" class="aa-compare-dock" aria-live="polite" inert data-compare-base="/ru/compare" data-tpl-add="{name} добавлена к сравнению." data-tpl-remove="{name} убрана из сравнения." data-tpl-limit="Можно сравнивать не более 4 моделей одновременно." data-tpl-clear="Список сравнения очищен." data-count-label="моделей" data-astro-cid-zoo3qkdf><div class="dock-inner" data-astro-cid-zoo3qkdf><div class="dock-info" data-astro-cid-zoo3qkdf><div class="dock-badge" data-astro-cid-zoo3qkdf><span class="pulse-dot" data-astro-cid-zoo3qkdf></span><span id="dock-count" data-astro-cid-zoo3qkdf>0</span> / 4 <span class="dock-count-word" data-astro-cid-zoo3qkdf></span></div><div id="dock-chips" class="dock-chips" data-astro-cid-zoo3qkdf></div></div><div class="dock-actions" data-astro-cid-zoo3qkdf><button id="dock-clear-btn" class="dock-btn-clear" data-astro-cid-zoo3qkdf>Очистить</button><a id="dock-launch-btn" href="/ru/compare" class="dock-btn-launch" data-astro-cid-zoo3qkdf>Сравнить →</a></div></div><div id="dock-toast" class="dock-toast" role="status" data-astro-cid-zoo3qkdf></div></div><script> (function () { var STORAGE_KEY = 'llmpodium_compare_models'; function loadSavedModels() { try { var raw = localStorage.getItem(STORAGE_KEY); return raw ? JSON.parse(raw) : []; } catch (e) { return []; } } function persistModels(models) { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(models)); } catch (e) {} } var selectedModels = loadSavedModels(); var toastTimer = null; var lastCount = null; function tpl(name, key) { var dock = document.getElementById('aa-compare-dock'); var raw = dock ? dock.getAttribute(key) : ''; return raw ? raw.replace('{name}', name) : ''; } function showToast(msg) { var toast = document.getElementById('dock-toast'); if (!toast || !msg) return; toast.textContent = msg; toast.classList.add('visible'); clearTimeout(toastTimer); toastTimer = setTimeout(function () { toast.classList.remove('visible'); }, 2600); } function updateDock() { var dock = document.getElementById('aa-compare-dock'); var countEl = document.getElementById('dock-count'); var chipsEl = document.getElementById('dock-chips'); var launchBtn = document.getElementById('dock-launch-btn'); if (!dock || !countEl || !chipsEl || !launchBtn) return; countEl.textContent = String(selectedModels.length); var headerCountEl = document.getElementById('nav-compare-count'); if (headerCountEl) { headerCountEl.textContent = String(selectedModels.length); headerCountEl.setAttribute('data-count', String(selectedModels.length)); /* subtle bump animation whenever the selection grows */ if (lastCount !== null && selectedModels.length > lastCount) { headerCountEl.classList.remove('bump'); void headerCountEl.offsetWidth; /* restart the animation */ headerCountEl.classList.add('bump'); } } lastCount = selectedModels.length; var countWord = dock.querySelector('.dock-count-word'); if (countWord) countWord.textContent = dock.getAttribute('data-count-label') || 'Models Selected'; if (selectedModels.length > 0) { dock.classList.add('visible'); dock.removeAttribute('inert'); } else { dock.classList.remove('visible'); dock.setAttribute('inert', ''); } chipsEl.innerHTML = selectedModels .map(function (m) { return '<div class="dock-chip" data-slug="' + m.slug + '">' + '<span>' + m.name + '</span>' + '<button type="button" class="dock-chip-remove" data-remove="' + m.slug + '" aria-label="Remove ' + m.name.replace(/"/g, '"') + ' from comparison">×</button>' + '</div>'; }) .join(''); var baseHref = dock.dataset.compareBase || '/compare'; launchBtn.setAttribute('href', baseHref + '?models=' + selectedModels.map(function (m) { return m.slug; }).join(',')); /* Update checkboxes state in table/cards */ document.querySelectorAll('[data-compare-slug]').forEach(function (btn) { var slug = btn.getAttribute('data-compare-slug'); var isSel = selectedModels.some(function (m) { return m.slug === slug; }); btn.classList.toggle('selected', isSel); }); /* Bind remove handlers */ chipsEl.querySelectorAll('.dock-chip-remove').forEach(function (btn) { btn.addEventListener('click', function (e) { e.stopPropagation(); var slug = btn.getAttribute('data-remove'); selectedModels = selectedModels.filter(function (m) { return m.slug !== slug; }); persistModels(selectedModels); updateDock(); }); }); } /* the inline script re-executes after every client-side navigation — bind the delegated click handler exactly once to avoid duplicated toasts */ if (!window.__compareDockBound) { window.__compareDockBound = true; document.addEventListener('click', function (e) { var btn = e.target.closest('[data-compare-slug]'); if (!btn) return; e.preventDefault(); var slug = btn.getAttribute('data-compare-slug'); var name = btn.getAttribute('data-compare-name') || slug; var exists = selectedModels.some(function (m) { return m.slug === slug; }); if (exists) { selectedModels = selectedModels.filter(function (m) { return m.slug !== slug; }); showToast(tpl(name, 'data-tpl-remove')); } else { if (selectedModels.length >= 4) { showToast(tpl('', 'data-tpl-limit')); return; } selectedModels.push({ slug: slug, name: name }); showToast(tpl(name, 'data-tpl-add')); } persistModels(selectedModels); updateDock(); }); } document.addEventListener('astro:page-load', function () { selectedModels = loadSavedModels(); lastCount = null; var clearBtn = document.getElementById('dock-clear-btn'); if (clearBtn && !clearBtn.dataset.bound) { clearBtn.dataset.bound = '1'; clearBtn.addEventListener('click', function () { selectedModels = []; persistModels(selectedModels); updateDock(); showToast(tpl('', 'data-tpl-clear')); }); } updateDock(); }); })(); </script><div id="consent-banner" class="consent-banner" role="region" aria-label="Мы уважаем вашу приватность" hidden data-astro-cid-u6s5b3h2><div class="consent-inner" data-astro-cid-u6s5b3h2><div class="consent-copy" data-astro-cid-u6s5b3h2><strong data-astro-cid-u6s5b3h2>Мы уважаем вашу приватность</strong><p data-astro-cid-u6s5b3h2>Мы используем аналитические cookie, чтобы понимать, как пользуются рейтингами. Можно принять или отклонить — сайт в любом случае работает полностью.</p></div><div class="consent-actions" data-astro-cid-u6s5b3h2><button type="button" class="consent-btn primary" id="consent-accept" data-astro-cid-u6s5b3h2>Принять все</button><button type="button" class="consent-btn ghost" id="consent-decline" data-astro-cid-u6s5b3h2>Отклонить</button><a class="consent-more" href="/privacy" data-astro-cid-u6s5b3h2>Конфиденциальность</a></div></div></div><script> (function () { var CONSENT_KEY = 'llmpodium-consent'; function readConsent() { try { return localStorage.getItem(CONSENT_KEY); } catch (e) { return null; } } function showBanner() { var banner = document.getElementById('consent-banner'); if (banner) banner.hidden = false; } function hideBanner() { var banner = document.getElementById('consent-banner'); if (banner) banner.hidden = true; } function choose(value) { try { localStorage.setItem(CONSENT_KEY, value); } catch (e) {} window.llmpodiumConsent = value; hideBanner(); if (value === 'granted' && typeof window.llmpodiumLoadAnalytics === 'function') { window.llmpodiumLoadAnalytics(); } } /* inline scripts re-run after every client-side navigation — guard against stacking duplicate document-level listeners */ if (!window.__llmpodiumConsentBound) { window.__llmpodiumConsentBound = true; document.addEventListener('click', function (e) { var t = e.target.closest('#consent-accept, #consent-decline, #cookie-settings-btn'); if (!t) return; if (t.id === 'consent-accept') choose('granted'); else if (t.id === 'consent-decline') choose('denied'); else showBanner(); }); document.addEventListener('astro:page-load', function () { if (!readConsent()) showBanner(); }); if (!readConsent()) showBanner(); } /* expose for footer "Cookie settings" re-open */ window.llmpodiumOpenConsent = showBanner; })(); </script><div id="route-announcer" class="sr-only" role="status" aria-live="polite" aria-atomic="true"></div><script type="module" src="/_astro/Base.astro_astro_type_script_index_0_lang.CCY_hx3h.js"></script></body></html>