본문으로 건너뛰기

LLM을 활용하여 Beancount로 부기 자동화 및 개선

Beancount는 일반 텍스트 복식 부기 시스템으로, 최근 ChatGPT와 같은 대규모 언어 모델 (LLM) 덕분에 접근성이 향상되었습니다. 사업주, 스타트업 창업자, 엔지니어, 회계사를 포함한 기술 사용자는 LLM을 활용하여 Beancount의 텍스트 기반 원장의 유연성과 투명성을 유지하면서 지루한 부기 작업을 자동화할 수 있습니다. 이 보고서는 LLM이 거래 분류, 이상 징후 탐지, 분개 항목에 대한 스마트 제안, 자연어에서 항목 생성, 명세서 대사를 포함하여 Beancount 워크플로를 간소화할 수 있는 실용적인 방법을 살펴봅니다. 구현 팁, 기존 도구, 기회 및 제한 사항에 대한 논의와 함께 이러한 기능을 설명하기 위한 예제 프롬프트와 출력이 제공됩니다.

LLM을 통한 자동 거래 분류

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

부기의 가장 시간이 많이 소요되는 측면 중 하나는 거래를 설명자(예: 수취인, 메모 또는 금액)를 기준으로 올바른 계정에 할당하는 거래 분류입니다. LLM은 언어 이해 및 광범위한 지식을 활용하여 각 거래에 대한 적절한 비용 또는 수입 계정을 제안함으로써 이를 크게 가속화할 수 있습니다.

예를 들어 Beancount 원장에 분류되지 않은 항목이 있는 경우:

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

LLM에 대한 프롬프트는 거래 균형을 맞추기 위한 적절한 비용 계정을 요청할 수 있습니다. 실제 사례에서 LLM은 노트북 스탠드의 아마존 구매를 Expenses:Office-Supplies:Laptop-Stand로 분류했습니다. 마찬가지로 와이퍼 블레이드 구매를 Expenses:Car:Maintenance로, 주방 가전 제품을 Expenses:Kitchen:Appliances로 지정하여 품목 설명에서 지능적으로 범주를 추론했습니다. 이러한 예는 LLM이 컨텍스트 (수취인 및 설명)를 사용하여 적절한 Beancount 계정을 선택하는 방법을 보여줍니다.

Beanborg와 같은 최신 도구는 이 기능을 통합합니다. Beanborg는 거래 데이터를 올바른 비용 계정에 자동으로 매칭할 수 있는 오픈 소스 Beancount 임포터입니다. 기본적으로 규칙 기반 엔진을 사용하지만, 머신러닝 및 ChatGPT도 분류 제안에 지원합니다. Beanborg를 사용하면 은행 CSV를 가져와 대부분의 항목을 자동 분류할 수 있습니다(예: "Fresh Food Inc."를 포함하는 수취인은 규칙 또는 LLM 지원에 따라 Expenses:Groceries로 분류될 수 있습니다).

분류에 LLM을 사용하는 방법: GPT-4와 같은 모델에 거래 설명 배치를 제공하고 가능성이 높은 계정을 지정하도록 요청할 수 있습니다. 한 가지 제안된 워크플로는 다음과 같습니다. GPT를 사용하여 소량의 비용을 분류하고, 수동으로 실수를 수정하고, Beancount의 내장 임포터 플러그인 (예: smart_importer)을 사용하여 향후 거래에 대한 이러한 예에서 학습합니다. 이 하이브리드 접근 방식은 LLM의 광범위한 지식을 활용하여 새로운 또는 드문 거래에 사용하고 (_PILOT Parallel Calligraphy Pens_가 미술 용품 비용 계정에 속해야 한다고 추론하는 경우), 일관되게 해당 분류를 적용합니다.

예제 프롬프트 및 응답: 다음 표는 사용자가 LLM과 상호 작용하여 거래를 분류하는 방법을 보여줍니다.

사용자 프롬프트 (거래 세부 정보)LLM 제안 계정/항목
분류: "Starbucks - Latte $5.00 on 2025-04-01"제안: ExpenseExpenses:Food:Coffee (커피 구매) 예상
분류: "Amazon.com - Bosch Rear Wiper Blade $11.60"제안: Expenses:Car:Maintenance (자동차 부품 교체)
분류: "Salary payment from ACME Corp $5000"제안: Income:Salary (급여 수입)
완료 항목: 2025-07-10 * "Office Depot" "printer ink" 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은 이를 이상 징후로 강조 표시할 수 있습니다 (“이 연료 비용은 일반적인 패턴보다 10배 더 큽니다”). LLM은 규칙 기반 시스템에서 간과할 수 있는 미묘한 편차까지 감지하여 이상 징후를 식별합니다. 하드 임계값이 아닌 컨텍스트 (예: 타이밍, 범주, 빈도)를 고려합니다.

