Ga naar hoofdinhoud

LLM's Gebruiken om Boekhouding te Automatiseren en Verbeteren met Beancount

Beancount is een plain-text double-entry accounting systeem dat recentelijk toegankelijker is geworden dankzij large language models (LLM's) zoals ChatGPT. Technische gebruikers – inclusief ondernemers, startup-oprichters, engineers en accountants – kunnen LLM's benutten om saaie boekhoudtaken te automatiseren, met behoud van de flexibiliteit en transparantie van Beancount's tekst-gebaseerde grootboek. Dit rapport onderzoekt praktische manieren waarop LLM's Beancount-workflows kunnen stroomlijnen, inclusief transactiecategorisatie, anomaliedetectie, slimme suggesties voor journaalposten, het genereren van posten uit natuurlijke taal en het reconciliëren van bankafschriften. Voorbeeldprompts en -outputs worden gegeven om deze mogelijkheden te illustreren, samen met implementatietips, bestaande tools en een discussie over kansen en beperkingen.

Geautomatiseerde Transactiecategorisatie met LLM's

LLM's gebruiken om boekhouding te automatiseren en verbeteren met Beancount

Een van de meest tijdrovende aspecten van boekhouding is het categoriseren van transacties (deze toewijzen aan de juiste rekeningen) op basis van beschrijvingen zoals begunstigde, memo of bedrag. LLM's kunnen dit aanzienlijk versnellen door hun taalbegrip en brede kennis te gebruiken om passende onkosten- of inkomstenrekeningen voor elke transactie voor te stellen.

Als uw Beancount-grootboek bijvoorbeeld een niet-gecategoriseerde post heeft:

2023-02-28 * "Amazon.com" "Laptop Stand, ... Portable Notebook Stand..."
Assets:Zero-Sum-Accounts:Amazon-Purchases -14.29 USD
(missing expense account)

Een prompt aan een LLM zou kunnen vragen om een geschikte onkostenrekening om de transactie te balanceren. In een echt geval categoriseerde een LLM een Amazon-aankoop van een laptopstandaard als Expenses:Office-Supplies:Laptop-Stand. Evenzo wees het een ruitenwisserbladaankoop toe aan Expenses:Car:Maintenance en een keukenapparaat aan Expenses:Kitchen:Appliances, waarbij intelligent categorieën werden afgeleid uit de artikelbeschrijvingen. Deze voorbeelden laten zien hoe een LLM context (de begunstigde en beschrijving) kan gebruiken om een geschikte Beancount-rekening te kiezen.

Moderne tools zoals Beanborg integreren deze mogelijkheid: Beanborg is een open-source Beancount-importtool die automatisch transactiegegevens kan matchen aan de juiste onkostenrekeningen. Het gebruikt voornamelijk een op regels gebaseerde engine, maar ondersteunt ook machine learning en zelfs ChatGPT voor categorisatiesuggesties. Met Beanborg kunt u een bank-CSV importeren en de meeste posten automatisch laten classificeren (bijvoorbeeld, een begunstigde die "Fresh Food Inc." bevat, kan worden gecategoriseerd onder Expenses:Groceries door regels of LLM-assistentie).

Hoe een LLM te gebruiken voor categorisatie: U kunt een batch transactiebeschrijvingen invoeren in een model zoals GPT-4 en het vragen om waarschijnlijke rekeningen toe te wijzen. Een voorgestelde workflow is: gebruik GPT om een kleine batch onkosten te categoriseren, corrigeer eventuele fouten handmatig en gebruik vervolgens Beancount's ingebouwde importeerplug-ins (zoals smart_importer) om van die voorbeelden te leren voor toekomstige transacties. Deze hybride aanpak maakt gebruik van de brede kennis van de LLM voor nieuwe of ongebruikelijke transacties (bijvoorbeeld, het afleiden dat PILOT Parallel Calligraphy Pens onder een Art Supplies-onkostenrekening zouden moeten vallen) en past die categorisaties vervolgens consistent toe.

Voorbeeldprompt & Reactie: De onderstaande tabel laat zien hoe een gebruiker kan communiceren met een LLM om transacties te categoriseren:

Gebruikersprompt (transactiedetails)LLM Voorgestelde Rekening/Post
Categoriseer: "Starbucks - Latte €5.00 op 2025-04-01"Suggestie: Onkosten – waarschijnlijk Expenses:Food:Coffee (koffie aankoop)
Categoriseer: "Amazon.com - Bosch Rear Wiper Blade €11.60"Suggestie: Expenses:Car:Maintenance (auto onderdeel vervanging)
Categoriseer: "Salaris betaling van ACME Corp €5000"Suggestie: Income:Salary (salaris inkomen)
Voltooi post: 2025-07-10 * "Office Depot" "printer ink" Assets:Checking -€45.00Voegt toe: Expenses:Office:Supplies 45.00 EUR (balanceer de post)

In deze voorbeelden put de LLM uit algemene kennis (Starbucks is koffie, Amazon-auto-onderdelen hebben betrekking op auto-onderhoud, ACME-salaris is inkomen) om de juiste Beancount-rekening voor te stellen. Het kan zelfs een journaalpost voltooien door de ontbrekende balancerende boeking toe te voegen (in het Office Depot-geval, een Office Supplies-onkostenrekening suggereren om de betaling te compenseren). Na verloop van tijd kan dergelijke AI-gestuurde categorisatie tijd besparen en de handmatige inspanning bij het classificeren van transacties verminderen.

Anomaliedetectie en Dubbele Identificatie

Naast categorisatie kunnen LLM's helpen bij het signaleren van afwijkingen in het grootboek – zoals dubbele posten of ongebruikelijke uitgaven – door transactiebeschrijvingen en patronen in gewoon Nederlands te analyseren. Traditionele software kan exacte duplicaten vangen via hashes of strikte regels (bijvoorbeeld, Beanborg gebruikt een hash van CSV-gegevens om te voorkomen dat dezelfde transactie twee keer wordt geïmporteerd). Een LLM kan echter een meer contextbewuste beoordeling bieden.

U zou bijvoorbeeld een LLM kunnen vragen met een lijst van recente transacties en vragen: "Zien deze eruit als duplicaten of ongebruikelijke uitschieters?" Omdat LLM's uitblinken in contextuele analyse, kunnen ze opmerken of twee posten dezelfde datum en hetzelfde bedrag hebben, of zeer vergelijkbare beschrijvingen, en deze markeren als potentiële duplicaten. Ze kunnen ook patronen van normale uitgaven herkennen en afwijkingen opsporen. Zoals een bron opmerkt: "in de context van een financiële transactiestroom kan een LLM abnormale bestedingsgewoonten detecteren" door te leren wat typisch is en te identificeren wat er niet in past.

Voorbeeld van ongebruikelijk bedrag: Als u meestal €30–€50 aan brandstof uitgeeft, maar plotseling is één brandstoftransactie €300, dan kan een LLM dat markeren als een anomalie ("deze brandstofkosten zijn tien keer groter dan uw gebruikelijke patroon"). LLM's identificeren afwijkingen door zelfs subtiele afwijkingen te detecteren die op regels gebaseerde systemen mogelijk over het hoofd zien. Ze houden rekening met de context – bijvoorbeeld, de timing, categorie, frequentie – in plaats van alleen harde drempels.

Dubbel voorbeeld: Gezien twee grootboekregels die bijna identiek zijn (dezelfde begunstigde en hetzelfde bedrag op dichte datums), kan een LLM antwoorden: "De transacties op 2025-08-01 en 2025-08-02 voor €100 aan ACME Corp lijken duplicaten te zijn." Dit is vooral handig als gegevens uit meerdere bronnen zijn ingevoerd of als een bank een transactie dubbel heeft geboekt.

Hoewel LLM-gestuurde anomaliedetectie nog in opkomst is, vult het traditionele methoden aan door in natuurlijke taal uit te leggen waarom iets wordt gemarkeerd. Dit kan een menselijke beoordelaar helpen om het probleem snel te begrijpen en aan te pakken (bijvoorbeeld, het bevestigen van een duplicaat en het verwijderen van één post, of het onderzoeken van een afwijkende uitgave).

Slimme Suggesties voor Journaalpost Voltooiing

LLM's kunnen fungeren als intelligente assistenten wanneer u journaalposten samenstelt of corrigeert in Beancount. Ze categoriseren niet alleen transacties, maar suggereren ook hoe u gedeeltelijke posten kunt voltooien of onevenwichtigheden kunt corrigeren. Dit is alsof u een slimme autocompletie voor uw grootboek heeft.

Rekening- en bedragsuggesties: Stel dat u een nieuwe transactie invoert met de begunstigde en het bedrag, maar nog niet hebt besloten tot welke rekening deze behoort. Een LLM kan de rekening suggereren op basis van de beschrijving (zoals behandeld in categorisatie). Het kan er ook voor zorgen dat de post in evenwicht is door de complementaire boeking te leveren. Een gebruiker kan bijvoorbeeld schrijven:

2025-09-10 * "Cloud Hosting Inc" "Maandelijkse VM hosting fee"
Assets:Bank:Checking -120.00 EUR
[Missing second posting]

Door de LLM te vragen: "Wat is de andere kant van deze transactie?", kan het suggereren: Expenses:Business:Hosting 120.00 EUR om de post in evenwicht te brengen, erkennend dat een cloud hosting fee een zakelijke uitgave is.

In de Beancount Google Group demonstreerde een gebruiker dit door een batch eenzijdige Amazon-aankoopposten aan ChatGPT te voeren en het te vragen om "gecategoriseerde onkostenboekingen toe te voegen om elke transactie in evenwicht te brengen". GPT vulde elke ontbrekende boeking in met een plausibele onkostenrekening (zij het soms te gedetailleerd, zoals het creëren van een rekening alleen voor "Laptop Stand"). Dit laat zien hoe LLM's complete journaalposten kunnen opstellen wanneer incomplete gegevens worden gegeven.

Narratie verbeteringen: LLM's kunnen zelfs helpen om de narratie of beschrijvingen in posten te verbeteren. Als een beschrijving te cryptisch is (bijvoorbeeld een interne code van een bankafschrift), kunt u de LLM vragen om deze duidelijker te herschrijven voor het grootboek. Aangezien LLM's goed omgaan met natuurlijke taal, kunnen ze "PUR CHK 1234 XYZ CORP" transformeren in "Check #1234 to XYZ Corp" voor de duidelijkheid.

Begeleiding en leren: Na verloop van tijd kan een LLM worden geïntegreerd in uw bewerkingsworkflow (mogelijk via een editorplug-in of Fava-extensie) om waarschijnlijke voltooiingen voor te stellen terwijl u een transactie typt. Dit is analoog aan hoe code-editors AI gebruiken om codevoltooiingen voor te stellen. In plain-text accounting kan de LLM putten uit uw bestaande rekeningnamen en eerdere posten om aan te bevelen hoe de volgende moet worden afgerond. Als u bijvoorbeeld vaak Office Supplies registreert wanneer "Staples" in de begunstigde verschijnt, kan het model dit patroon leren. Sommige gebruikers melden dat de suggesties van ChatGPT kunnen worden verfijnd na een paar voorbeelden en vervolgens kunnen worden gegeneraliseerd met behulp van een plug-in zoals smart_importer voor toekomstige transacties.

Samenvattend bieden LLM's een "tweede paar ogen" op uw posten, en bieden ze voltooiingen en correcties die voldoen aan de double-entry regels van Beancount.

Beancount Posten Genereren uit Ongestructureerde Inputs

Misschien wel een van de krachtigste toepassingen van LLM's is het vertalen van ongestructureerde financiële informatie – ruwe tekst, ontvangstbewijzen of natuurlijke taalbeschrijvingen – in gestructureerde Beancount-posten. Hierdoor kunnen gebruikers vrijvormgegevens spreken of plakken en geldige grootboekposten terugkrijgen.

Van natuurlijke taal naar post: U kunt een LLM vragen met een zin als:

"Ik kocht kantoorartikelen (printerinkt) van Office Depot voor €45 op 10 juli 2025, betaald met mijn betaalrekening."

Een capabele LLM zal dit interpreteren en iets produceren als:

2025-07-10 * "Office Depot" "printer ink"
Assets:Bank:Checking -45.00 EUR
Expenses:Office:Supplies 45.00 EUR

Het heeft de datum, begunstigde, narratie, bedrag geïdentificeerd en de juiste rekeningen geraden (het krediteren van het bankactiva, het debiteren van een onkostenrekening voor kantoorartikelen). Dit verandert in wezen een gewoon Engels onkostenrapport in een correct geformatteerde Beancount-journaalpost. Recent onderzoek heeft zelfs Beancount gebruikt als een doelformaat om het begrip van LLM's van double-entry accounting te evalueren, met gemengde resultaten (LLM's hebben vaak zorgvuldige prompts nodig om de syntax precies goed te krijgen). Met een goed geformuleerde prompt of few-shot voorbeelden kunnen modellen zoals GPT-4 echter meestal een correcte post produceren voor eenvoudige scenario's.

