Любая языковая модель знает мир только до даты окончания обучения. Спросите её о ключевой ставке или о вчерашнем релизе — она либо честно скажет, что не знает, либо уверенно ошибётся. Веб-поиск закрывает этот пробел: перед ответом по запросу ищутся свежие страницы, а модель отвечает по ним и даёт ссылки на источники.
В PlusVibe поиск можно включить почти у любой платной модели каталога одной строкой в запросе. Ниже — все способы, примеры, которые мы запустили перед публикацией, и из чего складывается стоимость.
Как это работает
Когда в запросе включён поиск, PlusVibe выполняет поисковый запрос, добавляет найденные результаты — заголовок, ссылку и фрагмент текста страницы — в контекст модели и просит её опираться на них и указывать источники. Модель отвечает обычным сообщением, ссылки стоят прямо в тексте ответа.
Отсюда два практических следствия:
- Ответ приходит в привычном формате —
choices[0].message.contentдля Chat Completions. Отдельных блоков с цитатами нет, разбирать новые поля не нужно. - Результаты поиска становятся частью входа, поэтому входных токенов становится больше. В наших проверках запрос из одной строки вырос до 2–5 тысяч входных токенов в зависимости от числа и длины результатов.
Три способа включить поиск в чате
1. Плагин web
curl https://plusvibeapi.ru/v1/chat/completions \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-luna",
"plugins": [{"id": "web", "max_results": 5}],
"messages": [{"role": "user", "content": "Какая сейчас ключевая ставка Банка России? Дай ссылку на источник."}]
}'
У плагина есть опции max_results — сколько результатов подставить, не больше 10, — и search_prompt, которая заменяет нашу инструкцию модели о том, как использовать найденное.
В официальном Python SDK поля plugins нет, его передают через extra_body:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://plusvibeapi.ru/v1",
api_key=os.environ["PLUSVIBE_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "Какая сейчас ключевая ставка Банка России? Дай ссылку на источник."}],
extra_body={"plugins": [{"id": "web", "max_results": 5}]},
)
print(resp.choices[0].message.content)
print("входных токенов:", resp.usage.prompt_tokens)
В нашем прогоне модель назвала ставку со ссылками на страницы сайта Банка России, а входных токенов было около 2,3 тысячи.
2. Суффикс :online
Самый короткий способ — дописать :online к имени модели. Это удобно в готовых программах, где можно поменять только название модели, а тело запроса не настраивается:
curl https://plusvibeapi.ru/v1/chat/completions \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash:online",
"messages": [{"role": "user", "content": "Какая сейчас ключевая ставка Банка России? Дай ссылку на источник."}]
}'
Если вы закрепляете модель за конкретным маршрутом через суффикс, :online ставится последним.
3. web_search_options
Это поле из формата OpenAI Chat Completions, и его понимает официальный SDK без extra_body. Параметр search_context_size задаёт объём: low — 3 результата, medium — 6, high — 10.
resp = client.chat.completions.create(
model="gpt-5.6-luna",
web_search_options={"search_context_size": "low"},
messages=[{"role": "user", "content": "Какие новости у Банка России за последнюю неделю? Со ссылками."}],
)
print(resp.choices[0].message.content)
Способы можно сочетать — такой запрос всё равно оплачивается как один поиск.
Responses и Messages
Поиск работает не только в /v1/chat/completions, но и в /v1/responses и /v1/messages. Мы проверили gpt-5.6-luna:online через Responses — ответ пришёл со ссылкой на сайт Банка России.
Если инструмент сам передаёт встроенный инструмент поиска — web_search или web_search_preview в формате OpenAI, web_search_20250305 в формате Anthropic, — PlusVibe превращает его в такой же поиск: инструмент убирается из запроса к модели, а ответ получает найденные ссылки. Отдельных блоков web_search_call и web_search_tool_result в ответе не будет — это стоит учесть, если ваш код их ожидает. Подробности — в документации по веб-поиску.
Поиск без модели: /v1/search
Иногда модель не нужна: вы хотите сами получить выдачу и решить, что с ней делать — отфильтровать, скачать страницы, положить в свою базу для RAG. Для этого есть отдельный эндпоинт. Он возвращает только результаты: title, url и snippet, без содержимого страниц.
import os
import requests
r = requests.post(
"https://plusvibeapi.ru/v1/search",
headers={"Authorization": f"Bearer {os.environ['PLUSVIBE_API_KEY']}"},
json={"query": "ключевая ставка Банка России", "max_results": 5},
timeout=30,
)
data = r.json()
for item in data["results"]:
print(item["title"])
print(item["url"])
print("списано:", data["cost_rub"])
Параметры /v1/search: query — до 1000 символов, max_results — от 1 до 20, по умолчанию 10, а также country, language и mode — turbo, base или pro. Поле cost_rub в ответе показывает, сколько списано за этот запрос. Есть и вариант POST /api/search с полями num и region.
Сколько это стоит
Запрос с поиском состоит из двух частей:
- Сам поиск — фиксированная плата за запрос, она не зависит от числа результатов. Режим Turbo самый дешёвый, Base и Pro стоят дороже. Текущий тариф — в документации, фактическая сумма для
/v1/searchприходит вcost_rub. - Токены модели — как у обычного запроса, но вход больше из-за подставленных результатов. Чтобы сэкономить, уменьшайте
max_resultsили ставьтеsearch_context_size: "low".
Если поиск временно недоступен, /v1/search отвечает с ok: false и ничего не списывает. Бесплатные модели с суффиксом :free поиск не поддерживают: такой запрос вернёт ошибку. Число поисков в минуту на одного клиента ограничено.
Цены моделей из наших примеров за 1 млн токенов:
| Модель | Вход | Выход |
|---|---|---|
| gpt-5.6-luna | 3,78 ₽/1M | 22,63 ₽/1M |
| deepseek-v4.1-flash | 1,14 ₽/1M | 4,53 ₽/1M |
Когда поиск не нужен
- Вопрос не зависит от свежих данных: перевод, редактура, код, рассуждение над вашим текстом. Поиск здесь только добавит токенов.
- Нужные данные у вас уже есть — во внутренней базе знаний. Тогда эффективнее RAG по своим документам, см. статью про Embeddings API.
- Нужен развёрнутый ответ-исследование с большим числом источников. Для этого есть модели со встроенным поиском — Perplexity Sonar, о них статьи про Sonar API и Sonar или Sonar Pro.
Частые ошибки
Модель отвечает без ссылок. Попросите источники в самом вопросе или задайте свою инструкцию через search_prompt.
Ошибка «Invalid online model address». Суффикс :online стоит не последним или написан отдельно от имени модели. Правильно: gpt-5.6-luna:online.
Ответ опирается на устаревшую страницу. Поиск возвращает то, что нашлось, а не проверенную истину. Если дата важна, укажите её в запросе и попросите модель сверять даты источников.
Итог
Чтобы модель отвечала по свежим данным, достаточно добавить plugins: [{"id": "web"}], дописать :online к имени модели или передать web_search_options. Если нужна только выдача, есть /v1/search. Всё работает с тем же ключом, что и остальной каталог, оплата в рублях.
Нейросети с доступом в интернет
Поиск одной строкой в запросе к GPT, Claude, DeepSeek и другим моделям. Оплата в рублях.
Получить ключ →