중복 예: 거의 동일한 두 개의 원장 라인 (가까운 날짜에 동일한 수취인 및 금액)이 주어진 경우 LLM은 _“ACME Corp에 대한 $100의 2025-08-01 및 2025-08-02 거래는 중복인 것으로 보입니다.”_라고 응답할 수 있습니다. 이는 여러 소스에서 데이터가 입력되었거나 은행에서 거래를 이중으로 게시한 경우에 특히 유용합니다.

LLM 기반 이상 징후 탐지는 여전히 새로운 영역이지만, 자연어로 플래그된 _이유_를 설명하여 기존 방법을 보완합니다. 이는 인간 검토자가 문제를 신속하게 이해하고 해결하는 데 도움이 될 수 있습니다 (예: 중복을 확인하고 하나의 항목을 삭제하거나 이상값 비용을 조사).

저널 완성을 위한 스마트 제안

LLM은 Beancount에서 분개 항목을 작성하거나 수정할 때 지능형 도우미 역할을 할 수 있습니다. 거래를 분류할 뿐만 아니라 부분 항목을 완료하거나 불균형을 수정하는 방법도 제안합니다. 이는 원장에 대한 스마트 자동 완성 기능이 있는 것과 같습니다.

계정 및 금액 제안: 수취인과 금액으로 새 거래를 입력했지만 어떤 계정에 속하는지 결정하지 않았다고 가정합니다. LLM은 설명에 따라 계정을 제안할 수 있습니다 (분류에서 다루었듯이). 또한 상호 보완적인 분개를 제공하여 항목 균형을 맞출 수 있습니다. 예를 들어 사용자는 다음과 같이 쓸 수 있습니다.

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

LLM에 _“이 거래의 다른 면은 무엇입니까?”_라고 물으면 클라우드 호스팅 요금이 사업 비용임을 인식하여 항목 균형을 맞추기 위해 Expenses:Business:Hosting 120.00 USD를 제안할 수 있습니다.

Beancount Google 그룹에서 한 사용자는 Amazon 구매 항목의 한쪽 배치를 ChatGPT에 공급하고 **“각 거래의 균형을 맞추기 위해 분류된 비용 분개를 추가”**하도록 요청하여 이를 입증했습니다. GPT는 각 누락된 분개를 그럴듯한 비용 계정으로 채웠습니다 (때로는 "Laptop Stand"에 대한 계정을 만드는 것처럼 너무 세분화됨). 이는 LLM이 불완전한 데이터가 주어지면 완전한 분개 항목을 작성할 수 있는 방법을 보여줍니다.

내레이션 개선: LLM은 항목의 내레이션 또는 설명을 개선하는 데 도움이 될 수도 있습니다. 설명이 너무 애매한 경우 (예: 은행 명세서의 내부 코드) LLM에 원장에 대해 더 명확하게 다시 작성하도록 요청할 수 있습니다. LLM은 자연어를 잘 처리하므로 명확성을 위해 "PUR CHK 1234 XYZ CORP"를 "Check #1234 to XYZ Corp"로 변환할 수 있습니다.

안내 및 학습: 시간이 지남에 따라 LLM은 거래를 입력할 때 편집 워크플로 (편집기 플러그인 또는 Fava 확장을 통해 가능)에 통합되어 가능한 완성을 제안할 수 있습니다. 이는 코드 편집기가 AI를 사용하여 코드 완성을 제안하는 방법과 유사합니다. 일반 텍스트 회계에서 LLM은 기존 계정 이름과 과거 항목에서 가져와 다음 항목을 완료하는 방법을 권장할 수 있습니다. 예를 들어 수취인에 "Staples"가 나타날 때마다 Office Supplies를 자주 기록하는 경우 모델은 이 패턴을 학습할 수 있습니다. 일부 사용자는 몇 가지 예 후에 ChatGPT의 제안을 구체화하고 smart_importer와 같은 플러그인을 사용하여 향후 거래에 대해 일반화할 수 있다고 보고합니다.

요약하면 LLM은 Beancount의 복식 규칙을 준수하는 완료 및 수정을 제공하여 항목에 대한 “두 번째 쌍의 눈”을 제공합니다.

