Aller au contenu principal

Utilisez les LLM avec Beancount pour importer

Catégorisez les transactions avec un LLM, révisez les écritures Beancount proposées, validez les soldes des relevés et interrogez vos livres — cloud ou local.

Utilisez l'IA pour suggérer des comptes et expliquer les transactions, puis vérifiez les écritures par rapport à vos documents sources avant de les enregistrer. Ce guide suit un petit relevé fictif à travers la catégorisation, l'examen, la validation et une interrogation que vous pouvez vérifier.

Choisissez un flux de travail hébergé ou local ci-dessous. L'exemple pratique utilise un fichier d'échantillon local afin que vous puissiez reproduire chaque vérification avant de connecter l'IA à vos propres livres.

Choisissez votre flux de travail

Votre configurationCommencez iciComment les modifications atteignent votre journal
Vous utilisez Beancount.ioUtilisez Smart Import pour les fichiers de relevés, ou Assistant IA pour les questions et les modifications proposées.Examinez les lignes avant de soumettre une importation. Pour les modifications de l'Assistant, examinez le diff proposé et choisissez Approuver ou Refuser.
Vous utilisez un client IA externeSuivez le guide de configuration Beancount MCP pour connecter votre client à un journal hébergé.Un essai à blanc prévisualise une opération de modification. Un appel d'écriture séparé la valide. Les invites d'approbation dépendent des paramètres de votre client.
Vous conservez des fichiers locauxUtilisez le convertisseur CSV vers Beancount ou un importateur, puis demandez à un outil IA de suggérer des catégories.Vous examinez les écritures proposées, validez le fichier et enregistrez les modifications acceptées.

L'Assistant hébergé et MCP sont des intégrations Beancount.io. Installer le moteur comptable open-source Beancount n'ajoute pas ces services à un journal local.

Avant de commencer

Ayez votre relevé source, le compte auquel il appartient et une liste des comptes de destination autorisés. Conservez le relevé original afin de pouvoir le comparer au résultat.

Pour l'atelier local, installez Beancount en suivant le guide de démarrage. Vous aurez également besoin de Beanquery pour exécuter la requête finale depuis un terminal. L'exemple suppose des USD tout au long et aucune transaction existante dans le fichier d'échantillon.

Pour des données réelles, décidez quelles informations votre outil IA peut recevoir. Supprimez les identifiants inutiles avant de partager un relevé. Un journal local peut toujours envoyer des données à un modèle cloud via un éditeur ou un client MCP. Vérifiez les politiques de données du client et du fournisseur de modèle ; conserver un fichier sur votre ordinateur ne garantit pas en soi que son contenu reste local.

1. Commencez par les transactions sources

Notre compte courant fictif commence août avec 1 000,00 USD. Son relevé contient trois retraits et se clôture à 805,10 USD après ces retraits :

date,payee,description,amount
2026-08-03,Office Depot,Printer paper,-45.00
2026-08-04,Cloud Hosting Inc,Monthly hosting,-120.00
2026-08-05,Amazon,Online purchase,-29.90

Les montants négatifs ici signifient que l'argent quitte le compte courant. Confirmez la convention de signe de votre banque avant d'importer ; d'autres exports et importateurs peuvent utiliser une convention différente.

Dans le convertisseur CSV, mappez ces quatre colonnes et définissez le compte source sur Assets:Bank:Checking avec la devise USD. Laissez Inverser chaque signe désactivé pour cet échantillon. Vérifiez que les écritures sources sont négatives. Un compte de destination provisoire n'est qu'un espace réservé jusqu'à ce que vous ayez examiné les catégories.

Si vous commencez avec une image de reçu ou un PDF, comparez les dates, montants, devises et le nombre de transactions extraits avec le document original avant de catégoriser quoi que ce soit. Conservez les valeurs sources intactes tout en décidant des comptes.

2. Demandez des catégories avec des limites explicites

Utilisez une invite qui nomme les comptes autorisés et laisse de la place à l'incertitude :

Suggérez un compte de destination pour chaque ligne de ce relevé d'échantillon. Le compte source est Assets:Bank:Checking. Utilisez uniquement Expenses:Office:Supplies ou Expenses:Business:Hosting. Renvoyez la date d'origine, le bénéficiaire, le montant, le compte suggéré et une brève raison. Si la description est insuffisante, renvoyez NEEDS_REVIEW et expliquez quelle information manque. N'inventez pas de comptes, ne modifiez pas les montants et n'écrivez pas dans le journal.

Fournissez les trois lignes CSV avec l'invite. Un résultat utile ressemblerait à ceci ; le libellé et les suggestions du modèle peuvent varier :

DateBénéficiaireMontant (USD)Compte suggéréRaison de l'examen
2026-08-03Office Depot-45,00Expenses:Office:SuppliesLa description identifie du papier imprimante.
2026-08-04Cloud Hosting Inc-120,00Expenses:Business:HostingLa description identifie l'hébergement.
2026-08-05Amazon-29,90NEEDS_REVIEWLe nom du marchand n'identifie pas ce qui a été acheté.