OCR naar grootboek: LLM's met visie- of OCR-mogelijkheden (zoals GPT-4 met beeldinvoer of gespecialiseerde tools) kunnen een stap verder gaan: een afbeelding van een ontvangstbewijs of een PDF van een bankafschrift nemen en transacties eruit extraheren. U kunt ChatGPT bijvoorbeeld een foto van een ontvangstbewijs laten zien en vragen om een Beancount-post – het model zou de datum, het totaal, de leverancier en misschien de belasting parseren en vervolgens de post met die details uitvoeren. Een handleiding merkt op dat ChatGPT gegevens van facturen of ontvangstbewijzen kan converteren naar "schone, geformatteerde tabellen die geschikt zijn voor accounting", die u vervolgens kunt toewijzen aan Beancount-rekeningen. Op dezelfde manier kan een CSV- of Excel-export worden ingevoerd in een LLM met instructies om Beancount-transacties uit te voeren – gebruikers hebben GPT inderdaad gevraagd om "een Python-script te schrijven om een CSV te parseren en Beancount-posten uit te voeren" als een manier om importen te automatiseren.

Multi-transactie verwerking: LLM's kunnen ook batch-inputs verwerken. U kunt een lijst met ruwe transacties (datums, beschrijvingen, bedragen) plakken en het model vragen om overeenkomstige Beancount-grootboekregels te genereren. Een voorbeeldprompt uit de community gebruikt een gedetailleerde instructie voor GPT-4 om "de CSV-inhoud te converteren naar Beancount-formaat" terwijl de accountingprincipes worden gevolgd. De output is een compleet .beancount-bestand dat alle transacties dekt. Deze aanpak stelt in wezen niet-programmeurs in staat om te bereiken wat aangepaste importscripts zouden doen – door de AI in natuurlijke taal te instrueren.

