API VEGA
13 сентября 2026 г.

Веб-поиск для любой AI-модели через API VEGA: plugins, server tool и :online

У любой модели есть дата обрезки знаний. Спросите её о вчерашних новостях, курсе валюты или свежем релизе библиотеки, и она либо честно скажет «не знаю», либо начнёт выдумывать. Через API VEGA эту проблему решает встроенный веб-поиск: он работает для любой модели в каталоге и включается одним параметром в запросе.

VEGA полностью совместима с OpenRouter, поэтому вся механика та же самая. Разница одна: вместо https://openrouter.ai/api/v1 используется https://api.vega.chat/api/v1, а ключ создаётся в личном кабинете на api.vega.chat/keys. Все примеры ниже уже написаны под VEGA.

Три способа включить поиск

  1. Плагин web в поле plugins: поиск выполняется один раз перед ответом модели, результаты подмешиваются в контекст.
  2. Server tool openrouter:web_search: модель сама решает, когда искать, и может сделать несколько запросов за один ответ.
  3. Суффикс :online в имени модели: шорткат, эквивалент плагина web с настройками по умолчанию.

Плюс у части провайдеров есть собственный поиск (OpenAI, Anthropic, Google, Perplexity, xAI). По умолчанию VEGA использует его там, где он есть, а для остальных моделей подключает Exa.

Способ 1. Плагин web

Минимальный рабочий запрос:

Bash
curl https://api.vega.chat/api/v1/chat/completions \
  -H "Authorization: Bearer $VEGA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.2",
    "messages": [
      {"role": "user", "content": "Что сегодня случилось в мире AI?"}
    ],
    "plugins": [{"id": "web", "max_results": 5}]
  }'

Перед генерацией VEGA выполняет поиск, берёт до max_results результатов (по умолчанию 5) и добавляет выдержки из страниц в промпт. Модель отвечает с опорой на свежие данные и возвращает ссылки на источники в поле annotations:

JSON
{
  "message": {
    "role": "assistant",
    "content": "Вот последние новости: ...",
    "annotations": [
      {
        "type": "url_citation",
        "url_citation": {
          "url": "https://example.com/news",
          "title": "Заголовок статьи",
          "content": "Выдержка со страницы",
          "start_index": 24,
          "end_index": 118
        }
      }
    ]
  }
}

Плагин можно настроить:

JSON
"plugins": [{
  "id": "web",
  "engine": "exa",
  "mode": "auto",
  "max_results": 3,
  "search_prompt": "Вот свежие результаты поиска:",
  "include_domains": ["habr.com", "*.medium.com"],
  "exclude_domains": ["reddit.com"]
}]

Поле search_prompt определяет, как результаты подставляются в контекст. По умолчанию модель получает инструкцию цитировать источники markdown-ссылками с именем домена, например [nytimes.com](https://nytimes.com/page). Можно задать свой формат, если нужны цитаты в другом виде.

Способ 2. Server tool openrouter:web_search

Вариант поинтереснее для агентов. Здесь поиск оформлен как обычный тулз, и модель сама решает, нужен ли он. Спросите «сколько будет 2+2» и поиска не будет. Спросите про погоду, и модель сходит в интернет, при необходимости несколько раз с уточняющими запросами.

mermaid
flowchart LR
    U["Ваш запрос"] --> M["Модель"]
    M -->|нужны свежие данные| S["openrouter:web_search"]
    S --> R["Результаты поиска"]
    R --> M
    M -->|может искать ещё| S
    M --> A["Ответ с цитатами"]
Bash
curl https://api.vega.chat/api/v1/chat/completions \
  -H "Authorization: Bearer $VEGA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.2",
    "messages": [
      {"role": "user", "content": "Какие AI-модели вышли на этой неделе?"}
    ],
    "tools": [{"type": "openrouter:web_search"}]
  }'

Тулз принимает параметры:

ПараметрПо умолчаниюЧто делает
engineautoДвижок: auto, native, exa, firecrawl, parallel, perplexity
modeу движкаРежим поиска, зависит от движка (см. таблицу цен ниже)
max_results5Результатов за один поиск, от 1 до 25
max_usesбез лимитаМаксимум поисковых вызовов за запрос
max_total_resultsбез лимитаСуммарный лимит результатов по всем поискам
search_context_sizeнетlow / medium / high: размер выдержек
max_charactersнетТочный лимит символов на результат, до 100 000
allowed_domains / excluded_domainsнетФильтр доменов
user_locationнетГород, регион, страна для локальных результатов

Число поисков ограничивается двумя способами. max_uses ставит жёсткий лимит на вызовы этого тулза, а верхнеуровневый max_tool_calls ограничивает общий бюджет серверных тулзов на запрос (по умолчанию и максимум 30):

JSON
{
  "tools": [{
    "type": "openrouter:web_search",
    "parameters": {"max_uses": 3, "max_total_results": 15}
  }],
  "max_tool_calls": 5
}

Это удобно для агентных циклов: модель может уточнять запросы, но не уйдёт в бесконечный поиск и не съест бюджет.

Способ 3. Суффикс :online

Самый короткий вариант: допишите :online к имени модели.

JSON
{"model": "openai/gpt-5.2:online", "messages": [...]}

