Как я делаю бота для автоматического фактчекинга по инструкциям от ChatGPT (Часть 4) + демо

Работа кипит. Сегодня расскажу про переезд на GPT-5.1, системные промпты и настройку JSON-схемы ответов, чтобы их можно было стабильно разбирать и оформлять в виде красивого отчета.

Спойлер: вот так бот оценил <a href="https://vc.ru/apple/2626958-apple-naznachila-novogo-vice-prezidenta-po-ii" rel="nofollow noreferrer noopener">статью на VC.ru</a> об отставке ИИ-босса Apple: факт подтверждается, оценка снижена из-за неподтверждённых слухов в тексте
Спойлер: вот так бот оценил статью на VC.ru об отставке ИИ-босса Apple: факт подтверждается, оценка снижена из-за неподтверждённых слухов в тексте

Уже рассказывал, как оживил бота (часть 1), подружил его с ИИ-моделью от OpenAI по API (часть 2) и научил упаковывать ответ модели в PDF-файл (часть 3) - всё придумывал ChatGPT, а я только копипастил и следовал инструкциям.

Следующий шаг: научить бота "думать" и отвечать структурированно, а не каждый раз по-новому.

Новые мозги

Напомню, что для экономии времени и денег бот был подключен к модели GPT-4.1-mini, которая не умеет "думать", ходить в интернет и отвечает на основе "знаний", ограниченных 1 июня 2024. Из-за этого даже на простые вопросы модель давала неправильные ответы, например, утверждала, что Джо Байден - действующий президент США.

ChatGPT подсказал решение: нужно перейти на более умную модель, использовать Responses API и настроить web search.

Скриншот из <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fplatform.openai.com%2Fdocs%2Fguides%2Fmigrate-to-responses%3Ftool-use%3Dresponses%237-upgrade-to-native-tools&postId=2621706" rel="nofollow noreferrer noopener" target="_blank">документации</a> OpenAI
Скриншот из документации OpenAI

Пример написан на javascript, а бэкенд бота - на Python, поэтому я попросил ChatGPT сходить в документацию и написать решение на питоне. Плюс, прикрепил в чат актуальнуый код, чтобы снизить риск галлюцинаций.

Апдейт накатился с первого раза, и бот обзавёлся новыми мозгами от OpenAI в виде флагманской модели GPT-5.1, которой разрешено ходить в интернет.

Учим ИИ "думать" в нужную сторону

Мозги мозгами, но ими ещё и пользоваться надо. Для этого в ИИ-модель можно (и нужно) отправлять системный промпт - инструкции и правила, которые ИИ учитывает при обработке каждого пользовательского запроса:

Запрос Юзера + Системный Промпт = Полный Промпт

В общем, я загрузил в ChatGPT документ с методикой анализа и попросил собрать системный промпт. Чат-бот выдал запчасти:

  1. metholodgy.md с подробной методикой анализа
  2. rules.md про стиль и подачу информации
  3. system_prompt.txt про структуру ответа

Дополнительно ChatGPT написал немного кода для того, чтобы читать файлы системного промпта и добавлять их при отправке запроса к модели.

Не стал разбираться с разными форматами файлов, потому что сервис опять без проблем собрался и стабильно отработал весь цикл: запрос, короткий ответ в боте, генерация подробного PDF-отчета.

Явно видно, когда появился системный мега-промпт
Явно видно, когда появился системный мега-промпт
Для справки: за несколько дней тестов на старой модели я потратил примерно 3k токенов, а за 1 день с новыми мозгами получилось почти 600k токенов. Затраты выросли примерно в 200 раз при сопоставимом количестве запросов.

Из хорошего: новая модель + web search + системный промпт стали выдавать нечто похожее на анализ.

Из плохого: значительно выросло время и стоимость обработки запроса. А ещё модель каждый раз отвечала с новыми творческими элементами - это большая проблема, потому что такой ответ нереально стабильно разбирать на части для верстки отчета в четком формате.

Учим ИИ отвечать по форме

ChatGPT поведал, что эта проблема тоже решается, причем не костылями, а нативным решением под названием Structured Model Outputs.

В частности в модель можно отправить JSON-схему, в соответствии с которой она должна вернуть ответ - это мне и нужно.

Отправил ChatGPT ранее сгенерированные им же файлы для системного промпта и попросил собрать JSON-схему по канонам документации OpenAI.

Простая задача для ИИ, получилось вот такое:

Часть JSON-схемы, полная версия ~350 строк
Часть JSON-схемы, полная версия ~350 строк

Схема так же передается как часть системного промпта, всё это дело обрабатывается моделью, и ответ приходит обратно в формате JSON.

Запустил и увидел, что в базу данных сохраняется JSON, а это значит, что проблема с четкой структурой ответа решена, и можно переходить к созданию шаблона для красивого отчета.

Шаблон отчёта

Я отправил в ChatGPT полную JSON-схему и такой запрос:

Разработай HTML-шаблон и CSS-стили для отчёта в стиле OSINT. Используй все данные из схемы JSON. Полностью напиши весь код.

Логика была такая: собрать хоть что-то и увидеть общую картину, а дальше уже заниматься косметическими изменениями.

ChatGPT выдал HTML+jinja шаблон со стилями, и я начал отладку.

Шапка отчёта, справа видно всю HTML-портянку целиком.
Шапка отчёта, справа видно всю HTML-портянку целиком.

Честно говоря, не ожидал, что с HTML будет столько проблем: сначала сервис вообще не собирался, потом вылезли проблемы с генерацией PDF, затем в PDF плыла верстка. Отчет получался совсем не такой, как обещал мой ИИ-друг за $20 в месяц.

Примерно через 4 часа хождений по кругу ChatGPT всё-таки выдал подходящий фикс: я запустил бота, прошел весь путь пользователя и увидел далеко не идеальный, но всё-таки приличный PDF-отчёт. Получилось :)

Текущий прогресс

Для демонстрации текущих возможностей бота выбрал новость В мессенджер Max добавили возможность получать уведомления от Госуслуг и записал скринкаст.

Технически всё работает как надо: бот корректно классифицирует входящий запрос (текст, ссылка, пересланное сообщение), отправляет на анализ в GPT-5.1, мозги шевелятся, ответ приходит в JSON, на базе которого корректно верстается HTML и собирается PDF-отчёт.

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

Можете убедиться: бот онлайн. Стартаните. Ничего особенного не случится, но вы точно не пропустите релиз. Плюс, все первые пользователи гарантированно получат бонус ;)

Дальнейшие планы

С методикой анализа всё понятно: её совершенствование - процесс постоянный. Главное, что собралось ядро.

Перехожу к финансовой части: бонусная система, партнерская программа, разработка тарифов, логика биллинга и подключение платежей.

Посмотрим, что получится. Продолжение следует ;)

В телеге тоже подписывайтесь, мне будет радостно.

UPD. Проверю на текущей версии 50 свежих рандомных материалов на VC. Напишу обзорную статью.

1
Начать дискуссию