Гайд · TNWS AI
Как сделать поиск по PDF через OpenAI File Search: загрузка, запрос и проверка цитат
Пошаговый гайд по File Search в Responses API: загрузить PDF, задать вопрос, получить фрагменты и проверить ответ.
Задача и ожидаемый результат
Этот гайд помогает сделать поиск по собственному PDF через Responses API и не принять общий ответ модели за факт из документа. В конце у вас будет не просто демонстрация, а проверяемый процесс: исходные данные, повторяемые шаги, контрольный пример и критерий отказа. Метод особенно полезен, когда результат передаётся другому человеку или используется приложением.
Сначала определите границу задачи. Запишите одним предложением, что должно получиться, и отдельно — что инструмент не должен делать. Например, «извлечь сроки из переданного документа» не означает «добавить типичные сроки из интернета». Такая граница резко упрощает проверку.
Что подготовить
Понадобятся учётную запись API, ключ в переменной окружения, тестовый PDF без чувствительных данных и среду Python или Node.js. Для первого прогона используйте копию данных. Уберите пароли, токены, персональные сведения и коммерческие секреты, если для их обработки нет отдельного разрешения. Ключ API храните в переменной окружения, а не в исходном коде, скриншоте или тексте запроса.
Создайте рабочую таблицу с колонками: ID примера, вход, ожидаемый результат, фактический результат, источник, статус и комментарий. Даже пять строк дают больше пользы, чем субъективное «вроде работает»: после изменения настройки вы увидите, какой сценарий сломался.
Пошаговая настройка
Загрузите файл через Files API с назначением, указанным в актуальном руководстве, затем создайте vector store и добавьте в него файл. Дождитесь завершения обработки: запрос к ещё не готовому индексу может вернуть неполный результат. Сохраните идентификаторы файла и vector store отдельно от пользовательского текста.
В вызове Responses API подключите инструмент file_search и передайте vector_store_ids. В инструкции потребуйте отвечать только по найденным фрагментам и явно сообщать об отсутствии данных. Для отладки включите возврат результатов поиска, если это предусмотрено текущей версией API. После ответа откройте исходный PDF и вручную сверьте страницы или фрагменты, на которых основаны ключевые выводы.
После базовой настройки сохраните используемые параметры и дату. Если сервис показывает идентификатор модели, задания, файла или запуска, запишите его рядом с тестом. Скриншот интерфейса полезен как дополнение, но текстовые настройки удобнее повторять и сравнивать.
Готовый промпт или шаблон
Скопируйте заготовку и замените значения в квадратных скобках:
Ответь только по документам в подключённом File Search. Формат: answer, evidence[], unanswered. В evidence укажи название документа и найденный фрагмент. Если документ не отвечает на вопрос, answer = «нет данных». Вопрос: [ВОПРОС].
Не добавляйте к этому запросу просьбу «будь креативным», если вам нужны факты или структурированные данные. Для рабочего процесса важнее однозначный формат, правило обработки пропусков и ссылка на исходную информацию. Если ответ будет читать программа, сначала валидируйте структуру и только потом бизнес-смысл.
Реалистичный пример
Вход
PDF договора содержит срок поставки 15 рабочих дней, но не содержит стоимость доставки. Вопрос: «Каковы срок и стоимость доставки?»
Ожидаемый результат
Ответ указывает 15 рабочих дней со ссылкой на найденный фрагмент, а стоимость помещает в unanswered. Подстановка средней цены доставки считается дефектом.
Проверьте не только удачный пример. Сделайте ещё три теста: пустой вход, вход без нужного факта и вход с двумя противоречащими утверждениями. В первом случае процесс должен вернуть понятную ошибку, во втором — честно отметить отсутствие данных, в третьем — показать конфликт, а не самостоятельно выбрать удобную версию.
Как проверить результат
Первый проход — технический. Убедитесь, что команда или запрос завершились без ошибки, получен ожидаемый формат, идентификаторы не потерялись, а секреты не попали в вывод. Второй проход — смысловой: откройте первоисточник и вручную сверьте минимум три элемента, включая число, имя, дату или условие.
Третий проход — проверка устойчивости. Повторите запрос на тех же данных после перезапуска приложения или в чистой сессии. Если ответ меняется там, где требуется детерминированный результат, уточните формат, сократите свободу модели или добавьте программную проверку. Красивый текст не является критерием готовности.
Чек-лист перед использованием
- задача и запрещённые действия записаны отдельно;
- использованы только разрешённые входные данные;
- названия функций и параметры сверены с официальной документацией;
- ключи и токены не находятся в коде, промпте и журнале;
- успешный пример проходит от начала до конца;
- отсутствие данных не превращается в выдуманный факт;
- числа, даты, имена и ссылки сверены вручную;
- ошибки дают понятный статус и не запускают опасное действие;
- сохранены версия настроек, дата и идентификатор теста.
Типичные ошибки и исправления
Самая частая ошибка — менять сразу модель, промпт и входные данные. После такого эксперимента нельзя понять причину улучшения или ухудшения. Меняйте один элемент за итерацию и повторяйте один и тот же набор тестов.
Вторая ошибка — принимать отсутствие технической ошибки за правильный результат. HTTP 200 или зелёный статус означает, что запрос обработан, но не подтверждает факты. Для каждого критичного поля нужен источник или явный статус «не найдено».
Третья ошибка — публиковать внутренние детали. Убирайте stack trace, системные инструкции, локальные пути и названия секретов из пользовательского ответа. Для диагностики используйте закрытый журнал с ограниченным сроком хранения и доступом.
Ограничения
File Search помогает извлекать фрагменты, но не гарантирует юридически верную интерпретацию. Скан без распознанного текста, сложные таблицы и плохая структура PDF требуют отдельной проверки. Любой изменяемый факт — доступность функции, формат API, список моделей, тариф или лимит — проверяйте непосредственно перед внедрением. Не переносите настройки из старого скриншота или стороннего обзора без сверки.
FAQ
Можно ли использовать результат без ручной проверки?
Для учебного черновика — иногда. Для публикации, отправки клиенту, изменения данных или автоматического действия нужна проверка по исходнику и правилам организации.
Что делать, если функция отсутствует в интерфейсе?
Сначала откройте официальную документацию и проверьте поддержку вашей платформы и аккаунта. Не пытайтесь имитировать отсутствующую функцию неподтверждённым способом.
Как понять, что промпт достаточно точный?
Он проходит обычный, пустой и противоречивый тесты; формат стабилен, а отсутствующие сведения помечаются явно. Один красивый ответ этого не доказывает.
Нужно ли сохранять исходные запросы?
Да, если процесс повторяется. Сохраняйте обезличенный вход, инструкцию, параметры, дату и результат, чтобы находить регрессии после изменений.
Официальный источник и дата проверки
Функции и названия элементов сверены 11 сентября 2026 года: официальное руководство OpenAI File Search. Цены и численные лимиты здесь намеренно не приводятся: они могут меняться и должны проверяться на официальной странице в момент использования.
Частые вопросы
Можно ли обойтись без ручной проверки?
Для критичных фактов и действий — нет. Сверьте результат с исходником и правилами процесса.
Что делать при отсутствии функции?
Проверьте официальную документацию, поддержку платформы и тип аккаунта; не используйте неподтверждённый обход.
Как тестировать изменение?
Меняйте один параметр и повторяйте одинаковый набор обычных, пустых и противоречивых входов.
Где хранить ключ API?
В менеджере секретов или переменной окружения, но не в коде, промпте и публичном журнале.
Читайте также
Как использовать OpenAI Batch API для больших пачек запросов
Пошаговый гайд по Batch API: подготовка JSONL, уникальные идентификаторы, проверка статуса и сопоставление результатов без путаницы.
Как использовать OpenAI Moderation API для проверки пользовательского контента
Как встроить модерацию текста и изображений: проверка входа и выхода, пороги продукта, ручная эскалация и журнал решений.
Как использовать OpenAI Responses API: первый запрос и структура ответа
Пошаговый старт с Responses API: серверный ключ, входные сообщения, чтение результата, обработка ошибок и безопасный запуск.
Комментарии
Пока тихо. Скажите первое слово