Houd er rekening mee dat hoewel LLM's indrukwekkend zijn in het parseren en genereren van tekst, validatie cruciaal is. Controleer altijd de posten die zijn geproduceerd uit ongestructureerde inputs. Controleer datums, bedragen en dat de debet/credits in evenwicht zijn (Beancount's compiler zal onevenwichtigheidsfouten vangen). Zoals een studie benadrukte, zonder zorgvuldige begeleiding zou een LLM slechts een klein deel van de tijd volledig correcte double-entry transacties kunnen produceren. Het verstrekken van sjabloonvoorbeelden in uw prompt en het expliciet herinneren van het model aan de Beancount-syntax zal de nauwkeurigheid aanzienlijk verbeteren.

Bankafschriften Reconciliëren met LLM-Assistentie

Bankreconciliatie – het proces van het matchen van uw grootboek met een extern bankafschrift (bank- of creditcard) – kan vervelend zijn. LLM's kunnen fungeren als intelligente vergelijkingsengines, die helpen bij het identificeren van discrepanties tussen uw Beancount-records en het afschrift.

Ontbrekende of niet-overeenkomende posten identificeren: Een eenvoudig gebruiksscenario is om de LLM twee lijsten te geven: één van transacties uit uw grootboek voor een periode en één van het bankafschrift, en vervolgens te vragen welke posten niet overeenkomen. Omdat het model regel voor regel kan lezen en vergelijken, zal het items markeren die in de ene lijst voorkomen en niet in de andere. U kunt bijvoorbeeld vragen: "Hier is mijn grootboek voor maart en het afschrift van mijn bank voor maart. Welke transacties staan op het afschrift maar niet in mijn grootboek, of andersom?". Een handleiding over het gebruik van ChatGPT in boekhouding merkt op: "Plak een lijst met transacties, en ChatGPT markeert ontbrekende of niet-overeenkomende posten.". Dit betekent dat de AI iets zou kunnen uitvoeren als: "De betaling van €120.00 op 03-15 staat op het bankafschrift, maar niet in het grootboek (mogelijke ontbrekende post)."

