дёшево, автор создал библиотеку с открытым исходным кодом, в которой конечный автомат (finite state machine, FSM) управляет графом всего разговора и определяет, какие инструкции передавать языковой модели в каждый конкретный момент, поэтому модель видит только инструкции, относящиеся к текущему этапу, а не весь сценарий. Архитектура состоит из трёх модулей: модуль FSM отслеживает граф диалога и состояние пользователя, модуль vars_memory хранит переменные диалога с историей изменений, а модуль conversation_core управляет вызовами языковой модели. На каждом ходу модель должна отвечать фиксированным контрактом из четырёх полей: сообщение пользователю, сигнал перехода, структурированные результаты этапа и сводка этапа. Если она нарушает этот контракт (неверный JSON, несуществующие сигналы перехода, отсутствующие результаты), система автоматически отправляет корректирующий последующий запрос. Непрерывность разговора при переходах между этапами поддерживается с помощью цепочки previous_response_id в API Responses от OpenAI, что также снижает стоимость за счёт более дешёвого тарифа на чтение из кэша. Весь сценарий диалога описывается в YAML-файле, а подробные инструкции для каждого этапа хранятся в отдельных файлах, что позволяет использовать базовый движок для разных доменов чат-ботов без изменений. Чтобы упростить ручное редактирование YAML, автор написал скрипт, который преобразует YAML в диаграмму draw.io для удобной проверки человеком, а также инструмент просмотра логов для анализа тестовых разговоров в чат-подобном формате с разворачиваемыми системными логами, включая обновления в реальном времени при локальной отладке. В качестве демонстрации в репозитории есть пример «аналитического бота», который помогает соло-разработчикам определить требования к проекту; по словам

Показать ещё ↓