비정형 입력에서 Beancount 항목 생성

LLM의 가장 강력한 용도 중 하나는 비정형 금융 정보 (원시 텍스트, 영수증 또는 자연어 설명)를 구조화된 Beancount 항목으로 변환하는 것입니다. 이를 통해 사용자는 자유 형식 데이터를 말하거나 붙여넣고 유효한 원장 항목을 반환할 수 있습니다.

자연어에서 항목으로: 다음과 같은 문장으로 LLM에 프롬프트를 표시할 수 있습니다.

2025년 7월 10일에 내 당좌 예금 계좌로 Office Depot에서 사무용품 (프린터 잉크)을 $45에 샀습니다.

유능한 LLM은 이를 해석하고 다음과 같은 내용을 생성합니다.

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

날짜, 수취인, 내레이션, 금액을 식별하고 적절한 계정을 추측했습니다 (은행 자산을 차변하고 사무용품 비용을 대변). 이는 기본적으로 일반 영어 비용 보고서를 적절하게 형식이 지정된 Beancount 분개 항목으로 바꿉니다. 최근 연구에서는 복식 부기에 대한 LLM의 이해를 평가하기 위해 Beancount를 목표 형식으로 사용했지만 결과는 혼합되었습니다 (LLM은 구문을 정확하게 맞추기 위해 신중한 프롬프트가 필요한 경우가 많습니다). 그러나 잘 만들어진 프롬프트 또는 소수의 예제를 통해 GPT-4와 같은 모델은 일반적으로 간단한 시나리오에 대한 올바른 항목을 생성할 수 있습니다.

OCR에서 원장으로: 비전 또는 OCR 기능이 있는 LLM (이미지 입력이 있는 GPT-4 또는 특수 도구와 같은)은 한 단계 더 나아가 영수증 이미지 또는 은행 명세서 PDF를 가져와 거래를 추출할 수 있습니다. 예를 들어 ChatGPT에 영수증 사진을 보여주고 Beancount 항목을 요청할 수 있습니다. 모델은 날짜, 총액, 공급업체 및 아마도 세금을 구문 분석한 다음 해당 세부 정보로 항목을 출력합니다. 한 가이드에서는 ChatGPT가 송장 또는 영수증의 데이터를 _“회계에 적합한 깨끗하고 형식이 지정된 테이블”_로 변환할 수 있다고 언급합니다. 그런 다음 Beancount 계정에 매핑할 수 있습니다. 마찬가지로 CSV 또는 Excel 내보내기를 LLM에 제공하여 Beancount 거래를 출력하도록 지시할 수 있습니다. 실제로 사용자는 GPT에 _“CSV를 구문 분석하고 Beancount 항목을 출력하는 Python 스크립트를 작성”_하도록 요청하여 가져오기를 자동화했습니다.

다중 거래 처리: LLM은 배치 입력을 처리할 수도 있습니다. 원시 거래 목록 (날짜, 설명, 금액)을 붙여넣고 해당 Beancount 원장 라인을 생성하도록 모델에 요청할 수 있습니다. 커뮤니티의 예제 프롬프트는 GPT-4에 _“CSV 콘텐츠를 회계 원칙에 따라 Beancount 형식으로 변환”_하도록 자세한 지침을 사용합니다. 출력은 모든 거래를 다루는 완전한 .beancount 파일입니다. 이 접근 방식은 기본적으로 비 프로그래머가 자연어로 AI에 지시하여 사용자 정의 가져오기 스크립트가 수행할 작업을 달성할 수 있도록 합니다.

LLM은 텍스트를 구문 분석하고 생성하는 데 인상적이지만 유효성 검사가 중요하다는 점을 명심하십시오. 비정형 입력에서 생성된 항목을 항상 검토하십시오. 날짜, 금액 및 차변/대변 균형 (Beancount의 컴파일러는 불균형 오류를 잡음)을 확인하십시오. 한 연구에서 강조했듯이 신중한 지침이 없으면 LLM은 시간의 작은 부분에서만 완전히 올바른 복식 거래를 생성할 수 있습니다. 프롬프트에 템플릿 예제를 제공하고 Beancount 구문을 모델에 명시적으로 상기시키면 정확도가 크게 향상됩니다.

LLM 지원을 통한 명세서 대사

