В нашей продуктовой статье мы уже рассказывали, что умеет Accounting AI Agent: он отвечает на вопросы о VAT, PIT и CIT, работает с реальными счетами в wFirma и автоматизирует рутину. Это был взгляд со стороны пользователя. Теперь зайдём с другой стороны — со стороны реализации — и разберём, как всё это устроено внутри.
Бухгалтерия в Польше — это постоянно меняющиеся ставки, сроки и требования, и цена ошибки здесь измеряется реальными деньгами и штрафами. Обычный чат-бот в такой теме опасен: он уверенно назовёт несуществующий срок, придумает номер счёта или «вспомнит» ставку прошлого года — и всё это звучит убедительно. Мы построили систему так, чтобы у неё было как можно меньше поводов фантазировать: агент не гадает по памяти, а обращается к живым данным — вашим счетам в wFirma, польским государственным реестрам, официальному календарю налоговых сроков. В этой статье мы пройдём весь путь: от общей карты системы до того, какая модель за какую задачу отвечает. По дороге — все ключевые схемы, «причёсанные» для читателя, а не для инженера.
Одна идея проходит через весь текст: сила этого продукта не в размере модели, а в дисциплине вокруг неё — в инструментах, проверках и привязке к реальным данным. С неё и начнём.
Как устроена система целиком
Прежде чем нырять в детали, полезно увидеть карту. Accounting AI Agent — это полноценное веб-приложение (не «обёртка над ChatGPT»): у него есть кабинет в браузере, Telegram-бот, сервер с правами доступа и проверками, слой интеграций с внешним миром и базы данных.
Слева — способы обращения: браузерный кабинет и Telegram-бот. В центре — сервер, который отвечает за вход, права и проверку данных, и сам ИИ-агент. Справа — внешний мир: wFirma (бухгалтерская платформа), KSeF (государственная система электронных счетов) и польские публичные реестры. Внизу — хранилища: PostgreSQL для данных и долгой памяти агента, Redis для сессий и ограничения нагрузки. Дальше разберём каждый крупный блок по очереди.
Один агент, а не «рой»
Сейчас модно строить «команды» из множества ИИ-агентов, которые передают задачи друг другу. Мы сознательно пошли другим путём: у нас один агент. Он получает сообщение, сам решает, какие инструменты вызвать, при необходимости вызывает их по очереди или сразу несколько, а затем составляет итоговый ответ. Никакого «диспетчера», распределяющего запросы между под-агентами, — это проще, предсказуемее и дешевле в отладке.
Работает он по классическому циклу «рассуждение → действие»: модель смотрит на сообщение и историю, решает, нужен ли инструмент, вызывает его, получает результат — и цикл повторяется, пока не будет готов финальный ответ.
Чтобы агент не «закружился» в бесконечных вызовах инструментов, стоит жёсткий предохранитель — не больше 25 шагов на один запрос. На практике этого с запасом хватает даже для сложных сценариев вроде «найди контрагента и выстави ему счёт», а от зацикливания защищает надёжно.
Путь одного сообщения
Что именно происходит между «пользователь нажал отправить» и «пришёл ответ»? Порядок шагов важен, поэтому покажем его целиком.
Обратите внимание на два «фоновых» шага в конце. После того как ответ отправлен пользователю, система, не задерживая его, обновляет долгую память и при необходимости готовит озвучку. То есть пользователь не ждёт, пока отработает вся служебная механика, — ответ он получает сразу.
58 инструментов, а с HR и KSeF — до 82
Вся «сила» агента — в инструментах. Инструмент — это конкретное умение: «получить список счетов», «создать контрагента», «посчитать зарплату», «отправить счёт в KSeF». Модель не выполняет эти действия сама — она лишь решает, какой инструмент и с какими параметрами вызвать, а выполняет их проверенный код.
Базовые 58 инструментов есть у каждого пользователя. Ещё два набора — по 15 для кадров и зарплаты и 9 для KSeF — подключаются автоматически, если соответствующие возможности настроены. Итого — до 82 инструментов в руках одного агента. Важно, что часть инструментов вообще не зависит от wFirma и доступна всем и всегда: например, календарь налоговых сроков и проверка контрагента по «Белому списку».
Ответы на реальных данных, а не из головы
Это ключевое отличие от «умного, но фантазирующего» чат-бота. Когда вопрос касается конкретики — вашей компании, контрагента, суммы, — агент идёт за данными в надёжные источники, а не сочиняет их.
Пара деталей, которые экономят время и нервы:
Автозаполнение по NIP. Достаточно указать один налоговый номер контрагента — недостающие название, REGON и адрес система сама подтянет из публичных реестров (Biała Lista Министерства финансов и KRS) и покажет, какие поля заполнила автоматически.
Проверка по «Белому списку». Для любого платежа от 15 000 zł польский закон (ст. 117ba Ordynacji podatkowej) требует убедиться, что счёт контрагента есть в официальном «Белом списке» МФ. Агенту прямо предписано выполнять эту проверку автоматически, когда вы проводите крупный платёж, — чтобы вы не потеряли право отнести расход на затраты из-за формальности.
KSeF: электронные счета по-государственному
С переходом Польши на обязательную систему электронных счетов KSeF у бизнеса появилась новая рутина. Агент берёт её на себя: умеет сформировать структурированный счёт нужного формата (FA(3)), отправить его в KSeF, дождаться официального подтверждения и подобрать входящие счета к вашим записям.
Отдельные фоновые службы следят за статусами уже отправленных счетов и, если настроено, сами отправляют в KSeF новые счета, созданные в wFirma. А при создании счёта прямо в чате достаточно назвать компанию — недостающие NIP и адрес система подставит из локальной базы контрагентов.
Чек с фотографии
Ещё один способ убрать ручной ввод — просто сфотографировать чек. Пользователь присылает фото в Telegram, и система распознаёт его до того, как в дело вступит ИИ-агент.
Распознаванием занимается модель 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 |
|---|---|
| Диалоговый агент — провайдер OpenAI | gpt-4 · gpt-3.5-turbo · gpt-5 · o1 · o3 |
| Диалоговый агент — провайдер Google | Gemini |
| Распознавание чеков из фото (зрение) | gpt-4o |
| Озвучивание ответов (TTS) | OpenAI TTS |