Преминете към основното съдържание

Използване на LLM за автоматизация и подобрение на счетоводството с Beancount

Beancount е plain-text система за двойно счетоводство, която наскоро стана по-достъпна благодарение на големи езикови модели (LLM) като ChatGPT. Техническите потребители – включително собственици на бизнес, основатели на стартъпи, инженери и счетоводители – могат да използват LLM, за да автоматизират досадните счетоводни задачи, като същевременно поддържат гъвкавостта и прозрачността на базирания на текст счетоводен регистър на Beancount. Този доклад изследва практически начини, по които LLM могат да рационализират работните процеси на Beancount, включително категоризация на транзакции, откриване на аномалии, интелигентни предложения за счетоводни статии, генериране на статии от естествен език и сверяване на извлечения. Предоставени са примерни подкани и резултати, за да се илюстрират тези възможности, заедно със съвети за внедряване, съществуващи инструменти и обсъждане на възможности и ограничения.

Автоматизирана категоризация на транзакции с LLM

using-llms-to-automate-and-enhance-bookkeeping-with-beancount

Един от най-отнемащите време аспекти на счетоводството е категоризирането на транзакциите (присвояването им към правилните сметки) въз основа на дескриптори като платец, бележка или сума. 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 е open-source импортер за 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 на 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, предлагайки сметка за разходи за офис консумативи, за да компенсира плащането). С течение на времето подобна категоризация, управлявана от AI, може да спести време и да намали ръчните усилия при класифицирането на транзакции.

Откриване на аномалии и идентифициране на дубликати

Освен категоризацията, LLM могат да помогнат за маркиране на аномалии в счетоводния регистър – като например дублиращи се статии или необичайни разходи – чрез анализ на описанията на транзакциите и моделите на обикновен английски език. Традиционният софтуер може да хване точни дубликати чрез хешове или строги правила (например, Beanborg използва хеш на CSV данните, за да предотврати импортирането на една и съща транзакция два пъти). LLM обаче може да предостави по-добър преглед, отчитащ контекста.

Например, можете да подканите LLM със списък на скорошни транзакции и да попитате: "Има ли нещо, което да изглежда като дубликат или необичаен аутлайер?" Тъй като LLM се отличават с контекстуален анализ, те могат да забележат дали две статии имат една и съща дата и сума или много сходни описания и да ги маркират като потенциални дубликати. Те също така могат да разпознават модели на нормално харчене и да откриват отклонения. Както отбелязва един източник, "в контекста на поток от финансови транзакции, LLM може да открие необичайни навици на харчене" като научи какво е типично и идентифицира какво не се вписва.

Пример за необичайна сума: Ако обикновено харчите 3030–50 за гориво, но изведнъж една транзакция за гориво е $300, LLM може да подчертае това като аномалия ("този разход за гориво е десет пъти по-голям от обичайния ви модел"). LLM идентифицират аномалии, като откриват дори фини отклонения, които базираните на правила системи може да пропуснат. Те разглеждат контекста – например, времето, категорията, честотата – а не просто твърди прагове.

Пример за дубликат: Като се имат предвид два реда в счетоводния регистър, които са почти идентични (същият платец и сума на близки дати), LLM може да отговори: "Транзакциите на 2025-08-01 и 2025-08-02 за $100 към ACME Corp изглежда са дубликати." Това е особено полезно, ако данните са въведени от множество източници или ако банката е осчетоводила транзакция два пъти.

Въпреки че откриването на аномалии, управлявано от LLM, все още е нововъзникваща област, то допълва традиционните методи, като обяснява защо нещо е маркирано на естествен език. Това може да помогне на човешки рецензент бързо да разбере и да се справи с проблема (например, потвърждавайки дубликат и изтривайки една статия или разследвайки разход, който е аутлайер).

Интелигентни предложения за завършване на счетоводни статии

LLM могат да действат като интелигентни асистенти, когато съставяте или коригирате счетоводни статии в Beancount. Те не само категоризират транзакциите, но и предлагат как да завършите частични статии или да коригирате дисбаланси. Това е като да имате интелигентно автоматично довършване за вашия счетоводен регистър.