은행 대사 – 원장을 외부 명세서 (은행 또는 신용 카드)와 매칭하는 프로세스 –는 지루할 수 있습니다. LLM은 지능형 비교 엔진 역할을 하여 Beancount 기록과 명세서 간의 불일치를 식별하는 데 도움이 될 수 있습니다.

누락되거나 일치하지 않는 항목 식별: 간단한 사용 사례는 LLM에 두 개의 목록을 제공하는 것입니다. 하나는 기간에 대한 원장의 거래 목록이고 다른 하나는 은행 명세서의 목록입니다. 그런 다음 일치하지 않는 항목을 찾도록 요청합니다. 모델은 줄 단위로 읽고 비교할 수 있으므로 한 목록에 있고 다른 목록에는 없는 항목을 강조 표시합니다. 예를 들어 다음 프롬프트를 표시할 수 있습니다. “다음은 3월 원장과 은행의 3월 명세서입니다. 명세서에는 있지만 원장에는 없는 거래 또는 그 반대는 무엇입니까?”. 부기에서 ChatGPT를 사용하는 방법에 대한 가이드에서는 다음과 같이 언급합니다. “거래 목록을 붙여넣으면 ChatGPT가 누락되거나 일치하지 않는 항목을 강조 표시합니다.”. 이는 AI가 다음과 같은 내용을 출력할 수 있음을 의미합니다. “03-15에 $120.00 USD의 지불은 은행 명세서에 나타나지만 원장에는 없습니다 (가능한 누락된 항목).”

차이점 설명: LLM은 일반 언어로 차이점을 설명할 수도 있습니다. 원장과 명세서 간에 거래 금액 또는 날짜가 다른 경우 (오타 또는 타이밍 차이로 인해) LLM은 _“거래 X는 원장에 105이고은행명세서에105이고 은행 명세서에 150입니다. 금액 불일치가 있는 동일한 항목을 나타낼 수 있습니다.”_라고 플래그할 수 있습니다. 이 자연스러운 설명은 수동으로 숫자 줄을 스캔하는 대신 문제를 해결하기 위해 직접 안내할 수 있습니다.

대사 워크플로 자동화: 실제로 ChatGPT의 고급 데이터 분석 (이전의 코드 인터프리터) 기능을 사용할 수 있습니다. 명세서 CSV와 원장 내보내기를 업로드하고 프로그래밍 방식으로 상호 검사하도록 합니다. 대사에 초점을 맞춘 새로운 플러그인과 도구도 있습니다. 예를 들어 일부에서는 ChatGPT가 대사 보고서를 준비하고 장부 균형을 맞추기 위해 조정 분개 항목을 제안하는 것을 입증했습니다. 이것은 초기 단계의 실험이지만 대사의 많은 고된 작업 (비교, 차이점 강조 표시)이 AI로 오프로드되고 인간 부기 담당자가 조정 사항을 검토하고 승인하기만 하는 미래를 가리킵니다.

특히 민감한 금융 데이터로 대사에 LLM을 사용하는 경우 통제 및 보안을 유지하는 것이 중요합니다. 클라우드 기반 모델을 사용하는 경우 계좌 번호 또는 개인 식별자가 공유되지 않도록 하거나 익명화된 데이터를 사용하십시오. 대안은 데이터를 환경에서 벗어나지 않도록 로컬 LLM (아래에서 설명)을 실행하는 것입니다.

구현 방법: API, 워크플로 및 도구

