メインコンテンツへスキップ
Beancount.io Logo

BeancountでLLMを使ってインポート、レビュー、クエリを行う

LLMで取引を分類し、提案されたBeancountエントリをレビューし、明細残高を検証し、帳簿をクラウドまたはローカルでクエリします。詳細は本文を参照。

AIを使用して勘定科目を提案し、取引を説明します。保存する前に、仕訳をソース文書と照合してください。このガイドでは、小さな架空の取引を分類、レビュー、検証し、クエリで確認する手順を説明します。

以下からホスト型またはローカルのワークフローを選択してください。実際の例ではローカルサンプルファイルを使用しているため、AIを自分の元帳に接続する前に各手順を再現できます。

ワークフローの選択

環境開始手順変更が元帳に反映される方法
Beancount.ioを使用スマートインポート(明細書ファイル用)、またはAIアシスタント(質問・編集用)インポート前に各行をレビューします。アシスタントの編集については、提案された差分をレビューし、承認または拒否を選択します。
外部AIクライアントを使用MCPセットアップガイドに従って、クライアントをホスト型元帳に接続します。ドライランで編集操作をプレビューします。別の書き込み呼び出しでコミットします。承認プロンプトはクライアントの設定によって異なります。
ローカルファイルを使用CSVからBeancountコンバーターまたはインポーターを使用し、AIにカテゴリを提案させます。提案された仕訳をレビューし、ファイルを検証し、承認された変更を保存します。

ホスト型アシスタントとMCPはBeancount.ioの統合機能です。オープンソースのBeancount会計エンジンをインストールしても、これらのサービスがローカルに追加されるわけではありません。

開始前の準備

ソースとなる明細書、それが属する勘定科目、許可される転記先勘定科目のリストを用意してください。結果と比較できるよう、元の明細書は保管しておいてください。

ローカルでのウォークスルーには、はじめにガイドに従ってBeancountをインストールしてください。最終クエリを実行するには、Beanqueryも必要です。この例では、全体が米ドルで、サンプルファイルに既存の取引がないことを前提としています。

実際のデータでは、どの情報をAIが受け取るかを決定してください。明細書を共有する前に、不要な識別情報を削除してください。ローカル元帳でも、エディタやMCPクライアントを通じてデータがクラウドモデルに送信される可能性があります。クライアントとモデルのデータポリシーを確認してください。コンピュータ上にファイルを置いておくだけでは、その内容がローカルに留まるとは限りません。

1. ソーストランザクションから開始

この架空の当座預金口座は、8月を1,000.00米ドルで開始します。明細書には3件の引き落としがあり、それらの引き落とし後の残高は805.10米ドルです。

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

ここでのマイナス金額は、当座預金口座からの送金(支出)を意味します。インポート前に、銀行の符号の慣習を確認してください。他のエクスポートやインポーターでは異なる慣習が使われる場合があります。

CSVコンバーターでは、これら4つの列をマッピングし、ソース勘定科目をAssets:Bank:Checking、通貨をUSDに設定します。このサンプルではすべての符号を反転をオフのままにしてください。ソースへの転記がマイナスであることを確認します。暫定的な転記先勘定科目は、レビューが完了するまでのプレースホルダーに過ぎません。

レシートやPDFから始める場合は、抽出された日付、金額、通貨、取引数を元の文書と比較してから、分類を開始してください。値が確定するまで、ソースの内容はそのまま保持します。

2. 明確な制約付きでカテゴリを依頼

許可される勘定科目を指定し、不確実性を許容するプロンプトを使用します:

このサンプル明細書の各行に対して、転記先勘定科目を提案してください。ソース勘定科目はAssets:Bank:Checkingです。使用できるのはExpenses:Office:SuppliesまたはExpenses:Business:Hostingのみです。元の日付、支払先、金額、提案された勘定科目、および簡単な理由を返してください。説明が不十分な場合は、NEEDS_REVIEWを返し、不足している情報を説明してください。勘定科目を独自に作成したり、金額を変更したり、元帳に書き込んだりしないでください。

3つのCSV行をプロンプトに含めます。有用な結果は以下のようになります。モデルの文言や提案は異なる場合があります:

日付支払先金額(USD)提案された勘定科目レビュー理由
2026-08-03Office Depot-45.00Expenses:Office:Supplies説明にプリンタ用紙とあります。
2026-08-04Cloud Hosting Inc-120.00Expenses:Business:Hosting説明にホスティングとあります。
2026-08-05Amazon-29.90NEEDS_REVIEW販売店名から購入内容を特定できません。

プロンプトは意図を表現するものです。ファイルへの書き込みが可能なツールに権限を強制するものではありません。実際の元帳にアクセスさせる前に、クライアントの承認制御を設定してください。

3. 不確実性の解決と仕訳のレビュー

Amazonの購入については、レシートを確認してください。この例では、レシートにはオフィス用USB-Cケーブルと記載されており、レビュー担当者はExpenses:Office:Suppliesを割り当てます。その証拠がない場合は、推測で勘定科目を割り当てるのではなく、その行を保留にします。

以下を含む完全な例をreview.beancountという新しいファイルに作成します。CSVには含まれていない勘定科目の宣言と期首残高が含まれています。コンバーターを使用した場合は、その取引をこのレビュー済みのエントリと比較してください。両方のコピーを同じ元帳に追加しないでください。

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

期首残高取引はこの空の練習用元帳に属しています。既存の元帳では、別の期首残高を追加する代わりに、確立された残高と勘定科目の宣言を使用します。

提案された変更を受け入れる前に、各取引をソースの行と比較してください。符号、通貨、勘定科目、および裏付けとなる文書を確認します。馴染みのある販売店名だけでは、購入の目的を確定できません。

4. 検証と照合

Beancountの検証ツールをローカルサンプルに対して実行します:

bea --file review.beancount check

完全な例はエラーなしで通過するはずです。残高アサーションは、8月6日の開始時点で、3件の先行する引き落とし後の当座預金の金額をチェックします。

明細書と結果を照合します:

  • 期首残高に加えて、3件の明細書取引がそれぞれ1回ずつ表示されています。
  • 引き落としの合計は194.90米ドルです。
  • 当座預金の残高は805.10米ドルです:期首の1,000.00米ドルから引き落としを差し引いた金額です。
  • オフィス用品の合計は74.90米ドル、ホスティングの合計は120.00米ドルです。

Amazonの取引を保留にした場合、当座預金の残高は835.00米ドルのままで、アサーションは29.90米ドル分失敗します。その差異を調査してください。チェックを通過させるためだけに、説明のつかない調整を追加しないでください。

bea checkは、構文エラー、勘定科目エラー、バランスエラー、残高アサーションエラーを検出します。レシートが本物であること、正しい費用勘定科目を選択したこと、明細書のすべての行が存在することを確認することはできません。誤った費用勘定科目に転記された取引でも、バランスは完全に合う可能性があります。

不一致が発生した場合

症状次の確認手順
残高が明細書と異なる期首残高、取引数、符号、日付、金額をソースと比較します。
2つのエントリが似ているソーストランザクションの識別子とレシートを比較します。同じ販売店名と金額は、2つの正当な購入を表す可能性があります。
モデルが勘定科目をでっち上げる既存の勘定科目を選択するか、勘定科目一覧を確認した上で意図的に新しい勘定科目を作成します。
抽出で行が欠落したり、小数点が変更されたりする元の文書に照らして抽出データを修正します。
検証は合格するがレポートがおかしい勘定科目の選択、レポート期間、個々の転記を検査します。

AIに差異の説明を求め、影響を受ける行を特定させてください。重複の疑いがある場合や金額を変更する場合は、証拠を確認してから行います。

5. レビュー結果の保存とクエリ

このワークフローを自分の明細書で繰り返す場合は、レビュー済みの取引のみを実際の元帳にマージし、結合ファイルを検証してください。架空のエントリはサンプルファイルに保持します。Gitを使用している場合は、通常のワークフローを通じて差分を検査し、コミットします。後で照合できるように、ソース明細書を保管しておいてください。スクリプト可能なワークフローガイドでは、繰り返し可能なローカル自動化について説明しています。