Предложения за сметка и сума: Да предположим, че въвеждате нова транзакция с платеца и сумата, но не сте решили към коя сметка принадлежи. LLM може да предложи сметката въз основа на описанието (както е разгледано в категоризацията). Той също така може да гарантира, че статията се балансира, като предостави допълващото осчетоводяване. Например, потребителят може да напише:

2025-09-10 * "Cloud Hosting Inc" "Месечна такса за VM хостинг"
Assets:Bank:Checking -120.00 USD
[Липсва второ осчетоводяване]

Като попитате LLM, "Каква е другата страна на тази транзакция?", той може да предложи: Expenses:Business:Hosting 120.00 USD за балансиране на статията, признавайки, че таксата за облачен хостинг е бизнес разход.

В Google Group на Beancount един потребител демонстрира това, като подаде партида едностранни статии за покупки от Amazon към ChatGPT и го подкани да "добави категоризирани разходни осчетоводявания, за да балансира всяка транзакция". GPT попълни всяко липсващо осчетоводяване с правдоподобна сметка за разходи (макар и понякога твърде гранулирана, като създаде сметка само за "Поставка за лаптоп"). Това показва как LLM могат да изготвят пълни счетоводни статии, когато са дадени непълни данни.

Подобрения на разказа: LLM могат дори да помогнат за подобряване на разказа или описанията в статиите. Ако описанието е твърде неясно (например, вътрешен код от банково извлечение), можете да помолите LLM да го пренапише по-ясно за счетоводния регистър. Тъй като LLM се справят добре с естествения език, те могат да превърнат “PUR CHK 1234 XYZ CORP” в “Чек #1234 към XYZ Corp” за яснота.

Насоки и обучение: С течение на времето LLM може да бъде интегриран във вашия работен процес за редактиране (възможно чрез приставка за редактор или разширение на Fava), за да предлага вероятни завършвания, докато пишете транзакция. Това е аналогично на начина, по който редакторите на код използват AI, за да предлагат завършвания на код. В счетоводството с обикновен текст LLM може да черпи от вашите съществуващи имена на сметки и минали статии, за да препоръча как да финализирате следващата. Например, ако често записвате Office Supplies, когато "Staples" се появи в платеца, моделът може да научи този модел. Някои потребители съобщават, че предложенията на ChatGPT могат да бъдат прецизирани след няколко примера и след това обобщени с помощта на приставка като smart_importer за бъдещи транзакции.

В обобщение, LLM предоставят "втора двойка очи" за вашите статии, предлагайки завършвания и корекции, които се придържат към правилата за двойно счетоводство на Beancount.

Генериране на статии в Beancount от неструктурирани входове

Може би едно от най-мощните приложения на LLM е превеждането на неструктурирана финансова информация – суров текст, разписки или описания на естествен език – в структурирани статии в Beancount. Това позволява на потребителите да говорят или поставят данни в свободна форма и да получават валидни статии в счетоводния регистър в отговор.

От естествен език към статия: Можете да подканите LLM с изречение като,

"Купих офис консумативи (мастило за принтер) от Office Depot за $45 на 10 юли 2025 г., платено с моята разплащателна сметка."

Способен LLM ще интерпретира това и ще произведе нещо като:

2025-07-10 * "Office Depot" "мастило за принтер"
Assets:Bank:Checking -45.00 USD
Expenses:Office:Supplies 45.00 USD

Той е идентифицирал датата, платеца, разказа, сумата и е познал подходящите сметки (кредитирайки банковия актив, дебитирайки разход за офис консумативи). Това по същество превръща обикновен отчет за разходите на английски език в правилно форматирана счетоводна статия в Beancount. Последните изследвания дори са използвали Beancount като целеви формат, за да оценят разбирането на LLM за двойното счетоводство, със смесени резултати (LLM често се нуждаят от внимателна подкана, за да получат точния синтаксис). С добре изработена подкана или няколко примера обаче модели като GPT-4 обикновено могат да създадат правилна статия за прости сценарии.