Beancount 기반 워크플로에 LLM을 실제로 통합하는 방법은 무엇입니까? ChatGPT와의 간단한 복사-붙여넣기 상호 작용에서 사용자 지정 자동화 파이프라인 구축에 이르기까지 여러 가지 접근 방식이 있습니다.

  • 수동 프롬프트 (ChatGPT UI): 가장 접근하기 쉬운 방법은 ChatGPT (또는 다른 LLM 인터페이스)를 대화식으로 사용하는 것입니다. 예를 들어 분류되지 않은 거래 배치를 복사하고 모델에 범주를 프롬프트합니다. 또는 은행 명세서 덩어리를 붙여넣고 Beancount 변환을 요청합니다. 이를 위해서는 코딩이 필요하지 않습니다. 많은 사용자가 ChatGPT에 문제를 설명하고 사용 가능한 결과를 얻는 것으로 입증되었습니다. 단점은 약간 임시적이며 모델이 매번 잘 안내되도록 해야 한다는 것입니다.

  • API 및 스크립팅: 보다 반복 가능한 워크플로의 경우 API (예: GPT-4의 OpenAI API)를 사용하여 거래를 처리할 수 있습니다. 이는 새 거래를 읽고 API를 호출하여 범주 제안 또는 전체 항목을 가져오는 Python 스크립트에서 수행할 수 있습니다. 이를 가져오기 파이프라인과 통합할 수 있습니다. 예를 들어 Beanborg의 구성에서는 use_llm: true를 설정하고 API 키를 제공하여 ChatGPT 제안을 활성화할 수 있습니다. 그러면 가져온 각 거래는 규칙 기반 또는 ML 예측과 함께 GPT에서 추가 범주 예측을 받게 되며 검토할 수 있습니다.

  • 플러그인 및 확장: LLM이 인기를 얻으면서 Beancount 또는 웹 인터페이스 Fava에 대한 플러그인이 나타날 것으로 예상할 수 있습니다. 이는 거래에 "AI에 문의" 버튼을 추가할 수 있습니다. 이 글을 쓰는 시점에는 공식 Beancount AI 플러그인이 없지만 커뮤니티 관심이 커지고 있습니다. 실제로 Beancount의 제작자는 Beancount에 대한 LLM 프롬프트 라이브러리 아이디어가 재미있게 들렸고 커뮤니티 구성원은 회계 작업을 위한 "LLM 회계 봇" 및 프롬프트 엔지니어링을 실험하고 있다고 언급했습니다. 이러한 통합에 대해서는 Beancount 포럼 및 GitHub 문제를 주시하십시오.

  • 오픈 소스 라이브러리: Beanborg 외에도 smart_importer (가져오기 시 거래를 분류하기 위해 Python 함수를 작성하거나 간단한 머신러닝을 사용할 수 있는 Beancount 플러그인)를 포함한 기타 관련 도구가 있습니다. LLM은 아니지만 LLM 사용과 잘 어울립니다. LLM을 사용하여 교육 데이터 또는 규칙을 빠르게 생성한 다음 smart_importer가 적용하도록 할 수 있습니다. 또한 금융 데이터를 구문 분석하고 변환하는 데 사용되는 Llamafile (데이터 작업을 위한 오픈 소스 로컬 LLM)과 일반 텍스트 회계 공간에서 Actual 또는 Paisa와 같은 프로젝트에 대한 관심도 있습니다 (그러나 이는 AI가 아닌 사용자 인터페이스 제공에 더 중점을 둡니다). 환경은 빠르게 진화하고 있으며 LLM으로 회계 자동화를 특별히 대상으로 하는 더 많은 연구 프로젝트와 오픈 소스 코드가 나타날 가능성이 높습니다. 예를 들어 2024년 논문에서는 회계에 대한 LLM 출력을 평가하고 개선하기 위해 도메인별 언어 프롬프트 (Beancount 구문 규칙)를 사용하는 방법을 소개했습니다. 이러한 연구는 LLM이 회계 규칙을 더 엄격하게 준수하도록 돕는 라이브러리로 이어질 수 있습니다.

  • 하이브리드 AI 워크플로: LLM을 다른 AI/자동화와 결합할 수 있습니다. 예를 들어 OCR을 사용하여 영수증에서 텍스트를 가져온 다음 항목 생성을 위해 LLM에 공급합니다. 또는 이상 징후 탐지 ML 모델을 사용하여 이상값을 플래그한 다음 LLM에 해당 이상값을 설명하도록 합니다. 스크립트 또는 자동화 플랫폼 (예: Zapier를 사용하거나 사용자 지정 코드를 사용하여 새 거래를 AI 서비스로 보내고 응답을 저장)을 통해 조각을 연결할 수 있습니다.

구현 시 유료 API를 사용하는 경우 특히 큰 원장의 경우 비용 및 속도 제한에 유의하십시오 (단일 거래를 분류하는 데는 토큰이 매우 적게 듭니다). 또한 오류 처리도 통합합니다 (예: AI가 잘못된 계정 이름 또는 잘못된 형식의 항목을 반환하는 경우 대체 또는 수동 검토 단계를 수행하십시오).