L'invite exprime votre intention. Elle n'applique pas de permissions sur un outil capable d'écrire des fichiers. Configurez les contrôles d'approbation du client avant de lui donner accès à un vrai journal.

3. Résolvez l'incertitude et examinez les écritures

Vérifiez le reçu de l'achat Amazon. Pour cet exemple, il identifie un câble USB-C pour le bureau, et l'examinateur attribue Expenses:Office:Supplies. Sans cette preuve, laissez la ligne en attente plutôt que d'accepter une catégorie devinée.

Créez un nouveau fichier nommé review.beancount avec l'exemple complet suivant. Il inclut les déclarations de comptes et le solde d'ouverture que le CSV ne contient pas. Si vous avez utilisé le convertisseur, comparez ses transactions avec ces écritures examinées ; n'ajoutez pas les deux copies au même journal.

option "title" "AI bookkeeping review example"
option "operating_currency" "USD"
 
2026-08-01 open Assets:Bank:Checking USD
2026-08-01 open Equity:Opening-Balances USD
2026-08-01 open Expenses:Office:Supplies USD
2026-08-01 open Expenses:Business:Hosting USD
 
2026-08-01 * "Opening balance"
  Assets:Bank:Checking       1000.00 USD
  Equity:Opening-Balances   -1000.00 USD
 
2026-08-03 * "Office Depot" "Printer paper"
  Assets:Bank:Checking        -45.00 USD
  Expenses:Office:Supplies     45.00 USD
 
2026-08-04 * "Cloud Hosting Inc" "Monthly hosting"
  Assets:Bank:Checking          -120.00 USD
  Expenses:Business:Hosting      120.00 USD
 
2026-08-05 * "Amazon" "Online purchase; receipt: office USB-C cable"
  Assets:Bank:Checking        -29.90 USD
  Expenses:Office:Supplies     29.90 USD
 
2026-08-06 balance Assets:Bank:Checking 805.10 USD

La transaction de solde d'ouverture appartient à ce journal d'entraînement vide. Dans un journal existant, utilisez son solde établi et ses déclarations de comptes au lieu d'ajouter un autre solde d'ouverture.

Avant d'accepter une modification proposée, comparez chaque transaction avec sa ligne source. Confirmez les signes, la devise, les comptes et le reçu justificatif. Un nom de marchand familier seul n'établit pas le but d'un achat.

4. Validez et rapprochez

Exécutez le validateur de Beancount sur l'échantillon local :

bea --file review.beancount check

L'exemple complet devrait passer sans erreur. Son assertion de solde vérifie le montant dans le compte courant au début du 6 août, après les trois retraits précédents.

Confirmez le résultat par rapport au relevé :

  • Les trois transactions du relevé apparaissent une fois chacune, en plus du solde d'ouverture.
  • Les retraits totalisent 194,90 USD.
  • Le compte courant détient 805,10 USD : les 1 000,00 USD d'ouverture moins ces retraits.
  • Les fournitures de bureau totalisent 74,90 USD et l'hébergement totalise 120,00 USD.

Si vous laissez la transaction Amazon en attente, le compte courant reste à 835,00 USD et l'assertion échoue de 29,90 USD. Enquêtez sur cette différence ; n'ajoutez pas un ajustement inexpliqué simplement pour faire passer la vérification.

bea check détecte les erreurs de syntaxe, de comptes, d'équilibrage et d'assertion de solde. Il ne peut pas établir qu'un reçu est authentique, que vous avez sélectionné la bonne catégorie de dépense ou que chaque ligne du relevé est présente. Une transaction imputée au mauvais compte de dépense peut toujours s'équilibrer parfaitement.

Quand quelque chose ne correspond pas

SymptômeProchaine vérification
Le solde diffère du relevéComparez le solde d'ouverture, le nombre de transactions, les signes, les dates et les montants avec la source.
Deux écritures se ressemblentComparez les identifiants de transaction source et les reçus. Le même marchand et le même montant peuvent représenter deux achats légitimes.
Le modèle invente un compteChoisissez un compte existant ou créez-en délibérément un après avoir examiné votre plan comptable.
L'extraction omet une ligne ou modifie une décimaleCorrigez les données extraites par rapport au document original avant de les catégoriser.
Le validateur passe mais un rapport semble erronéInspectez les choix de comptes, la période de reporting et les écritures individuelles.

Demandez à l'IA d'expliquer les écarts et de pointer vers les lignes concernées. Confirmez les preuves avant de supprimer un doublon suspecté ou de modifier un montant.

5. Enregistrez le résultat examiné et interrogez-le

Lorsque vous répétez ce flux de travail avec votre propre relevé, fusionnez uniquement vos transactions examinées dans votre vrai journal, puis validez le fichier combiné. Conservez les écritures fictives dans le fichier d'échantillon. Si vous utilisez Git, inspectez le diff et validez via votre flux de travail habituel. Conservez le relevé source disponible pour un rapprochement ultérieur. Le guide des flux de travail scriptables couvre l'automatisation locale répétable.