Verschillen uitleggen: LLM's kunnen ook verschillen in duidelijke taal beschrijven. Als een transactie een ander bedrag of een andere datum heeft tussen het grootboek en het bankafschrift (misschien als gevolg van een typefout of timingverschil), kan de LLM aangeven: "Transactie X heeft €105 in het grootboek versus €150 op het bankafschrift – deze kunnen verwijzen naar hetzelfde item met een bedragsverschil." Deze natuurlijke uitleg kan u rechtstreeks naar het probleem leiden om op te lossen, in plaats van dat u handmatig lijnen met cijfers scant.

Reconciliatieworkflows automatiseren: In de praktijk kunt u ChatGPT's Advanced Data Analysis-functie (voorheen Code Interpreter) gebruiken: upload uw afschrift-CSV en misschien uw grootboekexport en laat het deze programmatisch kruiscontroleren. Er zijn ook opkomende plug-ins en tools die zich richten op reconciliatie. Sommigen hebben bijvoorbeeld aangetoond dat ChatGPT reconciliatierapporten voorbereidt en zelfs aanpassende journaalposten voorstelt om de boeken in evenwicht te brengen. Hoewel dit experimenten in een vroeg stadium zijn, wijzen ze op een toekomst waarin een groot deel van het monotone werk in reconciliatie (vergelijkingen, het markeren van verschillen) wordt uitbesteed aan een AI, en de menselijke boekhouder alleen aanpassingen beoordeelt en goedkeurt.