OCR към счетоводен регистър: LLM с възможности за зрение или OCR (като GPT-4 с въвеждане на изображения или специализирани инструменти) могат да отидат една стъпка напред: да вземат изображение на разписка или PDF на банково извлечение и да извлекат транзакции от него. Например, можете да покажете на ChatGPT снимка на разписка и да поискате статия в Beancount – моделът ще анализира датата, общата сума, продавача и може би данъка, след което ще изведе статията с тези подробности. Едно ръководство отбелязва, че ChatGPT може да конвертира данни от фактури или разписки в "чисти, форматирани таблици, подходящи за счетоводство", които след това можете да нанесете върху сметки в Beancount. По същия начин CSV или Excel експорт може да бъде подаден към LLM с инструкции за извеждане на транзакции в Beancount – наистина, потребителите са подканили GPT да "напише Python скрипт за анализиране на CSV и извеждане на статии в Beancount" като начин за автоматизиране на импортирането.

Обработка на множество транзакции: LLM могат да обработват и партидни входове. Можете да поставите списък със сурови транзакции (дати, описания, суми) и да поискате от модела да генерира съответните редове в счетоводния регистър на Beancount. Примерна подкана от общността използва подробна инструкция за GPT-4 да "конвертира CSV съдържанието във формат Beancount", като същевременно следва счетоводните принципи. Резултатът е пълен .beancount файл, покриващ всички транзакции. Този подход по същество позволява на непрограмистите да постигнат това, което биха направили персонализираните скриптове за импортиране – като инструктират AI на естествен език.

Имайте предвид, че въпреки че LLM са впечатляващи при анализирането и генерирането на текст, валидирането е от решаващо значение. Винаги преглеждайте статиите, създадени от неструктурирани входове. Проверете датите, сумите и балансирането на дебитите/кредитите (компилаторът на Beancount ще хване грешки в дисбаланса). Както подчертава едно проучване, без внимателни насоки LLM може да създаде напълно правилни транзакции с двойно записване само малка част от времето. Предоставянето на примерни шаблони във вашата подкана и изричното напомняне на модела за синтаксиса на Beancount значително ще подобри точността.

Сверяване на извлечения с помощта на LLM

Сверяването на банка – процесът на съпоставяне на вашия счетоводен регистър с външно извлечение (банково или кредитна карта) – може да бъде досадно. LLM могат да действат като интелигентни двигатели за сравнение, помагайки за идентифициране на несъответствия между вашите записи в Beancount и извлечението.

Идентифициране на липсващи или несъответстващи статии: Лесен случай на употреба е да дадете на LLM два списъка: единият на транзакции от вашия счетоводен регистър за период и един от банковото извлечение, след което да го помолите да намери кои статии не съвпадат. Тъй като моделът може да чете и сравнява ред по ред, той ще подчертае елементи, присъстващи в единия списък, но не и в другия. Например, можете да подканите: "Ето моя счетоводен регистър за март и банковото ми извлечение за март. Кои транзакции са в извлечението, но не и в моя счетоводен регистър, или обратното?". Ръководство за използване на ChatGPT в счетоводството отбелязва: "Поставете списък с транзакции и ChatGPT ще подчертае липсващи или несъответстващи статии.". Това означава, че AI може да изведе нещо като: "Плащането от 120.00 USD на 03-15 се появява в банковото извлечение, но не е в счетоводния регистър (възможна липсваща статия)."

Обяснение на разликите: LLM могат също така да описват разликите на обикновен език. Ако транзакция има различна сума или дата между счетоводния регистър и извлечението (може би поради грешка при писане или разлика в времето), LLM може да маркира: "Транзакция X има 105всчетоводниярегистърспрямо105 в счетоводния регистър спрямо 150 в банковото извлечение – те може да се отнасят до един и същ елемент с несъответствие в сумата." Това естествено обяснение може да ви насочи директно към проблема, който трябва да поправите, вместо вие ръчно да сканирате редове с числа.

Автоматизиране на работните процеси за сверяване: На практика можете да използвате функцията Advanced Data Analysis (по-рано Code Interpreter) на ChatGPT: качете вашия CSV файл с извлечение и може би експорта на вашия счетоводен регистър и го оставете програмно да ги кръстосано провери. Има и нововъзникващи плъгини и инструменти, фокусирани върху сверяването. Например, някои демонстрираха, че ChatGPT подготвя отчети за сверяване и дори предлага коригиране на счетоводни статии за балансиране на книгите. Въпреки че това са експерименти в ранен етап, те сочат към бъдеще, в което голяма част от тежката работа по сверяване (сравнения, подчертаване на разликите) се прехвърля на AI, а човешкият счетоводител просто преглежда и одобрява корекциите.