기존 도구, 라이브러리 및 연구

  • Beanborg – 앞서 논의한 바와 같이 분류를 위해 규칙, ML 및 ChatGPT를 통합하는 Beancount용 자동 거래 임포터입니다. 오픈 소스이며 자체 AI 지원 가져오기 워크플로를 구축하기 위한 템플릿 역할을 할 수 있습니다.

  • smart_importer – 가져오는 동안 거래를 자동으로 분류하거나 수정하기 위해 Python 로직을 작성할 수 있는 Beancount용 플러그인입니다. 일부 사용자는 GPT를 사용하여 이러한 규칙을 작성하거나 smart_importer가 사용하는 데이터를 미리 분류하는 데 도움을 받았습니다.

  • Beancount 프롬프트 엔지니어링 (커뮤니티) – LLM 사용에 대한 포럼 (Reddit의 r/plaintextaccounting, Beancount Google Group)에서 진행 중인 커뮤니티 탐색이 있습니다. 예를 들어 한 사용자는 GPT-4가 형식에 대해 명시적으로 상기시키고 단계별 추론을 사용하여 Beancount 항목을 올바르게 출력하도록 하기 위해 프롬프트 기술을 공유했습니다. 또 다른 오픈 GitHub gist는 GPT-4 또는 Claude를 사용하여 키워드로 거래를 분류하는 Python 함수를 생성하는 레시피를 제공합니다. 이러한 커뮤니티 실험은 프롬프트 전략을 배우는 데 유용한 리소스입니다.

  • 금융 LLM 연구 – 실제 스크립트 외에도 연구 논문 (“일반 텍스트 회계용 DSL을 통해 LLM의 금융 이해력 평가”, FinNLP 2025)은 복식 부기에서 LLM의 기능을 직접 살펴보고 있습니다. 그들은 종종 더 나은 정확도를 위해 모델을 미세 조정하거나 지시하는 데 재사용할 수 있는 프롬프트 또는 데이터 세트를 오픈 소스합니다. 또한 금융에서 LLM 임베딩을 사용하여 이상 징후를 탐지하고 회계 쿼리를 보다 안정적으로 처리할 수 있는 특수 금융 중심 LLM에 대한 작업도 있습니다. 이것은 플러그 앤 플레이 도구가 아니지만 미래 개선의 방향을 나타냅니다.

  • ChatGPT 플러그인 및 관련 SaaS – 몇몇 타사 서비스 및 플러그인은 ChatGPT를 회계 소프트웨어 (QuickBooks, Xero 등)와 통합하는 것을 목표로 합니다. 예를 들어 일부 플러그인은 ChatGPT를 통해 QuickBooks에서 “시각적으로 불일치 플래그 지정”한다고 주장합니다. 파일 기반 및 개방형인 Beancount의 경우 이러한 플러그인은 아직 존재하지 않지만 Fava와 같은 AI 친화적인 인터페이스와 백그라운드에서 LLM의 조합이 나타날 수 있습니다. 오픈 소스 애호가는 LLM에 쿼리를 보내는 Fava 확장을 만들 수 있습니다 (예: 일반 언어로 원장에 대한 질문을 할 수 있는 Fava 탭).

요약하면 커뮤니티 스크립트, Beanborg와 같은 전용 도구 및 최첨단 연구의 조합이 LLM이 일반 텍스트 회계에서 지원할 수 있는 한계를 넓히고 있습니다. 모든 작업에 완벽한 기성품 솔루션을 사용할 수 없더라도 기술 사용자가 자체 AI 보강 부기 시스템을 조립하기 위한 빌딩 블록 및 예제가 있습니다.

Beancount 워크플로에서 LLM의 기회와 한계

LLM은 Beancount 사용자에게 흥미로운 기회를 제공합니다.

  • 극적인 효율성 향상: 거래 분류 및 입력에 대한 수동 노력을 줄일 수 있습니다. 사용자 지정 코드 또는 규칙을 작성해야 했던 작업은 AI에 _요청_하기만 하면 되는 경우가 많습니다. 이를 통해 비 프로그래머가 부기를 자동화하는 장벽이 낮아집니다 (“이제 모든 사람이 ChatGPT를 사용하여 개발자가 될 수 있습니다”). 사업주는 데이터 입력보다 재무 통찰력 검토에 더 집중할 수 있습니다.

  • 적응형 학습: 엄격한 규칙과 달리 LLM은 일반화하고 엣지 케이스를 처리할 수 있습니다. 새 범주에서 지출을 시작하면 AI는 알려진 범주에 대한 비유를 통해 이를 우아하게 처리할 수 있습니다. 또한 올바르게 통합되면 _수정에서 학습_할 수 있습니다. 예를 들어 제안을 무시하면 해당 정보를 사용하여 향후 출력을 미세 조정할 수 있습니다 (수동으로 또는 Beanborg와 같은 도구의 피드백 루프를 통해). 이는 시간이 지남에 따라 도우미를 교육하는 것과 유사합니다.

  • 자연스러운 상호 작용: LLM은 일상적인 언어를 이해하므로 회계에 대한 대화형 인터페이스를 가질 수 있습니다. “이번 달에 커피에 총 지출한 금액은 얼마입니까?”라고 묻고 답변을 얻거나 Beancount 쿼리를 구성하여 받는 것을 상상해보십시오. 자동화에 초점을 맞추었지만 쿼리 기능은 또 다른 이점입니다. ChatGPT는 질문을 구문 분석하고 원장 데이터에 대한 액세스 권한이 주어지면 결과를 공식화할 수 있습니다. 이는 일반 영어로 임시 Q&A를 허용하여 Beancount 보고서를 보강할 수 있습니다.