Het is belangrijk om controle en veiligheid te behouden bij het gebruik van LLM's voor reconciliatie, vooral met gevoelige financiële gegevens. Als u cloudgebaseerde modellen gebruikt, zorg er dan voor dat er geen rekeningnummers of persoonlijke identificatiegegevens worden gedeeld, of gebruik geanonimiseerde gegevens. Een alternatief is het lokaal uitvoeren van een LLM (hieronder besproken), zodat de gegevens uw omgeving nooit verlaten.

Implementatiemethoden: API's, Workflows en Tools

Hoe kan men LLM's praktisch integreren in een Beancount-gebaseerde workflow? Er zijn verschillende benaderingen, variërend van eenvoudige copy-paste interacties met ChatGPT tot het bouwen van aangepaste geautomatiseerde pijplijnen:

  • Handmatige Prompting (ChatGPT UI): De meest toegankelijke methode is om ChatGPT (of een andere LLM-interface) interactief te gebruiken. Kopieer bijvoorbeeld een batch niet-gecategoriseerde transacties en vraag het model om categorieën. Of plak een stuk van een bankafschrift en vraag om Beancount-conversie. Dit vereist geen codering – zoals blijkt uit veel gebruikers die eenvoudigweg hun probleem aan ChatGPT beschrijven en bruikbare resultaten krijgen. Het nadeel is dat het een beetje ad-hoc is en dat u ervoor moet zorgen dat het model elke keer goed wordt begeleid.

  • API's en Scripting: Voor een meer herhaalbare workflow kunt u een API (zoals OpenAI's API voor GPT-4) gebruiken om transacties te verwerken. Dit kan worden gedaan in een Python-script dat nieuwe transacties leest en de API aanroept om een categorie-suggestie of een volledige post te krijgen. U kunt dit integreren met uw importeerpijplijn. De configuratie van Beanborg staat bijvoorbeeld toe om ChatGPT-suggesties in te schakelen door use_llm: true in te stellen en een API-sleutel te verstrekken. Vervolgens krijgt elke geïmporteerde transactie een extra categorievoorspelling van GPT naast de op regels gebaseerde of ML-voorspelling, die u kunt beoordelen.

  • Plug-ins en Extensies: Naarmate LLM's aan populariteit winnen, kunnen we verwachten dat er plug-ins voor Beancount of de webinterface Fava zullen verschijnen. Deze zouden een "Ask AI"-knop aan transacties kunnen toevoegen. Hoewel er op het moment van schrijven geen officiële Beancount AI-plug-in is, groeit de interesse van de community. De maker van Beancount merkte zelfs op dat het idee van een LLM-promptbibliotheek voor Beancount leuk klonk, en communityleden experimenteren met "LLM accounting bots" en prompt engineering voor accountingtaken. Houd Beancount-forums en GitHub-issues in de gaten voor dergelijke integraties.

  • Open Source Libraries: Naast Beanborg omvatten andere gerelateerde tools smart_importer (een Beancount-plug-in waar u een Python-functie kunt schrijven of zelfs eenvoudige machine learning kunt gebruiken om transacties te classificeren bij het importeren). Hoewel het geen LLM is, past het goed bij LLM-gebruik: u kunt een LLM gebruiken om snel trainingsgegevens of regels te genereren en vervolgens smart_importer deze laten toepassen. Er is ook interesse in tools zoals Llamafile (een open-source lokale LLM voor datataken) die worden gebruikt om financiële gegevens te parseren en te converteren, en projecten zoals Actual of Paisa in de plain-text accounting-ruimte (hoewel deze meer gericht zijn op het bieden van een gebruikersinterface, niet AI). Het landschap evolueert snel en het is waarschijnlijk dat er meer onderzoeksprojecten en open-source code zullen verschijnen die specifiek gericht zijn op accountingautomatisering met LLM's. Een paper uit 2024 introduceerde bijvoorbeeld een methode om domeinspecifieke taalprompts (Beancount-syntaxregels) te gebruiken om de LLM-output voor accounting te evalueren en te verbeteren – dergelijk onderzoek zou kunnen leiden tot bibliotheken die een LLM helpen om accountingregels strikter na te leven.

  • Hybride AI-workflows: U kunt LLM's combineren met andere AI/automatisering. Gebruik bijvoorbeeld OCR om tekst van ontvangstbewijzen te halen en voer die vervolgens in een LLM in voor het genereren van posten. Of gebruik een ML-model voor anomaliedetectie om uitschieters te markeren en laat een LLM die uitschieters uitleggen. De stukken kunnen worden verbonden via scripts of automatiseringsplatforms (zoals het gebruik van Zapier of aangepaste code om nieuwe transacties naar een AI-service te sturen en de reactie op te slaan).