Важно е да поддържате контрол и сигурност, когато използвате LLM за сверяване, особено с чувствителни финансови данни. Ако използвате облачни модели, уверете се, че не се споделят номера на сметки или лични идентификатори, или използвайте анонимизирани данни. Алтернатива е да стартирате локален LLM (обсъдено по-долу), така че данните никога да не напускат вашата среда.

Методи за внедряване: API, работни процеси и инструменти

Как практически може да се интегрират LLM в базиран на Beancount работен процес? Има няколко подхода, вариращи от прости взаимодействия с копиране и поставяне с ChatGPT до изграждане на персонализирани автоматизирани тръбопроводи:

  • Ръчно подканване (ChatGPT UI): Най-достъпният метод е да използвате ChatGPT (или друг LLM интерфейс) интерактивно. Например, копирайте партида некатегоризирани транзакции и подканете модела за категории. Или поставете част от банково извлечение и поискайте конвертиране в Beancount. Това не изисква кодиране – както е видно от много потребители, които просто описват проблема си на ChatGPT и получават използваеми резултати. Недостатъкът е, че е малко ad-hoc и трябва да се уверите, че моделът е насочен добре всеки път.

  • API и скриптове: За по-повтаряем работен процес можете да използвате API (като API на OpenAI за GPT-4) за обработка на транзакции. Това може да се направи в Python скрипт, който чете нови транзакции и извиква API, за да получи предложение за категория или пълна статия. Можете да интегрирате това с вашия тръбопровод за импортиране. Например, конфигурацията на Beanborg позволява да се активират предложения на ChatGPT чрез задаване на use_llm: true и предоставяне на API ключ. След това всяка импортирана транзакция получава допълнителна прогноза за категория от GPT заедно с базираната на правила или ML прогноза, която можете да прегледате.

  • Плъгини и разширения: Тъй като LLM набират популярност, можем да очакваме да се появят плъгини за Beancount или неговия уеб интерфейс Fava. Те биха могли да добавят бутон "Попитай AI" към транзакциите. Въпреки че към момента на писане няма официален AI плъгин за Beancount, интересът на общността нараства. Всъщност създателят на Beancount отбеляза, че идеята за LLM библиотека с подкани за Beancount звучи забавно и членовете на общността експериментират с "LLM счетоводни ботове" и проектиране на подкани за счетоводни задачи. Следете форумите на Beancount и проблемите в GitHub за такива интеграции.

  • Open Source библиотеки: Освен Beanborg, други свързани инструменти включват smart_importer (плъгин за Beancount, където можете да напишете Python функция или дори да използвате просто машинно обучение, за да класифицирате транзакции при импортиране). Въпреки че не е LLM, той се съчетава добре с използването на LLM: можете да използвате LLM, за да генерирате бързо данни или правила за обучение, след което да позволите на smart_importer да ги приложи. Има и интерес към инструменти като Llamafile (локален LLM с отворен код за задачи с данни), използвани за анализиране и конвертиране на финансови данни, и проекти като Actual или Paisa в пространството на счетоводството с обикновен текст (въпреки че те са по-фокусирани върху предоставянето на потребителски интерфейс, а не на AI). Пейзажът се развива бързо и е вероятно да се появят повече изследователски проекти и код с отворен код, които са специално насочени към автоматизация на счетоводството с LLM. Например, документ от 2024 г. представи метод за използване на подкани за езици, специфични за домейна (правила за синтаксис на Beancount), за да се оцени и подобри LLM изхода за счетоводството – такива изследвания могат да доведат до библиотеки, които помагат на LLM да се придържа към счетоводните правила по-стриктно.

  • Хибридни AI работни процеси: Можете да комбинирате LLM с други AI/автоматизации. Например, използвайте OCR, за да получите текст от разписки, след което го подайте към LLM за генериране на статии. Или използвайте модел за ML за откриване на аномалии, за да маркирате аутлайери, след което накарайте LLM да обясни тези аутлайери. Частите могат да бъдат свързани чрез скриптове или платформи за автоматизация (като например използване на Zapier или персонализиран код за изпращане на нови транзакции към AI услуга и съхраняване на отговора).

