Как я делаю бота для автоматического фактчекинга по инструкциям от ChatGPT (Часть 4) + демо
Работа кипит. Сегодня расскажу про переезд на GPT-5.1, системные промпты и настройку JSON-схемы ответов, чтобы их можно было стабильно разбирать и оформлять в виде красивого отчета.
Следующий шаг: научить бота "думать" и отвечать структурированно, а не каждый раз по-новому.
Новые мозги
Напомню, что для экономии времени и денег бот был подключен к модели GPT-4.1-mini, которая не умеет "думать", ходить в интернет и отвечает на основе "знаний", ограниченных 1 июня 2024. Из-за этого даже на простые вопросы модель давала неправильные ответы, например, утверждала, что Джо Байден - действующий президент США.
ChatGPT подсказал решение: нужно перейти на более умную модель, использовать Responses API и настроить web search.
Пример написан на javascript, а бэкенд бота - на Python, поэтому я попросил ChatGPT сходить в документацию и написать решение на питоне. Плюс, прикрепил в чат актуальнуый код, чтобы снизить риск галлюцинаций.
Апдейт накатился с первого раза, и бот обзавёлся новыми мозгами от OpenAI в виде флагманской модели GPT-5.1, которой разрешено ходить в интернет.
Учим ИИ "думать" в нужную сторону
Мозги мозгами, но ими ещё и пользоваться надо. Для этого в ИИ-модель можно (и нужно) отправлять системный промпт - инструкции и правила, которые ИИ учитывает при обработке каждого пользовательского запроса:
Запрос Юзера + Системный Промпт = Полный Промпт
В общем, я загрузил в ChatGPT документ с методикой анализа и попросил собрать системный промпт. Чат-бот выдал запчасти:
- metholodgy.md с подробной методикой анализа
- rules.md про стиль и подачу информации
- system_prompt.txt про структуру ответа
Дополнительно ChatGPT написал немного кода для того, чтобы читать файлы системного промпта и добавлять их при отправке запроса к модели.
Не стал разбираться с разными форматами файлов, потому что сервис опять без проблем собрался и стабильно отработал весь цикл: запрос, короткий ответ в боте, генерация подробного PDF-отчета.
Для справки: за несколько дней тестов на старой модели я потратил примерно 3k токенов, а за 1 день с новыми мозгами получилось почти 600k токенов. Затраты выросли примерно в 200 раз при сопоставимом количестве запросов.
Из хорошего: новая модель + web search + системный промпт стали выдавать нечто похожее на анализ.
Из плохого: значительно выросло время и стоимость обработки запроса. А ещё модель каждый раз отвечала с новыми творческими элементами - это большая проблема, потому что такой ответ нереально стабильно разбирать на части для верстки отчета в четком формате.
Учим ИИ отвечать по форме
ChatGPT поведал, что эта проблема тоже решается, причем не костылями, а нативным решением под названием Structured Model Outputs.
В частности в модель можно отправить JSON-схему, в соответствии с которой она должна вернуть ответ - это мне и нужно.
Отправил ChatGPT ранее сгенерированные им же файлы для системного промпта и попросил собрать JSON-схему по канонам документации OpenAI.
Простая задача для ИИ, получилось вот такое:
Схема так же передается как часть системного промпта, всё это дело обрабатывается моделью, и ответ приходит обратно в формате JSON.
Запустил и увидел, что в базу данных сохраняется JSON, а это значит, что проблема с четкой структурой ответа решена, и можно переходить к созданию шаблона для красивого отчета.
Шаблон отчёта
Я отправил в ChatGPT полную JSON-схему и такой запрос:
Разработай HTML-шаблон и CSS-стили для отчёта в стиле OSINT. Используй все данные из схемы JSON. Полностью напиши весь код.
Логика была такая: собрать хоть что-то и увидеть общую картину, а дальше уже заниматься косметическими изменениями.
ChatGPT выдал HTML+jinja шаблон со стилями, и я начал отладку.
Честно говоря, не ожидал, что с HTML будет столько проблем: сначала сервис вообще не собирался, потом вылезли проблемы с генерацией PDF, затем в PDF плыла верстка. Отчет получался совсем не такой, как обещал мой ИИ-друг за $20 в месяц.
Примерно через 4 часа хождений по кругу ChatGPT всё-таки выдал подходящий фикс: я запустил бота, прошел весь путь пользователя и увидел далеко не идеальный, но всё-таки приличный PDF-отчёт. Получилось :)
Текущий прогресс
Для демонстрации текущих возможностей бота выбрал новость В мессенджер Max добавили возможность получать уведомления от Госуслуг и записал скринкаст.
Технически всё работает как надо: бот корректно классифицирует входящий запрос (текст, ссылка, пересланное сообщение), отправляет на анализ в GPT-5.1, мозги шевелятся, ответ приходит в JSON, на базе которого корректно верстается HTML и собирается PDF-отчёт.
Но, с точки зрения качества анализа, нужно ещё работать: дублируются утверждения, не всегда корректно работает логика обнаружения риторических приёмов и манипуляций, неглубоко анализируется источник новости и другие мелочи.
Можете убедиться: бот онлайн. Стартаните. Ничего особенного не случится, но вы точно не пропустите релиз. Плюс, все первые пользователи гарантированно получат бонус ;)
Дальнейшие планы
С методикой анализа всё понятно: её совершенствование - процесс постоянный. Главное, что собралось ядро.
Перехожу к финансовой части: бонусная система, партнерская программа, разработка тарифов, логика биллинга и подключение платежей.
Посмотрим, что получится. Продолжение следует ;)
В телеге тоже подписывайтесь, мне будет радостно.
UPD. Проверю на текущей версии 50 свежих рандомных материалов на VC. Напишу обзорную статью.