Подключите AITUNNEL к популярным инструментам разработки и автоматизации.

DeepSeek HarnessDeepSeek HarnessАгентный харнесс DeepSeek с рабочими пространствами и плагинами — модели через AITUNNEL
Claude CodeClaude CodeТерминальный агент Anthropic — правит код, запускает команды и git-операции через AITUNNEL
Codex CLICodex CLIOpen-source агент OpenAI в терминале — правки кода, ревью и автоматизация задач
CursorCursor IDEAI-редактор на VS Code с автодополнением Tab, агентом Composer и моделями через AITUNNEL
Qwen CodeCLI-агент для Qwen3-Coder — навигация по проекту, сборка фич и правки через AITUNNEL
OpenCodeOpenCodeОткрытый агент для терминала и IDE с поддержкой 75+ LLM-провайдеров
n8nn8nВизуальная автоматизация с AI-агентами, RAG и интеграциями — модели через AITUNNEL
ClineAI-агент для VS Code — правки файлов, команды в терминале и браузер с подтверждением шагов
OpenClawOpenClawAI-агент для Telegram, Discord и Slack — модели через один API-ключ AITUNNEL
Все инструменты

Веб-поиск

Доступ к актуальным данным из интернета: инструмент aitunnel:web_search даёт любой подходящей модели доступ к информации из сети в реальном времени.

Инструмент aitunnel:web_search даёт любой подходящей модели доступ к информации из сети в реальном времени. Модель сама решает, когда искать, формулирует запрос, получает результаты и отвечает со ссылками на источники.

Работает для Chat Completions (/chat/completions) и Responses API (/responses). Добавьте инструмент в массив tools — как обычный function-tool, но с префиксом aitunnel:.

Как это работает

  1. Вы передаёте в запросе tools: [{ "type": "aitunnel:web_search" }] (параметры необязательны).
  2. По промпту пользователя модель решает, нужен ли поиск, и формирует поисковый запрос.
  3. AITUNNEL выполняет поиск выбранным движком (по умолчанию auto: нативный поиск провайдера, если доступен, иначе Exa).
  4. Результаты (URL, заголовки, фрагменты контента) возвращаются модели.
  5. Модель синтезирует ответ. В одном запросе она может искать несколько раз.

aitunnel:web_search можно комбинировать с вашими function-tools в том же массиве tools.

Быстрый старт

curl https://api.aitunnel.ru/v1/chat/completions \
  -H "Authorization: Bearer sk-aitunnel-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "messages": [
      {
        "role": "user",
        "content": "Какие главные анонсы в мире ИИ были на этой неделе?"
      }
    ],
    "tools": [{"type": "aitunnel:web_search"}]
  }'

Конфигурация

Все поля в parameters необязательны. Без parameters поиск включается с настройками по умолчанию.

JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "engine": "exa",
        "max_results": 5,
        "max_total_results": 20,
        "search_context_size": "medium",
        "allowed_domains": ["example.com"],
        "excluded_domains": ["reddit.com"]
      }
    }
  ]
}
ПараметрТипПо умолчаниюОписание
enginestringautoДвижок: auto, native, exa, parallel, perplexity
modestringпо движкуРежим движка, от него зависит цена. Exa: instant, fast, auto (по умолчанию), deep-lite, deep, deep-reasoning. Parallel: turbo, fast, basic (по умолчанию), advanced. Другие движки его игнорируют
max_resultsinteger5Максимум результатов за один поиск (1–25; для Perplexity — 1–20). Применяется к Exa, Parallel и Perplexity; игнорируется при нативном поиске провайдера
max_usesinteger—Максимум поисков за один запрос. После лимита дальнейшие вызовы поиска возвращают ошибку модели вместо выполнения. При нативном поиске параметр пробрасывается только Anthropic (как max_uses); остальные нативные провайдеры его игнорируют
max_total_resultsinteger—Суммарный лимит результатов по всем поискам в одном запросе. Удобно для контроля стоимости и размера контекста
search_context_sizestring—Объём контекста: low, medium, high. Для Exa задаёт фиксированный лимит символов на результат (5K / 15K / 30K); если не указан, Exa выбирает адаптивно (~2–4K). Для Parallel управляет суммарным числом символов по всем результатам (по умолчанию medium). Для Perplexity мапится на нативный search_context_size. Игнорируется при нативном поиске. Перекрывается max_characters, если заданы оба
max_charactersinteger—Точный максимум символов контента на результат (1–100 000). Применяется к Exa, Parallel и Perplexity; игнорируется при нативном поиске. У Parallel без этого поля — 1 500 символов на результат. Если заданы и max_characters, и search_context_size, приоритет у max_characters
user_locationobject—Приблизительная локация для гео-смещения результатов. Сейчас поддерживается только нативным поиском провайдера; для Exa, Parallel и Perplexity игнорируется
allowed_domainsstring[]—Ограничить результаты этими доменами (см. фильтрацию доменов)
excluded_domainsstring[]—Исключить результаты с этих доменов (см. фильтрацию доменов)
x_searchobject—Включить поиск по X (Twitter) у моделей Grok, с фильтрами. Работает только при нативном поиске Grok, остальные модели его игнорируют. См. поиск по X