Vous pouvez vérifier les totaux de l'échantillon avec Beancount Query Language. Avec Beanquery installé, exécutez :

bea --file review.beancount query "SELECT account, sum(position) WHERE account ~ '^Expenses:' AND date >= 2026-08-01 AND date < 2026-09-01 GROUP BY account"

Les deux totaux de dépenses devraient être 74,90 USD pour les fournitures de bureau et 120,00 USD pour l'hébergement. Inspectez la plage de dates et le filtre de comptes de la requête ainsi que sa sortie.

Avec un client IA connecté à un journal contenant l'échantillon, vous pouvez demander :

Interrogez le journal d'échantillon pour les dépenses d'août 2026 groupées par compte. Montrez la requête et ses résultats. Ne modifiez aucun fichier.

Comparez sa réponse avec les mêmes totaux. Une réponse fluide n'est utile que lorsque ses chiffres peuvent être tracés jusqu'au journal.

Appliquez le processus d'examen dans Beancount.io

Pour les fichiers de relevés, ouvrez Importation → Smart Import dans la barre latérale de votre journal. Examinez les lignes extraites, choisissez Compte source et Devise, et utilisez Remplissage IA pour les suggestions de comptes de destination. Corrigez les catégories avant de soumettre l'Importation, dont le bouton inclut le nombre de transactions. Vérifiez le journal et les soldes résultants dans un journal d'échantillon avant de traiter un vrai relevé. Vérifiez que les retraits réduisent le compte source ; le CSV ci-dessus est préparé pour le convertisseur local, et les importateurs peuvent interpréter les signes différemment.

Pour l'Assistant hébergé, ouvrez Demander à Beancount.io dans votre journal. Commencez par une question sur les écritures existantes. Lorsqu'il propose une modification de fichier, examinez le diff avant de l'approuver. Les importations acceptées et les modifications de l'Assistant sont enregistrées dans Git afin que vous puissiez inspecter ou annuler les modifications.

Pour MCP, suivez les instructions de configuration spécifiques au client liées ci-dessus et autorisez le journal prévu. Demandez editLedgerFiles avec dry_run: true avant de permettre une modification. Inspectez le contenu proposé et le résumé de l'opération, puis autorisez un appel d'écriture séparé uniquement après examen. L'aperçu de l'essai à blanc n'établit pas la correction comptable ni ne garantit que votre client demandera la permission avant une écriture ultérieure.

Conservez le processus d'examen pendant que vous automatisez

Commencez par un petit lot et notez les suggestions que vous modifiez. Transformez les correspondances répétées et confirmées en règles d'importation explicites ou fournissez des exemples examinés comme contexte. Ne supposez pas qu'un modèle apprend en permanence d'une correction dans une conversation.

Gardez les vérifications d'extraction, l'examen des catégories et le rapprochement des relevés séparés. Chacun détecte un type d'erreur différent. Pour les importations récurrentes, vérifiez également que l'importation de la même source deux fois ne duplique pas silencieusement les transactions.

La recherche soutient cette distinction entre syntaxe valide et comptabilité correcte. L'étude de Figueroa Rosero et ses collègues de janvier 2025 a évalué de petits modèles open-weight sur des scénarios de ratios financiers et la génération de transactions à l'aide d'invites structurées. Ses résultats décrivent ces modèles et tâches, plutôt qu'un taux de précision pour les assistants actuels ou votre flux d'importation. Jugez votre propre flux de travail en utilisant des transactions sources vérifiées et les corrections qu'elles nécessitent.

Outils pour un flux de travail local répétable

Choisissez un outil pour la partie du processus que vous devez répéter :

  • Beangulp fournit un cadre d'importateur. Il remplace l'ancien cadre beancount.ingest dans Beancount 3.
  • smart_importer est un paquet installé séparément qui ajoute des suggestions d'apprentissage automatique aux importateurs. Ce n'est pas une fonctionnalité LLM intégrée.
  • Beanborg documente la catégorisation basée sur des règles, les suggestions d'apprentissage automatique et les prédictions ChatGPT optionnelles. Vérifiez sa configuration actuelle et sa compatibilité avant de l'adopter.

Pour un contexte plus large, consultez le guide d'automatisation de la tenue de livres et le guide de flux de travail comptable mensuel.

Explorez un exemple plus complet

Le journal public ci-dessous est distinct de l'exercice à trois transactions. Utilisez-le pour explorer comment les comptes, les transactions et les rapports s'assemblent avant de connecter l'IA à vos propres livres.

Ouvrir Journal d'exemple public, distinct de l'exercice d'examen avec IA dans un nouvel onglet

Source : https://beancount.io/fr/docs/Solutions/using-llms-to-automate-and-enhance-bookkeeping-with-beancount