Гайд · TNWS AI
Как подключить веб-поиск к OpenAI Responses API и получить проверяемые источники
Рабочий web_search в Responses API: вызов инструмента, доменные ограничения, чтение URL-цитат и проверка актуальности ответа.
Добавьте инструмент web_search в запрос Responses API и попросите модель опираться на найденные страницы. Для публикации недостаточно вывести response.output_text: приложение должно разобрать annotations с URL-цитатами, показать их пользователю и проверить, что дата источника соответствует утверждению.
Рабочий пример
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.create({
model: "gpt-5",
tools: [{ type: "web_search" }],
input: "Найди актуальные правила сервиса. Укажи дату и процитируй источник."
});
console.log(response.output_text); for (const item of response.output) { if (item.type === "message") { for (const part of item.content ?? []) { console.dir(part.annotations ?? [], { depth: 5 }); } } }
## Конкретные факты и поля
- `tools: [{type:"web_search"}]` разрешает модели инициировать поиск, но не заставляет её автоматически открыть каждую найденную страницу.
- URL-цитаты передаются как annotations внутри текстового контента. Их нужно сохранять вместе с конкретным фрагментом ответа.
- Для узкой задачи ограничивайте домены официальными сайтами, если текущая версия инструмента и SDK поддерживает соответствующий фильтр.
- Свежесть определяется датой события и документа, а не только датой публикации страницы. Новости часто обновляются позже без изменения заголовка.
## Как внедрить
1. Сформулируйте вопрос с датой среза и перечнем фактов, которые нужно подтвердить.
2. Разрешите web_search и выполните запрос на сервере.
3. Извлеките текст, annotations, URL и подписи источников.
4. Отклоните ответ, если важное утверждение не имеет источника или ссылка ведёт на агрегатор вместо первичной документации.
5. Для чисел и правил откройте источник повторно либо сверяйте его отдельным загрузчиком.
## Как проверить результат
Возьмите вопрос с заведомо изменившимся показателем и попросите указать дату. Тест проходит, если ответ содержит источник, дата утверждения совпадает с документом, а приложение показывает ссылку рядом с тезисом. Второй тест — несуществующий факт: модель должна сообщить, что подтверждение не найдено.
## Ограничения
Поиск повышает актуальность, но не гарантирует истинность. Страница может быть устаревшей, вторичной или неверно интерпретированной. Содержимое сайта считается недоверенным: инструкции на странице не должны менять системные правила и запускать ваши функции.
## Чего не делать
- Не удаляйте citations перед показом пользователю.
- Не используйте сниппет поисковой выдачи как окончательное доказательство.
- Не позволяйте тексту страницы расширять права инструментов.
FAQ
Можно ли копировать пример как есть?
Для прототипа — да. В production добавьте таймаут, обработку ошибок, лимиты, журнал request ID и защиту ключа.
Где хранить API-ключ?
В секретах серверной среды. Не в браузере, мобильном приложении, репозитории или тексте статьи.
Как проверить, что функция реально сработала?
Разбирать структурированные поля ответа и проводить контрольный тест, а не судить по убедительности текста.
Почему пример не фиксирует цену?
Тарифы и набор поддерживаемых моделей меняются; актуальные значения проверяются на официальной странице Pricing перед запуском.
Официальный источник
Документация OpenAI, проверена 11 сентября 2026 года: https://platform.openai.com/docs/guides/tools-web-search
Читайте также
Как настроить streaming в OpenAI Responses API и правильно собрать ответ
Потоковая выдача OpenAI: stream:true, типы SSE-событий, text delta, завершение, tool calls и восстановление после обрыва.
Как подключить удалённый MCP-сервер к OpenAI API и проверить его инструменты
Remote MCP в Responses API: адрес сервера, список инструментов, approvals, проверка аргументов и защита от prompt injection.
Как сохранять контекст диалога в OpenAI Responses API без повторной отправки истории
Диалог через previous_response_id: хранение цепочки, инструкции, ветвление, контроль владельца и тест на смешивание пользователей.
Комментарии
Пока тихо. Скажите первое слово