Використання великих мовних моделей для автоматизації та покращення бухгалтерського обліку з Beancount
Beancount – це система бухгалтерського обліку у форматі простого тексту, яка останнім часом стала більш доступною завдяки великим мовним моделям (LLM), таким як ChatGPT. Технічні користувачі – включаючи власників бізнесу, засновників стартапів, інженерів та бухгалтерів – можуть використовувати LLM для автоматизації рутинних бухгалтерських завдань, зберігаючи при цьому гнучкість і прозорість текстової бухгалтерської книги Beancount. У цьому звіті досліджуються практичні способи, за допомогою яких LLM можуть оптимізувати робочі процеси Beancount, включаючи категоризацію транзакцій, виявлення аномалій, інтелектуальні пропозиції щодо журнальних записів, генерування записів з природної мови та звірку виписок. Наведено приклади запитів та результатів для ілюстрації цих можливостей, а також поради щодо впровадження, існуючі інструменти та обговорення можливостей і обмежень.
Автоматизована категоризація транзакцій за допомогою LLM
Одним з найбільш трудомістких аспектів бухгалтерського обліку є категоризація транзакцій (призначення їх на правильні рахунки) на основі дескрипторів, таких як платник, призначення платежу або сума. LLM можуть значно прискорити цей процес, використовуючи своє розуміння мови та широкі знання, щоб запропонувати відповідні рахунки витрат або доходів для кожної транзакції.
Наприклад, якщо ваша бухгалтерська книга Beancount містить некатегоризовани й запис:
2023-02-28 * "Amazon.com" "Підставка для ноутбука, ... Портативна підставка для ноутбука..."
Assets:Zero-Sum-Accounts:Amazon-Purchases -14.29 USD
(відсутній рахунок витрат)
Запит до LLM може попросити відповідний рахунок витрат для балансування транзакції. В одному реальному випадку LLM класифікувала покупку підставки для ноутбука на Amazon як Expenses:Office-Supplies:Laptop-Stand. Подібним чином, вона віднесла покупку щітки склоочисника до Expenses:Car:Maintenance, а кухонний прилад – до Expenses:Kitchen:Appliances, інтелектуально виводячи категорії з описів товарів. Ці приклади показують, як LLM може використовувати контекст (платника та опис) для вибору відповідного рахунку Beancount.
Сучасні інструменти, такі як Beanborg, інтегрують цю можливість: Beanborg – це імпортер Beancount з відкритим кодом, який може автоматично зіставляти дані транзакцій з правильними рахунками витрат. Він в основному використовує механізм на основі правил, але також підтримує машинне навчання і навіть ChatGPT для пропозицій щодо категоризації. За допомогою Beanborg ви можете імпортувати банківський CSV і отримати більшість записів автоматично класифікованими (наприклад, платник, що містить "Fresh Food Inc.", може бути класифікований як Expenses:Groceries за правилами або за допомогою LLM).
Як використовувати LLM для категоризації: Ви можете передати пакет описів транзакцій моделі, подібній до GPT-4, і попросити її призначити ймовірні рахунки. Один із за пропонованих робочих процесів: використовуйте GPT для категоризації невеликої партії витрат, виправте будь-які помилки вручну, а потім використовуйте вбудовані плагіни імпортера Beancount (наприклад, smart_importer), щоб навчитися на цих прикладах для майбутніх транзакцій. Цей гібридний підхід використовує широкі знання LLM для нових або незвичайних транзакцій (наприклад, виведення того, що PILOT Parallel Calligraphy Pens повинні підпадати під рахунок витрат на канцелярське приладдя) і потім послідовно застосовує ці категоризації в майбутньому.
Приклад запиту та відповіді: У таблиці нижче показано, як користувач може взаємодіяти з LLM для категоризації транзакцій:
| Запит користувача (деталі транзакції) | Запропонований LLM рахунок/запис |
|---|---|
Категоризувати: "Starbucks - Latte $5.00 on 2025-04-01" | Пропозиція: Витрати – ймовірно Expenses:Food:Coffee (покупка кави) |
Категоризувати: "Amazon.com - Bosch Rear Wiper Blade $11.60" | Пропозиція: Expenses:Car:Maintenance (заміна автомобільної запчастини) |
Категоризувати: "Salary payment from ACME Corp $5000" | Пропозиція: Income:Salary (дохід від зарплати) |
Повний запис: 2025-07-10 * "Office Depot" "printer ink" Assets:Checking -45.00 USD | Додає: Expenses:Office:Supplies 45.00 USD (балансування запису) |
У цих прикладах LLM використовує загальні знання (Starbucks – це кава, автомобільні запчастини Amazon пов'язані з технічним обслуговуванням автомобіля, зарплата ACME – це дохід), щоб запропонувати правильний рахунок Beancount. Вона може навіть завершити журнальний запис, додавши відсутню балансуючу проводку (у випадку з Office Depot, пропонуючи рахунок витрат на канцелярське приладдя для компенсації платежу). З часом така категоризація на основі ШІ може заощадити час і зменшити ручні зусилля при класифікації транзакцій.
Виявлення аномалій та ідентифікація дублікатів
Крім категоризації, LLM можуть допомогти позначити аномалії в бухгалтерській книзі – такі як дублікати записів або незвичайні витрати – шляхом аналізу описів транзакцій та закономірностей простою англійською мовою. Традиційне програмне забезпечення може виявляти точні дублікати за допомогою хешів або суворих правил (наприклад, Beanborg використовує хеш даних CSV, щоб запобігти повторному імпорту тієї самої транзакції). Однак LLM може надати більш контекстно-обізнаний огляд.
Наприклад, ви можете запропонувати LLM список останніх транзакцій і запитати: "Чи виглядає щось з цього як дублікати або незвичайні викиди?" Оскільки LLM чудово справляються з контекстним аналізом, вони можуть помітити, якщо два записи мають однакову дату та суму або дуже схожі описи, і позначити їх як потенційні дублікати. Вони також можуть розпізнавати закономірності звичайних витрат і виявляти відхилення. Як зазначає одне джерело, "в контексті потоку фінансових транзакцій LLM може виявляти аномальні звички витрачання коштів", вивчаючи, що є типовим, і визначаючи, що не відповідає.
Приклад незвичайної сум и: Якщо ви зазвичай витрачаєте $30–$50 на паливо, але раптом одна транзакція на паливо становить $300, LLM може виділити це як аномалію ("ця витрата на паливо в десять разів перевищує ваш звичайний шаблон"). LLM виявляють аномалії, виявляючи навіть незначні відхилення, які системи на основі правил можуть пропустити. Вони враховують контекст – наприклад, час, категорію, частоту – а не лише жорсткі пороги.
Приклад дубліката: Враховуючи два рядки бухгалтерської книги, які майже ідентичні (однаковий платник і сума на близькі дати), LLM може відповісти: "Транзакції 2025-08-01 і 2025-08-02 на суму $100 компанії ACME Corp, схоже, є дублікатами." Це особливо корисно, якщо дані були введені з кількох джерел або якщо банк подвоїв транзакцію.
Хоча виявлення аномалій на основі LLM все ще є новою сферою, воно доповнює традиційні методи, пояснюючи чому щось позначається природною мовою. Це може допомогти людині, яка переглядає, швидко зрозуміти та вирішити проблему (наприклад, підтвердити дублікат і видалити один запис або дослідити незвичайну витрату).