Houd bij de implementatie rekening met de kosten en snelheidslimieten als u een betaalde API gebruikt, vooral voor grote grootboeken (hoewel het categoriseren van een enkele transactie zeer weinig tokens kost). Neem ook foutafhandeling op – bijvoorbeeld, als de AI een ongeldige rekeningnaam of een verkeerd gevormde post retourneert, laat dan fallbacks of handmatige beoordelingsstappen hebben.

Bestaande Tools, Bibliotheken en Onderzoek

  • Beanborg – Zoals besproken, een geautomatiseerde transactie-importtool voor Beancount die regels, ML en ChatGPT integreert voor categorisatie. Het is open-source en kan dienen als een sjabloon voor het bouwen van uw eigen AI-geassisteerde importworkflows.

  • smart_importer – Een plug-in voor Beancount waarmee u Python-logica kunt schrijven om transacties automatisch te classificeren of zelfs te repareren tijdens het importeren. Sommige gebruikers hebben GPT gebruikt om deze regels te helpen opstellen of om gegevens vooraf te classificeren die smart_importer vervolgens gebruikt.

  • Beancount Prompt Engineering (Community) – Er zijn lopende community-onderzoeken in forums (Reddit's r/plaintextaccounting, Beancount Google Group) over het gebruik van LLM's. Een gebruiker deelde bijvoorbeeld prompttechnieken om GPT-4 Beancount-posten correct te laten uitvoeren door het expliciet te herinneren aan de indeling en door stapsgewijze redenering te gebruiken. Een andere open GitHub-gist biedt een recept voor het gebruik van GPT-4 of Claude om een Python-functie te genereren die transacties categoriseert op trefwoorden. Deze community-experimenten zijn waardevolle bronnen om promptstrategieën te leren.

  • Financieel LLM-onderzoek – Naast praktische scripts kijken onderzoekspapers (zoals "Evaluating Financial Literacy of LLMs through DSLs for Plain Text Accounting", FinNLP 2025) rechtstreeks naar de mogelijkheden van LLM's in double-entry accounting. Ze open-sourcen vaak hun prompts of datasets, die kunnen worden hergebruikt om modellen te finetunen of te instrueren voor een betere nauwkeurigheid. Er is ook werk aan het gebruik van LLM-embeddings voor anomaliedetectie in de financiële wereld en aan gespecialiseerde financieel gerichte LLM's die accountingvragen betrouwbaarder kunnen afhandelen. Hoewel dit geen kant-en-klare tools zijn, geven ze de richting aan van toekomstige verbeteringen.

  • ChatGPT-plug-ins en gerelateerde SaaS – Een paar diensten en plug-ins van derden zijn gericht op het integreren van ChatGPT met accountingsoftware (QuickBooks, Xero, etc.). Sommige plug-ins beweren bijvoorbeeld "visueel afwijkingen te markeren" in QuickBooks via ChatGPT. Voor Beancount (dat bestandsgebaseerd en open is) bestaan dergelijke plug-ins nog niet, maar een combinatie van een AI-vriendelijke interface zoals Fava met een LLM achter de schermen zou kunnen verschijnen. Open-source enthousiastelingen zouden een Fava-extensie kunnen maken die vragen naar een LLM stuurt (bijvoorbeeld een Fava-tabblad waar u vragen over uw grootboek in natuurlijke taal kunt stellen).

Samenvattend duwt een mix van community-scripts, speciale tools zoals Beanborg en geavanceerd onderzoek de grenzen van hoe LLM's kunnen helpen bij plain-text accounting. Zelfs als er geen perfecte kant-en-klare oplossing beschikbaar is voor elke taak, zijn de bouwstenen en voorbeelden er voor technische gebruikers om hun eigen AI-geaugmenteerde boekhoudsysteem samen te stellen.

Kansen en Beperkingen van LLM's in Beancount Workflows

LLM's bieden opwindende kansen voor Beancount-gebruikers:

  • Dramatische efficiëntiewinsten: Ze kunnen de handmatige inspanning voor het categoriseren en invoeren van transacties verminderen. Taken die vroeger vereisten dat aangepaste code of regels werden geschreven, kunnen vaak worden volbracht door de AI eenvoudigweg te vragen om het te doen. Dit verlaagt de drempel voor niet-programmeurs om hun boekhouding te automatiseren ("iedereen kan nu een ontwikkelaar zijn" met behulp van ChatGPT). Ondernemers kunnen zich meer richten op het beoordelen van financiële inzichten dan op gegevensinvoer.

  • Adaptief leren: In tegenstelling tot rigide regels kan een LLM generaliseren en edge cases afhandelen. Als u begint met besteden in een nieuwe categorie, kan de AI deze gracieus afhandelen door analogie met bekende categorieën. Bovendien kan het, indien correct geïntegreerd, leren van correcties – bijvoorbeeld, als u een suggestie overschrijft, kan die informatie worden gebruikt om toekomstige outputs te finetunen (handmatig of via een feedbackloop in tools zoals Beanborg). Dit is vergelijkbaar met hoe men een assistent in de loop van de tijd zou kunnen trainen.

  • Natuurlijke interactie: LLM's begrijpen alledaagse taal, waardoor conversationele interfaces voor accounting mogelijk zijn. Stel u voor dat u vraagt: "Wat waren mijn totale uitgaven aan koffie deze maand?" en een antwoord krijgt of zelfs een Beancount-query die voor u is samengesteld. Hoewel onze focus op automatisering ligt, is de querymogelijkheid een ander voordeel – ChatGPT kan uw vraag parseren en, indien toegang tot grootboekgegevens wordt gegeven, het resultaat formuleren. Dit zou Beancount-rapporten kunnen uitbreiden door ad-hoc Q&A in gewoon Engels mogelijk te maken.

Er zijn echter belangrijke beperkingen en zorgen om te overwegen:

  • Nauwkeurigheid en Betrouwbaarheid: LLM's klinken zelfverzekerd, maar ze kunnen onjuiste output produceren als ze de taak verkeerd begrijpen of de juiste beperkingen missen. In de accounting kan een enkele verkeerde classificatie of onevenwichtigheid rapporten verstoren. Het bovengenoemde onderzoek wees uit dat zonder zorgvuldige prompts zeer weinig LLM-gegenereerde transacties volledig correct waren. Zelfs als de syntax correct is, kan de gekozen categorie discutabel zijn. Daarom moeten AI-suggesties worden beoordeeld door een menselijke accountant, vooral in kritieke boeken. Het mantra moet zijn "vertrouwen, maar verifiëren". Gebruik altijd Beancount's validatie (bijvoorbeeld bean-check voor balans/syntaxfouten) op AI-gegenereerde posten.

  • Privacy en Beveiliging: Financiële gegevens zijn gevoelig. Veel LLM-oplossingen omvatten het verzenden van gegevens naar externe servers (OpenAI, enz.). Zoals een gebruiker opmerkte: "ChatGPT zou een geweldige rekeningclassificator kunnen zijn... Het enige probleem is privacy." Het delen van banktransacties met een AI-service van derden kan in strijd zijn met privacybeleid of -voorschriften, en er is een risico op datalekken. Er zijn zelfs gevallen van accidentele gegevensblootstelling via cloud-AI gemeld. Om dit te beperken, omvatten opties: het gebruik van geanonimiseerde gegevens (bijvoorbeeld, het vervangen van echte namen door plaatsaanduidingen bij het vragen van de AI), het lokaal uitvoeren van LLM's (er zijn open-source modellen die u kunt hosten die, hoewel niet zo krachtig als GPT-4, eenvoudigere taken kunnen afhandelen), of het gebruik van een hybride aanpak (doe de eerste verwerking lokaal, en stuur misschien alleen samenvattingen op hoog niveau naar een API). Zorg altijd voor naleving van alle vereisten voor gegevensbescherming die relevant zijn voor uw bedrijf.

  • Kosten en Prestaties: Het gebruik van een state-of-the-art model zoals GPT-4 via API kost geld per token. Voor incidentele prompts is dit verwaarloosbaar, maar als u duizenden transacties wilde classificeren, lopen de kosten op. Er is ook latentie – een grote prompt met veel transacties kan enige tijd duren om te verwerken. Fijn afgestemde kleinere modellen of open-source LLM's kunnen goedkoper/sneller zijn, maar vereisen mogelijk meer setup en bereiken mogelijk niet dezelfde nauwkeurigheid zonder finetuning op uw gegevens. Het is een afweging tussen gemak (cloud AI die "gewoon werkt") en controle (lokale AI die u beheert).

  • Overfitting of Inconsistentie: LLM's hebben geen inherent idee van uw specifieke rekeningstelsel, tenzij u die informatie in de prompt insluit. Ze kunnen rekeningnamen uitvinden die niet bestaan in uw grootboek (zoals het eerdere voorbeeld, het suggereren van een nieuwe subrekening voor "Laptop-Stand" terwijl u er misschien de voorkeur aan had gegeven onder een algemene Office Supplies-rekening). Om de suggesties van de AI in lijn te houden met uw vastgestelde rekeningen, kan het nodig zijn om een lijst met geldige rekeningen als context te verstrekken of om wat nabewerking te doen om de suggesties ervan toe te wijzen aan de dichtstbijzijnde bestaande rekening. Evenzo, als twee verschillende formuleringen worden gebruikt, kan de LLM inconsistente outputs geven. Het vaststellen van een gestandaardiseerde promptmethode en mogelijk een "AI-stijlgids" voor uw rekeningen kan helpen om consistentie te behouden.

  • Omvang van Begrip: Hoewel LLM's geweldig zijn met tekst, doen ze geen berekeningen met absolute precisie. Het vragen van een LLM om financiële ratio's te berekenen of optellingen te doen, kan bijvoorbeeld leiden tot fouten vanwege de manier waarop ze omgaan met cijfers (het zijn van nature geen rekenmachines). In de context van Beancount betekent dit dat ze misschien niet de beste zijn in taken zoals ervoor zorgen dat alle bedragen in een complexe multi-posting transactie correct optellen (hoewel ze dat meestal wel kunnen, eenvoudige rekenkunde is binnen bereik, maar fouten zijn mogelijk). Het is verstandig om Beancount zelf het zware rekenwerk te laten doen (of totalen te verifiëren)