그러나 고려해야 할 중요한 제한 사항 및 우려 사항이 있습니다.

  • 정확성 및 신뢰성: LLM은 자신감 있게 들리지만 작업을 잘못 이해하거나 적절한 제약 조건이 없으면 잘못된 출력을 생성할 수 있습니다. 회계에서 단일 오분류 또는 불균형으로 인해 보고서가 망가질 수 있습니다. 앞서 언급한 연구에서는 신중한 프롬프트 없이는 LLM이 생성한 거래가 거의 완전히 정확하지 않다는 것을 발견했습니다. 구문이 올바르더라도 선택한 범주는 논쟁의 여지가 있을 수 있습니다. 따라서 AI 제안은 특히 중요한 장부에서 인간 회계사가 검토해야 합니다. 만트라는 “신뢰하되 확인”해야 합니다. AI가 생성한 항목에 대해서는 항상 Beancount의 유효성 검사 (예: 균형/구문 오류에 대한 bean-check)를 사용하십시오.

  • 개인 정보 보호 및 보안: 금융 데이터는 민감합니다. 많은 LLM 솔루션에는 데이터를 외부 서버 (OpenAI 등)로 보내는 것이 포함됩니다. 한 사용자가 지적했듯이 “ChatGPT는 훌륭한 계정 분류기가 될 수 있습니다... 유일한 문제는 개인 정보 보호입니다.” 타사 AI 서비스와 은행 거래를 공유하는 것은 개인 정보 보호 정책 또는 규정을 위반할 수 있으며 데이터 유출 위험이 있습니다. 실제로 클라우드 AI를 통한 우발적인 데이터 노출 사례가 보고되었습니다. 이를 완화하기 위해 옵션에는 익명화된 데이터 사용 (예: AI에 질문할 때 실제 이름을 자리 표시자로 바꾸기), LLM을 로컬에서 실행 (GPT-4만큼 강력하지는 않지만 더 간단한 작업을 처리할 수 있는 오픈 소스 모델이 있음) 또는 하이브리드 접근 방식 사용 (초기 처리를 로컬에서 수행하고 아마도 고급 요약만 API로 보냅니다)이 포함됩니다. 항상 비즈니스와 관련된 모든 데이터 보호 요구 사항을 준수하는지 확인하십시오.

  • 비용 및 성능: API를 통해 GPT-4와 같은 최첨단 모델을 사용하는 데는 토큰당 비용이 듭니다. 가끔 프롬프트의 경우 이는 무시할 수 있지만 수천 건의 거래를 분류하려는 경우 비용이 추가됩니다. 지연 시간도 있습니다. 많은 거래가 있는 큰 프롬프트를 처리하는 데 시간이 걸릴 수 있습니다. 미세 조정된 더 작은 모델 또는 오픈 소스 LLM은 더 저렴하고 빠를 수 있지만 더 많은 설정이 필요할 수 있으며 데이터에 대한 미세 조정 없이는 동일한 정확도에 도달하지 못할 수 있습니다. 편의성 (“바로 작동하는” 클라우드 AI)과 제어 (관리하는 로컬 AI) 간의 절충입니다.

  • 과적합 또는 불일치: LLM은 프롬프트에 해당 정보를 포함하지 않는 한 특정 계정 차트에 대한 고유한 개념이 없습니다. 원장에 존재하지 않는 계정 이름을 발명할 수 있습니다 (이전 예제와 같이 일반 사무용품 계정에서 선호했을 수 있는 경우 "Laptop-Stand"에 대한 새 하위 계정을 제안). AI 제안을 설정된 계정과 일치시키려면 유효한 계정 목록을 컨텍스트로 제공하거나 제안을 가장 가까운 기존 계정에 매핑하기 위해 일부 사후 처리를 수행해야 할 수 있습니다. 마찬가지로 두 개의 다른 어구가 사용되면 LLM이 일관성 없는 출력을 제공할 수 있습니다. 표준화된 프롬프트 방법과 계정에 대한 일부 “AI 스타일 가이드”를 설정하면 일관성을 유지하는 데 도움이 될 수 있습니다.

  • 이해 범위: LLM은 텍스트에 능숙하지만 절대적인 정확도로 계산을 수행하지 않습니다. 예를 들어 LLM에 재무 비율을 계산하거나 합계를 수행하도록 요청하면 숫자를 처리하는 방식 때문에 실수가 발생할 수 있습니다 (본질적으로 계산기가 아님). Beancount의 컨텍스트에서 이는 복잡한 다중 분개 거래에서 모든 금액이 올바르게 합산되는지 확인하는 것과 같은 작업에 가장 적합하지 않을 수 있음을 의미합니다 (일반적으로 가능하지만 간단한 산술 연산은 범위 내에 있지만 오류가 발생할 수 있음). AI의 산술 연산에 의존하기보다는 Beancount 자체가 수학이 많은 작업을 수행 (또는 합계를 확인)하도록 하는 것이 좋습니다.

