В нашей продуктовой статье мы уже рассказывали, что умеет Accounting AI Agent: он отвечает на вопросы о VAT, PIT и CIT, работает с реальными счетами в wFirma и автоматизирует рутину. Это был взгляд со стороны пользователя. Теперь зайдём с другой стороны — со стороны реализации — и разберём, как всё это устроено внутри.

Бухгалтерия в Польше — это постоянно меняющиеся ставки, сроки и требования, и цена ошибки здесь измеряется реальными деньгами и штрафами. Обычный чат-бот в такой теме опасен: он уверенно назовёт несуществующий срок, придумает номер счёта или «вспомнит» ставку прошлого года — и всё это звучит убедительно. Мы построили систему так, чтобы у неё было как можно меньше поводов фантазировать: агент не гадает по памяти, а обращается к живым данным — вашим счетам в wFirma, польским государственным реестрам, официальному календарю налоговых сроков. В этой статье мы пройдём весь путь: от общей карты системы до того, какая модель за какую задачу отвечает. По дороге — все ключевые схемы, «причёсанные» для читателя, а не для инженера.

Одна идея проходит через весь текст: сила этого продукта не в размере модели, а в дисциплине вокруг неё — в инструментах, проверках и привязке к реальным данным. С неё и начнём.

Как устроена система целиком

Прежде чем нырять в детали, полезно увидеть карту. Accounting AI Agent — это полноценное веб-приложение (не «обёртка над ChatGPT»): у него есть кабинет в браузере, Telegram-бот, сервер с правами доступа и проверками, слой интеграций с внешним миром и базы данных.

Общая карта: пользователь приходит через веб-кабинет или Telegram, сервер проверяет права, ИИ-агент обращается к внешним системам, а данные и память хранятся в базах.

Слева — способы обращения: браузерный кабинет и Telegram-бот. В центре — сервер, который отвечает за вход, права и проверку данных, и сам ИИ-агент. Справа — внешний мир: wFirma (бухгалтерская платформа), KSeF (государственная система электронных счетов) и польские публичные реестры. Внизу — хранилища: PostgreSQL для данных и долгой памяти агента, Redis для сессий и ограничения нагрузки. Дальше разберём каждый крупный блок по очереди.

Один агент, а не «рой»

Сейчас модно строить «команды» из множества ИИ-агентов, которые передают задачи друг другу. Мы сознательно пошли другим путём: у нас один агент. Он получает сообщение, сам решает, какие инструменты вызвать, при необходимости вызывает их по очереди или сразу несколько, а затем составляет итоговый ответ. Никакого «диспетчера», распределяющего запросы между под-агентами, — это проще, предсказуемее и дешевле в отладке.

Работает он по классическому циклу «рассуждение → действие»: модель смотрит на сообщение и историю, решает, нужен ли инструмент, вызывает его, получает результат — и цикл повторяется, пока не будет готов финальный ответ.

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

Чтобы агент не «закружился» в бесконечных вызовах инструментов, стоит жёсткий предохранитель — не больше 25 шагов на один запрос. На практике этого с запасом хватает даже для сложных сценариев вроде «найди контрагента и выстави ему счёт», а от зацикливания защищает надёжно.

Путь одного сообщения

Что именно происходит между «пользователь нажал отправить» и «пришёл ответ»? Порядок шагов важен, поэтому покажем его целиком.

Конвейер обработки: от ключа модели и определения языка — к сборке промпта, подключению инструментов и запуску агента; память и озвучка обновляются уже в фоне.

Обратите внимание на два «фоновых» шага в конце. После того как ответ отправлен пользователю, система, не задерживая его, обновляет долгую память и при необходимости готовит озвучку. То есть пользователь не ждёт, пока отработает вся служебная механика, — ответ он получает сразу.

58 инструментов, а с HR и KSeF — до 82

Вся «сила» агента — в инструментах. Инструмент — это конкретное умение: «получить список счетов», «создать контрагента», «посчитать зарплату», «отправить счёт в KSeF». Модель не выполняет эти действия сама — она лишь решает, какой инструмент и с какими параметрами вызвать, а выполняет их проверенный код.

Карта инструментов: 58 доступны всегда, ещё до 24 подключаются, если у пользователя настроены кадры (HR) и электронные счета (KSeF).

Базовые 58 инструментов есть у каждого пользователя. Ещё два набора — по 15 для кадров и зарплаты и 9 для KSeF — подключаются автоматически, если соответствующие возможности настроены. Итого — до 82 инструментов в руках одного агента. Важно, что часть инструментов вообще не зависит от wFirma и доступна всем и всегда: например, календарь налоговых сроков и проверка контрагента по «Белому списку».

Ответы на реальных данных, а не из головы

Это ключевое отличие от «умного, но фантазирующего» чат-бота. Когда вопрос касается конкретики — вашей компании, контрагента, суммы, — агент идёт за данными в надёжные источники, а не сочиняет их.

Привязка к данным: wFirma даёт реальные цифры, публичные реестры — сведения о контрагентах и автозаполнение по NIP, а крупные платежи проходят обязательную проверку по «Белому списку».

Пара деталей, которые экономят время и нервы:

Автозаполнение по NIP. Достаточно указать один налоговый номер контрагента — недостающие название, REGON и адрес система сама подтянет из публичных реестров (Biała Lista Министерства финансов и KRS) и покажет, какие поля заполнила автоматически.

Проверка по «Белому списку». Для любого платежа от 15 000 zł польский закон (ст. 117ba Ordynacji podatkowej) требует убедиться, что счёт контрагента есть в официальном «Белом списке» МФ. Агенту прямо предписано выполнять эту проверку автоматически, когда вы проводите крупный платёж, — чтобы вы не потеряли право отнести расход на затраты из-за формальности.

