Использование LLM для автоматизации и улучшения бухгалтерского учета с помощью 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 - Латте $5.00 2025-04-01" | Предложение: Расход – вероятно Expenses:Food:Coffee (покупка кофе) |
Категоризировать: "Amazon.com - Bosch Задний стеклоочиститель $11.60" | Предложение: Expenses:Car:Maintenance (замена детали автомобиля) |
Категоризировать: "Выплата заработной платы от ACME Corp $5000" | Предложение: Income:Salary (выплата заработной платы) |
Завершить запись: 2025-07-10 * "Office Depot" "чернила для принтера" Assets:Checking -45.00 USD | Добавляет: Expenses:Office:Supplies 45.00 USD (балансирует запись) |
В этих примерах LLM опирается на общие знания (Starbucks — это кофе, автомобильные запчасти Amazon связаны с обслуживанием автомобилей, заработная плата ACME — это доход), чтобы предложить правильный счет Beancount. Он может даже завершить бухгалтерскую запись, добавив отсутствующую балансирующую проводку (в случае с Office Depot, предлагая счет расходов на канцелярские товары для компенсации платежа). Со временем такая категоризация на основе ИИ может сэкономить время и уменьшить ручной труд при классификации транзакций.