Работает и с бесплатными моделями: openai/gpt-oss-20b:free:online. Учтите, что сам поиск платный даже у free-моделей, бесплатны только токены. Способ считается устаревшим в пользу server tool, но полностью работает и хорош для быстрых тестов.

Движки поиска и цены

За поиск отвечает параметр engine. Значение auto (по умолчанию) выбирает нативный поиск провайдера, если модель его поддерживает, иначе Exa.

ДвижокЦенаЧто включено
Exa instant / fast / auto$0.007 за поискдо 10 результатов
Exa deep-lite / deep$0.012 за поискдо 10 результатов
Exa deep-reasoning$0.015 за поискдо 10 результатов
Parallel turbo / fast$0.001 за поискдо 10 результатов
Parallel basic / advanced$0.005 за поискдо 10 результатов
Perplexity$0.005 за поискдо 10 результатов
Firecrawlкредиты вашего аккаунта FirecrawlBYOK, VEGA не берёт доплаты
nativeтарифы провайдеранапример, у Anthropic $10 за 1000 поисков

Результаты сверх десяти стоят $0.001 за штуку у Exa и Parallel. У Exa режимы отличаются глубиной и скоростью: auto отвечает примерно за секунду, deep копает 4-15 секунд, deep-reasoning до 40 секунд.

Нативный поиск есть у свежих OpenAI (gpt-4.1 и новее, o3, o4-mini), Anthropic (Claude 3.5 Haiku, 3.7 Sonnet и всё семейство 4.x), Google Gemini 3, Grok 4+ и всех моделей Perplexity. Он оплачивается по прайсу провайдера и проходит прозрачно через счёт VEGA.

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

Ограничить источники можно списками доменов с поддержкой масок и путей:

JSON
"plugins": [{
  "id": "web",
  "include_domains": ["arxiv.org", "*.nature.com"],
  "exclude_domains": ["pinterest.com"]
}]

У Exa оба списка можно использовать вместе, у Parallel, Perplexity и Firecrawl они взаимоисключающие. С нативным поиском по-разному: у Anthropic списки тоже взаимоисключающие, у OpenAI работает только include_domains, а Google фильтры не поддерживает совсем. Если задать фильтры с engine: "auto" для Google-модели, VEGA сама переключится на Exa.

Поиск по X для Grok

У моделей xAI плагин дополнительно включает поиск по постам X/Twitter, и им можно управлять через x_search_filter:

JSON
{
  "model": "x-ai/grok-4.1-fast",
  "messages": [{"role": "user", "content": "Что пишут про VEGA в X?"}],
  "plugins": [{"id": "web"}],
  "x_search_filter": {
    "allowed_x_handles": ["OpenRouterAI"],
    "from_date": "2026-01-01",
    "enable_image_understanding": true
  }
}

Фильтрует по хендлам (до 20), диапазону дат и умеет анализировать картинки и видео в постах.

Как это считается в деньгах

Счёт за запрос с поиском складывается из двух частей: токены модели (сюда входят и токены найденных страниц, они добавляются в prompt) плюс стоимость самого поиска по таблице выше. Обе части уже включены в usage.cost ответа, ничего пересчитывать вручную не нужно.

Пример: запрос к openai/gpt-5.2 с plugins: [{"id": "web", "engine": "exa", "max_results": 5}]. Поиск стоит $0.007, результаты добавили, скажем, 6000 prompt-токенов. Итоговое списание будет токены по тарифу модели + $0.007, всё в одной строке usage.cost.

Детали по каждой генерации видны через GET /api/v1/generation?id=<id генерации>: там есть total_cost, num_search_results и web_search_engine (например "exa"), так что расходы на поиск можно разложить по факту.

Практические советы

Для чат-бота с кнопкой «искать в сети» проще всего плагин web: один поиск на запрос, предсказуемая цена. Для агента берите server tool и обязательно ставьте max_uses и max_total_results, иначе любопытная модель нагенерирует десяток поисков за раз.

Дёшево и быстро: engine: "parallel", mode: "turbo" за $0.001 или engine: "exa" за $0.007. Глубокое исследование: exa с mode: "deep".

Если ответ раздувает от контекста, режьте выдержки через search_context_size: "low" или max_characters: 2000. По умолчанию Exa отдаёт 2-4 тысячи символов на результат, при high до 30 тысяч.

Полный пример на Python

Python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.vega.chat/api/v1",
    api_key="YOUR_VEGA_API_KEY",
)

response = client.chat.completions.create(
    model="openai/gpt-5.2",
    messages=[
        {"role": "user", "content": "Какие новые AI-модели вышли на этой неделе?"}
    ],
    extra_body={
        "plugins": [{"id": "web", "engine": "exa", "max_results": 5}]
    },
)

message = response.choices[0].message
print(message.content)

for ann in message.annotations or []:
    if getattr(ann, "type", None) == "url_citation":
        cite = ann.url_citation
        print(f"- {cite.title}: {cite.url}")

print("Списано:", response.usage.model_dump().get("cost"))

Тот же запрос работает и через POST /api/v1/responses, и через POST /api/v1/messages для Anthropic-совместимого API: поля plugins и tools принимаются везде, цитаты в ответе придут в едином формате url_citation.

На этом всё: один параметр в запросе, и модель отвечает по свежим данным с ссылками на источники. Проверить можно прямо в чате VEGA или любым curl из примеров выше.

Комментарии

0/5000

Поддержка Markdown