Локация пользователя

Передайте приблизительную локацию, чтобы сместить результаты географически:

JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "user_location": {
          "type": "approximate",
          "city": "Москва",
          "region": "Москва",
          "country": "RU",
          "timezone": "Europe/Moscow"
        }
      }
    }
  ]
}

Все поля внутри user_location необязательны.

Нативный поиск у Grok по умолчанию ищет только в вебе. Чтобы искать и по постам X, добавьте объект x_search — пустой объект включает поиск без фильтров:

JSON
{
  "model": "grok-4.7",
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "engine": "native",
        "x_search": {
          "allowed_x_handles": ["OpenAI"],
          "from_date": "2026-01-01"
        }
      }
    }
  ]
}
ПолеТипОписание
allowed_x_handlesstring[]Только посты этих аккаунтов (до 20). Нельзя вместе с excluded_x_handles
excluded_x_handlesstring[]Исключить посты этих аккаунтов (до 20). Нельзя вместе с allowed_x_handles
from_datestringС какой даты (ISO 8601, например "2026-01-01")
to_datestringПо какую дату (ISO 8601)
enable_image_understandingbooleanАнализировать картинки в постах
enable_video_understandingbooleanАнализировать видео в постах

Поиск по X оплачивается отдельно от веб-поиска: за каждый найденный пост и профиль, а не за вызов. Поэтому сам он не включается — только через x_search.

Выбор движка

  • auto (по умолчанию) — нативный поиск, если провайдер модели его поддерживает, иначе Exa
  • native — предпочитает встроенный поиск провайдера; если модель его не поддерживает, откатывается на Exa
  • exa — поиск Exa: комбинация keyword- и embeddings-поиска. Возвращает highlights — релевантные выдержки со страницы, а не просто обрезанный текст
  • parallel — поиск Parallel
  • perplexity — Search API Perplexity: ранжированные результаты с фильтрами доменов и контролем размера контекста

Возможности движков

ВозможностьExaParallelPerplexityNative
Фильтрация доменовДаДа*Да*Зависит от провайдера
Контроль размера контекстаДа (на результат)Да (суммарно)ДаНет

* У Parallel и Perplexity allowed_domains и excluded_domains взаимоисключающие. У Perplexity при одновременной передаче обоих приоритет у allowed_domains.

Exa

Режим — mode, по умолчанию auto:

modeЗадержкаЦена вызова
instant~250 мс≈₽1.40
fast~450 мс≈₽1.40
auto~1 с≈₽1.40
deep-lite~4 с≈₽2.40
deep~4–15 с≈₽2.40
deep-reasoning~12–40 с≈₽3.00

Каждый режим включает до 10 результатов, дальше ≈₽0.20 за каждый.

По умолчанию Exa выбирает размер выдержки адаптивно — обычно ~2 000–4 000 символов на результат. Управление бюджетом:

  • search_context_size: low → 5 000, medium → 15 000, high → 30 000 символов на результат
  • max_characters: точное значение 1–100 000; при одновременной передаче с search_context_size побеждает max_characters
JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "engine": "exa",
        "max_characters": 2000
      }
    }
  ]
}

Выдержки возвращаются модели и клиенту через аннотации url_citation. Фрагменты из разных частей одной страницы разделяются маркером [...]:

Пример
Первый фрагмент со страницы.
[...]
Второй фрагмент из другой части той же страницы.
[...]
Третий фрагмент.

Parallel

Поддерживает фильтрацию доменов и search_context_size (лимит применяется суммарно ко всем результатам). Без max_characters и search_context_size — 1 500 символов на результат. Режим — mode, по умолчанию basic:

modeЗадержкаЦена вызоваЯзыки
turbo~200 мс≈₽0.20английский и японский
fast~550 мс≈₽0.20Parallel не указывает
basic~1 с≈₽1.00широкая поддержка
advanced~3 с≈₽1.00широкая поддержка
JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": { "engine": "parallel", "mode": "fast" }
    }
  ]
}

Каждый режим включает до 10 результатов, дальше ≈₽0.20 за каждый.

Для запросов на русском надёжнее basic или advanced: у turbo поддержка только английского и японского.

Perplexity

Возвращает ранжированные результаты (title, URL, snippet) без LLM-синтеза на стороне поисковика. Поддерживает фильтрацию доменов, search_context_size и max_characters. ≈₽1.00 за вызов.

Нативный поиск провайдеров

При engine: "auto" или "native" используется встроенный поиск провайдера, если модель его поддерживает. Нативный поиск есть у:

  • OpenAI — GPT-4.1 / Mini / Nano, GPT-5 и новее, o3, o3 Pro
  • Anthropic — Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4 и новее (Opus / Sonnet)
  • Google — Gemini 3 Flash / Pro, Gemini 3.1 Flash / Lite, Gemini 3.5 Flash, Gemini 3.7 Flash, Gemini 3.8 Flash
  • xAI — Grok 4 и новее (веб-поиск; поиск по X — только через x_search)
  • Perplexity — все модели Perplexity (поиск — ядро их API)

Проверить поддержку веб-поиска у конкретной модели можно на странице модели. Для моделей без нативного поиска укажите exa, parallel или perplexity — либо оставьте auto.

Фильтрация доменов

Ограничьте или исключите домены в результатах:

JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "allowed_domains": ["arxiv.org", "nature.com"],
        "excluded_domains": ["reddit.com"]
      }
    }
  ]
}
Движокallowed_domainsexcluded_domainsПримечание
ExaДаДаМожно вместе
ParallelДаДаВзаимоисключающие
PerplexityДаДаВзаимоисключающие; при обоих приоритет у allowed_domains
Native (Anthropic)ДаДаВзаимоисключающие
Native (OpenAI)ДаНетexcluded_domains игнорируется
Native (Google)НетНетНе поддерживается. При engine: "auto" и фильтрах — откат на Exa; при engine: "native" — ошибка 400
Native (xAI)ДаДаВзаимоисключающие

Ограничение числа результатов

Если модель ищет несколько раз за один запрос, max_total_results ограничивает суммарное число результатов:

JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "max_results": 5,
        "max_total_results": 15
      }
    }
  ]
}

После достижения лимита следующие вызовы поиска возвращают модели сообщение о лимите вместо нового поиска. Это помогает контролировать стоимость и размер контекста.

Ограничение числа поисков

Жёсткий лимит числа поисков за запрос — max_uses:

JSON
{
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "max_uses": 3
      }
    }
  ]
}

После лимита дальнейшие поиски не выполняются. При нативном поиске значение пробрасывается только Anthropic; остальные нативные провайдеры его игнорируют.

Каждый поиск ещё тратит один шаг общего бюджета серверных инструментов запроса. Его задаёт поле max_tool_calls на верхнем уровне запроса, рядом с messages и tools, а не в parameters. По умолчанию и максимум — 30 шагов:

JSON
{
  "model": "gpt-5.6-sol",
  "messages": [{ "role": "user", "content": "..." }],
  "tools": [{ "type": "aitunnel:web_search" }],
  "max_tool_calls": 5
}

Аннотации и цитаты

Результаты поиска стандартизированы AITUNNEL в соответствии со схемой аннотаций OpenAI Chat Completions:

JSON
{
  "message": {
    "role": "assistant",
    "content": "Вот последние новости, которые я нашёл: ...",
    "annotations": [
      {
        "type": "url_citation",
        "url_citation": {
          "url": "https://www.example.com/web-search-result",
          "title": "Заголовок результата",
          "content": "Фрагмент содержимого страницы",
          "start_index": 100,
          "end_index": 200
        }
      }
    ]
  }
}
  • url — источник
  • title — заголовок (если доступен)
  • content — выдержка со страницы (если доступна)
  • start_index / end_index — позиция цитаты в тексте ответа

Responses API

Тот же инструмент aitunnel:web_search работает в /responses — передайте его в tools вместе с input:

curl https://api.aitunnel.ru/v1/responses \
  -H "Authorization: Bearer sk-aitunnel-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "input": "Какая сейчас цена Bitcoin?",
    "tools": [
      {
        "type": "aitunnel:web_search",
        "parameters": {"max_results": 3}
      }
    ]
  }'

Учёт использования

Число фактических поисков отражается в usage ответа:

JSON
{
  "usage": {
    "prompt_tokens": 105,
    "completion_tokens": 250,
    "total_tokens": 355,
    "server_tool_use": {
      "web_search_requests": 2
    }
  }
}

Поле web_search_requests — сколько раз модель реально вызвала поиск в этом запросе (0–N). Тарификация идёт за фактические вызовы, а не за сам факт передачи aitunnel:web_search в tools.

Цены

Стоимость веб-поиска добавляется к обычной оплате токенов за обработку результатов. Тарификация идёт за фактические вызовы поиска (модель может искать 0–N раз за один запрос).

ДвижокЦена
Exa≈₽1.40 в режимах instant, fast и auto (по умолчанию), ≈₽2.40 в deep-lite и deep, ≈₽3.00 в deep-reasoning. До 10 результатов включено, дальше ≈₽0.20 за каждый
Parallel≈₽0.20 в режимах turbo и fast, ≈₽1.00 в basic (по умолчанию) и advanced. До 10 результатов включено, дальше ≈₽0.20 за каждый
Perplexity₽1.00 за запрос поиска
NativeПо тарифу провайдера модели — смотрите страницу модели (поле стоимости веб-поиска)

Все цены указаны за один вызов поиска и не включают стоимость токенов модели на чтение и синтез результатов.

Примеры

Размер контекста

JSON
{
  "model": "gpt-5.6-sol",
  "messages": [
    {
      "role": "user",
      "content": "Какие последние достижения в квантовых вычислениях?"
    }
  ],
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "search_context_size": "high"
      }
    }
  ]
}

Фильтры и лимиты

JSON
{
  "model": "gpt-5.6-sol",
  "messages": [
    {
      "role": "user",
      "content": "Свежие статьи про LLM с arXiv"
    }
  ],
  "tools": [
    {
      "type": "aitunnel:web_search",
      "parameters": {
        "engine": "exa",
        "max_results": 5,
        "max_uses": 3,
        "allowed_domains": ["arxiv.org"],
        "excluded_domains": ["reddit.com"]
      }
    }
  ]
}

Вместе с function-tools

JSON
{
  "model": "gpt-5.6-sol",
  "messages": [
    {
      "role": "user",
      "content": "Найди свежие новости про Apple и сравни с нашей внутренней котировкой"
    }
  ],
  "tools": [
    { "type": "aitunnel:web_search", "parameters": { "max_results": 3 } },
    {
      "type": "function",
      "function": {
        "name": "get_stock_price",
        "description": "Текущая цена акции по тикеру",
        "parameters": {
          "type": "object",
          "properties": {
            "ticker": { "type": "string" }
          },
          "required": ["ticker"]
        }
      }
    }
  ]
}

См. также