이러한 제한 사항에도 불구하고 궤적은 회계에서 더욱 정교하고 신뢰할 수 있는 AI 도우미를 향하고 있습니다. 핵심은 LLM을 자율 회계사가 아닌 도우미로 사용하는 것입니다. 그들은 예상되는 범주화를 제안하고 (인지 에너지를 절약) 항목 또는 설명을 작성하는 것과 같은 힘든 작업을 줄이는 데 탁월합니다. 귀하는 장부에 들어가는 내용을 검토하고 마무리하는 의사 결정권자로 남아 있습니다. 한 회계사가 말했듯이 “ChatGPT는 완벽하지 않지만... 프로그래밍을 배울 필요 없이 스크립트를 작성하는 것이 이렇게 쉬운 적은 없었습니다” – 동일한 감정이 부기 작업에 적용됩니다.

결론

대규모 언어 모델은 Beancount로 일반 텍스트 회계를 수행하는 사람들에게 귀중한 동맹임이 입증되고 있습니다. 분류 자동화, 이상 징후 발견, 스마트 완료 제공, 자연어를 항목으로 변환 및 대사 용이화를 통해 원시 금융 데이터와 깔끔하게 유지된 원장 간의 격차를 해소합니다. Beancount 워크플로에 LLM을 구현하면 상당한 효율성 향상을 가져오고 AI가 비하인드 스토리에서 일부 스크립팅 및 형식 지정 복잡성을 처리하여 Beancount를 덜 기술적인 사용자에게 개방할 수도 있습니다.

Beancount 사용자의 기술 청중의 경우 지금이러한 AI 도구를 실험하기에 좋은 시기입니다. ChatGPT 또는 로컬 모델을 사용하여 분류되지 않은 거래의 일주일을 분류하거나 아직 작성하지 않은 새로운 종류의 명세서를 구문 분석해보십시오. 영감을 얻기 위해 Beanborg와 같은 오픈 소스 프로젝트를 활용하고 결과를 커뮤니티와 공유하십시오. 장부를 정확하고 감사 가능하게 유지하는 Beancount의 견고성과 수동 노동을 크게 줄일 수 있는 LLM의 힘을 결합하면 효율적이고 유연한 부기 워크플로를 달성할 수 있습니다.

궁극적으로 LLM은 회계사의 감독이나 사업주의 판단에 대한 필요성을 대체하지 않지만 이러한 역할을 _보강_할 수 있습니다. 그들은 초 단위로 힘든 작업을 처리하고 각 상호 작용에서 학습할 수 있는 지칠 줄 모르는 도우미 역할을 합니다. 기술이 성숙해짐에 따라 – 현재 정확성 및 개인 정보 보호의 제한 사항을 해결 – AI가 회계사의 툴킷의 표준 부분이 될 것으로 예상할 수 있습니다. 현재 신중하게 사용하면 Beancount 사용자는 이미 LLM을 활용하여 노력과 더 많은 통찰력을 통해 장부를 최신 상태로 유지할 수 있습니다. 요컨대 로봇이 반복적인 부기를 수행하도록 하고 인간은 이해와 의사 결정에 집중할 수 있도록 하십시오.

출처:

  • Franz A. (2023). _AI를 사용하여 바쁜 사람들을