При внедряване бъдете внимателни за разходите и ограниченията на скоростта, ако използвате платен API, особено за големи счетоводни регистри (въпреки че категоризирането на една транзакция струва много малко токени). Също така, включете обработка на грешки – например, ако AI върне невалидно име на сметка или неправилно форматирана статия, имайте резервни варианти или стъпки за ръчен преглед.

Съществуващи инструменти, библиотеки и изследвания

  • Beanborg – Както беше обсъдено, автоматизиран импортер на транзакции за Beancount, който интегрира правила, ML и ChatGPT за категоризация. Той е с отворен код и може да послужи като шаблон за изграждане на вашите собствени работни процеси за импортиране с помощта на AI.

  • smart_importer – Плъгин за Beancount, който ви позволява да пишете Python логика за автоматично класифициране или дори коригиране на транзакции по време на импортиране. Някои потребители са използвали GPT, за да помогнат за създаването на тези правила или за предварително класифициране на данни, които smart_importer след това използва.

  • Проектиране на подкани за Beancount (Общност) – Има текущи проучвания на общността във форуми (Reddit r/plaintextaccounting, Google Group на Beancount) за използването на LLM. Например, един потребител сподели техники за подканване, за да накара GPT-4 да извежда правилно статии в Beancount, като изрично му напомня за формата и използва обосновки стъпка по стъпка. Друг отворен GitHub gist предоставя рецепта за използване на GPT-4 или Claude за генериране на Python функция, която категоризира транзакции по ключови думи. Тези експерименти на общността са ценни ресурси за научаване на стратегии за подкани.

  • Изследване на финансови LLM – Освен практически скриптове, изследователските документи (като "Оценка на финансовата грамотност на LLM чрез DSL за счетоводство с обикновен текст", FinNLP 2025) директно разглеждат способността на LLM в двойното счетоводство. Те често отварят своите подкани или набори от данни с отворен код, които могат да бъдат преназначени за фина настройка или инструктиране на модели за по-добра точност. Има и работа по използване на LLM embeddings за откриване на аномалии във финансите и върху специализирани LLM, фокусирани върху финансите, които могат да обработват счетоводни заявки по-надеждно. Въпреки че това не са plug-and-play инструменти, те показват посоката на бъдещите подобрения.

  • ChatGPT плъгини и свързани SaaS – Няколко услуги и плъгини на трети страни имат за цел да интегрират ChatGPT със счетоводен софтуер (QuickBooks, Xero и т.н.). Например, някои плъгини твърдят, че "визуално маркират несъответствия" в QuickBooks чрез ChatGPT. За Beancount (като базиран на файлове и отворен), такива плъгини все още не съществуват, но може да се появи комбинация от AI-приятелски интерфейс като Fava с LLM зад кулисите. Ентусиастите с отворен код могат да създадат Fava разширение, което изпраща заявки към LLM (например, Fava таб, където можете да задавате въпроси за вашия счетоводен регистър на естествен език).

В обобщение, комбинация от скриптове на общността, специализирани инструменти като Beanborg и авангардни изследвания тласкат границата на това как LLM могат да помогнат в счетоводството с обикновен текст. Дори ако перфектно готово решение не е налично за всяка задача, градивните елементи и примери са там за техническите потребители, за да сглобят своя собствена AI-разширена счетоводна система.

Възможности и ограничения на LLM в работните процеси на Beancount

LLM предлагат вълнуващи възможности за потребителите на Beancount:

  • Драматични увеличения на ефективността: Те могат да намалят ръчните усилия за категоризиране и въвеждане на транзакции. Задачите, които преди са изисквали писане на персонализиран код или правила, често могат да бъдат изпълнени, като просто помолите AI да го направи. Това намалява бариерата за непрограмистите да автоматизират своето счетоводство ("всеки може да бъде програмист сега", използвайки ChatGPT). Собствениците на бизнес могат да се съсредоточат повече върху преглед на финансови прозрения, отколкото върху въвеждане на данни.

  • Адаптивно обучение: За разлика от твърдите правила,