KSeF: электронные счета по-государственному

С переходом Польши на обязательную систему электронных счетов KSeF у бизнеса появилась новая рутина. Агент берёт её на себя: умеет сформировать структурированный счёт нужного формата (FA(3)), отправить его в KSeF, дождаться официального подтверждения и подобрать входящие счета к вашим записям.

Работа с KSeF: сформировать и отправить счёт, дождаться подтверждения (UPO), а входящие счета — автоматически сопоставить с уже имеющимися записями.

Отдельные фоновые службы следят за статусами уже отправленных счетов и, если настроено, сами отправляют в KSeF новые счета, созданные в wFirma. А при создании счёта прямо в чате достаточно назвать компанию — недостающие NIP и адрес система подставит из локальной базы контрагентов.

Чек с фотографии

Ещё один способ убрать ручной ввод — просто сфотографировать чек. Пользователь присылает фото в Telegram, и система распознаёт его до того, как в дело вступит ИИ-агент.

Распознавание чека: фото превращается в структурированную карточку (продавец, сумма, дата, NIP), из которой можно сразу создать расход в wFirma.

Распознаванием занимается модель GPT-4o с поддержкой изображений. Язык ответа она подбирает по языку вашего Telegram-аккаунта, а результат отдаёт аккуратной карточкой, из которой расход одним шагом заводится в wFirma.

Долгая память о вашем бизнесе

Хороший помощник не переспрашивает одно и то же. Поэтому у агента есть долгая память: он запоминает факты о вашей фирме, частых контрагентов и ваши предпочтения — и учитывает их в следующих разговорах. При этом память устроена аккуратно и предсказуемо.

Жизненный цикл памяти: факты извлекаются по правилам, хранятся в базе, со временем «угасают», а самые важные попадают в промпт следующего разговора.

Тут есть неочевидная, но принципиальная деталь: память наполняется не отдельной ИИ-моделью, а детерминированными правилами. Система ищет в переписке явные маркеры («моя фирма на линейном налоге 19%», «всегда выставляй в PLN») и отмечает часто используемых контрагентов и операции. Это дёшево, быстро и не добавляет ещё одного повода для галлюцинаций.

Память разложена по понятным категориям — факты о бизнесе, частые контакты, предпочтения и рабочие шаблоны — и не растёт бесконтрольно: то, что давно не пригождалось, постепенно «угасает» и скрывается, а в промпт подставляется только два десятка самых важных записей в пределах строгого бюджета символов. Так контекст остаётся релевантным, а расходы на модель — под контролем.

Системный промпт и язык

Системный промпт — это инструкция, которую агент получает перед каждым разговором. Он не статичный: система собирает его из слоёв под конкретный запрос — базовая роль бухгалтерского эксперта, правила языка, руководство по инструментам, правила оформления ответа, профессиональные стандарты и дисклеймеры, требования к точности, обработка ошибок и, при необходимости, актуальные польские налоговые данные и персональная память.

Язык система определяет автоматически по самому сообщению: кириллица — отвечаем по-русски, польские диакритические буквы — по-польски, в остальных случаях — по-английски. Дальше все инструменты возвращают результат уже на нужном языке — с правильным форматированием чисел, дат и сумм, привычным для конкретной страны.

Ваши ключи, ваш выбор модели

Важная особенность архитектуры: ключи к языковым моделям принадлежат пользователю. Каждый подключает свой ключ (он хранится в базе в зашифрованном виде), а система работает поверх него. Поддерживаются два провайдера — OpenAI и Google Gemini. Более новые модели OpenAI (семейства gpt-5, o1, o3) система обслуживает по их особым правилам — например, не навязывает им параметр «температуры».

Кстати, поддержки Anthropic здесь больше нет: весной 2026 года мы убрали её — она оставалась лишь как наследие старого мультиагентного кода и лишний повод держать ещё один платный ключ. Меньше зависимостей — чище архитектура.

Сам проект открыт на GitHub, и весь стек можно поднять у себя: собственный сервер, собственные ключи, полный контроль над данными. А тем, кому нужен готовый управляемый хостинг, доступна подписка на eKsiegowyAi.pl. Про безопасность тоже не забыли: вход по токенам, хеширование паролей, ограничение частоты запросов, валидация всех входных данных и защита от инъекций в базу, а все изменяющие операции пишутся в журнал аудита.

Заключение

Если собрать всё вместе, вырисовывается простая мысль: надёжный бухгалтерский ассистент получается не из «модели побольше», а из аккуратной инженерии вокруг неё. Один понятный агент вместо запутанного роя. Десятки проверенных инструментов вместо догадок. Живые данные из wFirma и государственных реестров вместо «знаний из головы». Обязательные проверки там, где их требует закон. Предсказуемая память на правилах. И ключи, которые остаются у пользователя.

Именно эта дисциплина превращает разговорчивую модель в инструмент, которому можно доверить рутину — и при этом спокойно спать, зная, что он не выдумает вам номер счёта. Попробовать Accounting AI Agent можно на eKsiegowyAi.pl или собрать самому из исходников на GitHub. А если вам нужен похожий агент, встроенный в ваши системы и данные, — напишите нам: [email protected].

Какая модель за что отвечает

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

ЗадачаModel
Диалоговый агент — провайдер OpenAIgpt-4 · gpt-3.5-turbo · gpt-5 · o1 · o3
Диалоговый агент — провайдер GoogleGemini
Распознавание чеков из фото (зрение)gpt-4o
Озвучивание ответов (TTS)OpenAI TTS