Beancountクエリ言語を使用して、サンプルの合計を確認できます。Beanqueryがインストールされている場合、実行します:

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"

2つの費用合計は、オフィス用品が74.90米ドル、ホスティングが120.00米ドルになるはずです。クエリの日付範囲と勘定科目フィルタ、およびその出力を検査します。

サンプルを含む元帳に接続されたAIクライアントがある場合は、次のように尋ねることができます:

2026年8月の費用を勘定科目別にグループ化してサンプル元帳をクエリし、クエリとその結果を表示してください。ファイルを変更しないでください。

その回答を同じ合計と比較します。流暢な回答は、その数値が元帳に遡れる場合にのみ有用です。

Beancount.ioでのレビュープロセス

明細書ファイルの場合、元帳のサイドバーからインポート → スマートインポートを開きます。抽出された行をレビューし、ソース勘定科目通貨を選択し、AIフィルを使用して転記先勘定科目の提案を取得します。インポートを送信する前にカテゴリを修正します。インポートボタンには取引数が表示されます。実際の明細書を処理する前に、サンプル元帳で結果のジャーナルと残高を確認します。引き落としがソース勘定科目を減少させることを確認してください。上記のCSVはローカルコンバーター用に準備されており、インポーターによって符号の解釈が異なる場合があります。

ホスト型アシスタントの場合、元帳内のBeancount.ioに質問を開きます。既存のエントリに関する質問から始めます。ファイルの編集を提案された場合は、承認する前に差分をレビューします。受け入れられたインポートとアシスタントの編集はGitに記録されるため、変更を検査または元に戻すことができます。

MCPの場合は、上記でリンクされたクライアント固有のセットアップ手順に従い、意図した元帳を承認します。編集を許可する前に、dry_run: trueを指定してeditLedgerFilesを要求します。提案された内容と操作の概要を検査し、レビュー後にのみ別の書き込み呼び出しを許可します。ドライランのプレビューは、会計上の正確性を確立するものではなく、後でクライアントが書き込み前に許可を求めることを保証するものでもありません。

自動化しながらレビュープロセスを維持

小さなバッチから開始し、どの提案を変更したかを記録します。繰り返される確認済みのマッピングを明示的なインポートルールに変換するか、レビュー済みの例をコンテキストとして提供します。モデルが会話内の修正から永続的に学習するとは想定しないでください。

抽出チェック、カテゴリレビュー、明細書の照合を分離します。それぞれが異なる種類のエラーを検出します。定期的なインポートでは、同じソースを2回インポートしても静かに重複取引が発生しないことも確認してください。

研究は、有効な構文と正しい会計の区別を裏付けています。Figueroa Rosero氏らの2025年1月の研究は、財務比率シナリオと取引生成における構造化プロンプトを使用して、小規模なオープンウェイトモデルを評価しました。その結果は、それらのモデルとタスクを説明するものであり、今日のアシスタントやインポートワークフローの精度率を示すものではありません。チェック済みのソーストランザクションとそれらが要求する修正を使用して、独自のワークフローを判断してください。

繰り返し可能なローカルワークフローのためのツール

繰り返す必要があるプロセスの部分に適したツールを選択してください:

  • Beangulpはインポーターフレームワークを提供します。これは、Beancount 3の古いbeancount.ingestフレームワークを置き換えます。
  • smart_importerは、インポーターに機械学習ベースの提案を追加する別途インストールされるパッケージです。組み込みのLLM機能ではありません。
  • Beanborgは、ルールベースの分類、機械学習ベースの提案、およびオプションのChatGPT予測を文書化しています。採用する前に、現在のセットアップと互換性を確認してください。

より広いコンテキストについては、簿記自動化ガイド月次会計ワークフローガイドを参照してください。

より大きな例を探索

以下の公開元帳は、3件の取引の演習とは別のものです。AIを自分の元帳に接続する前に、勘定科目、取引、レポートがどのように連携するかを探索するために使用してください。

新しいタブで 公開サンプル元帳(AIレビュー演習とは別) を開く

出典: https://beancount.io/ja/docs/Solutions/using-llms-to-automate-and-enhance-bookkeeping-with-beancount