پرش به محتوای اصلی

استفاده از مدل‌های زبانی بزرگ برای خودکارسازی و بهبود دفترداری با Beancount

Beancount یک سیستم حسابداری دوطرفه با متن ساده است که اخیراً به لطف مدل‌های زبانی بزرگ (LLM) مانند ChatGPT در دسترس‌تر شده است. کاربران فنی - از جمله صاحبان مشاغل، بنیانگذاران استارتاپ، مهندسان و حسابداران - می‌توانند از 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." ممکن است تحت Expenses:Groceries توسط قوانین یا کمک LLM طبقه‌بندی شود).

نحوه استفاده از LLM برای طبقه‌بندی: می‌توانید دسته‌ای از توضیحات تراکنش را به مدلی مانند GPT-4 وارد کنید و از آن بخواهید که حساب‌های احتمالی را اختصاص دهد. یک گردش‌کار پیشنهادی این است: از GPT برای طبقه‌بندی یک دسته کوچک از هزینه‌ها استفاده کنید، هر گونه اشتباه را به صورت دستی تصحیح کنید، سپس از پلاگین‌های واردکننده داخلی Beancount (مانند smart_importer) برای یادگیری از آن مثال‌ها برای تراکنش‌های آینده استفاده کنید. این رویکرد ترکیبی از دانش گسترده LLM برای تراکنش‌های جدید یا غیر معمول (به عنوان مثال، استنباط اینکه PILOT Parallel Calligraphy Pens باید تحت یک حساب هزینه لوازم هنری قرار گیرد) استفاده می‌کند و سپس این طبقه‌بندی‌ها را به طور مداوم در آینده اعمال می‌کند.

نمونه دستورالعمل و پاسخ: جدول زیر نشان می‌دهد که چگونه یک کاربر ممکن است برای طبقه‌بندی تراکنش‌ها با یک LLM تعامل داشته باشد:

دستورالعمل کاربر (جزئیات تراکنش)حساب/ورودی پیشنهادی LLM
طبقه‌بندی کن: "Starbucks - Latte $5.00 on 2025-04-01"پیشنهاد: هزینه – به احتمال زیاد Expenses: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 از دانش عمومی (استارباکس قهوه است، قطعات خودرو آمازون مربوط به تعمیر و نگهداری خودرو است، حقوق ACME درآمد است) برای پیشنهاد حساب Beancount صحیح استفاده می‌کند. حتی می‌تواند یک ورودی ژورنال را با افزودن ثبت متعادل کننده گمشده تکمیل کند (در مورد Office Depot، پیشنهاد یک حساب هزینه لوازم اداری برای جبران پرداخت). با گذشت زمان، چنین طبقه‌بندی مبتنی بر هوش مصنوعی می‌تواند در زمان صرفه‌جویی کند و تلاش دستی در طبقه‌بندی تراکنش‌ها را کاهش دهد.

تشخیص ناهنجاری و شناسایی تکراری

فراتر از طبقه‌بندی، LLMها می‌توانند با تجزیه و تحلیل توضیحات تراکنش و الگوها به زبان انگلیسی ساده، به نشانه‌گذاری ناهنجاری‌ها در دفتر کل - مانند ورودی‌های تکراری یا هزینه‌های غیرمعمول - کمک کنند. نرم‌افزار سنتی ممکن است تکراری‌های دقیق را از طریق هش‌ها یا قوانین سختگیرانه تشخیص دهد (به عنوان مثال، Beanborg از یک هش از داده‌های CSV برای جلوگیری از وارد کردن یک تراکنش دو بار استفاده می‌کند). با این حال، یک LLM می‌تواند یک بررسی آگاهانه‌تر از زمینه ارائه دهد.

به عنوان مثال، می‌توانید یک LLM را با لیستی از تراکنش‌های اخیر ترغیب کنید و بپرسید: "آیا به نظر می‌رسد هیچ‌یک از این موارد تکراری یا پرت غیرمعمول باشند؟" از آنجایی که LLMها در تجزیه و تحلیل زمینه‌ای برتری دارند، ممکن است متوجه شوند که دو ورودی دارای تاریخ و مبلغ یکسانی هستند، یا توضیحات بسیار مشابهی دارند، و آنها را به عنوان تکراری‌های احتمالی نشانه‌گذاری کنند. آنها همچنین می‌توانند الگوهای هزینه‌کرد عادی را تشخیص دهند و انحرافات را تشخیص دهند. همانطور که یک منبع اشاره می‌کند، "در زمینه یک جریان تراکنش مالی، یک LLM می‌تواند عادات هزینه‌کرد غیرعادی را با یادگیری آنچه که معمول است و شناسایی آنچه که مطابقت ندارد، تشخیص دهد."

مثال مبلغ غیرمعمول: اگر معمولاً 30 تا 50 دلار برای سوخت خرج می‌کنید، اما ناگهان یک تراکنش سوخت 300 دلار است، یک LLM می‌تواند آن را به عنوان یک ناهنجاری برجسته کند ("این هزینه سوخت ده برابر بیشتر از الگوی معمول شما است"). LLMها ناهنجاری‌ها را با تشخیص حتی انحرافات ظریف که سیستم‌های مبتنی بر قاعده ممکن است نادیده بگیرند، شناسایی می‌کنند. آنها زمینه را در نظر می‌گیرند - به عنوان مثال، زمان‌بندی، دسته، فراوانی - نه فقط آستانه‌های سخت.

مثال تکراری: با توجه به دو خط دفتر کل که تقریباً یکسان هستند (پرداخت‌کننده و مبلغ یکسان در تاریخ‌های نزدیک)، یک LLM می‌تواند پاسخ دهد: "به نظر می‌رسد تراکنش‌های 2025-08-01 و 2025-08-02 به مبلغ 100 دلار به ACME Corp تکراری هستند." این امر به ویژه در صورتی مفید است که داده‌ها از چندین منبع وارد شده باشند یا اگر بانکی تراکنش را دو بار ارسال کرده باشد.

در حالی که تشخیص ناهنجاری مبتنی بر 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 برای متعادل کردن ورودی، و تشخیص دهد که هزینه میزبانی ابری یک هزینه تجاری است.

در گروه Google Beancount، یک کاربر این را با وارد کردن یک دسته از ورودی‌های خرید آمازون یک طرفه به ChatGPT و ترغیب آن برای "افزودن ثبت‌های هزینه طبقه‌بندی شده برای متعادل کردن هر تراکنش" نشان داد. GPT هر ثبت گمشده را با یک حساب هزینه معقول پر کرد (البته گاهی اوقات بیش از حد جزئی، مانند ایجاد یک حساب فقط برای "Laptop Stand"). این نشان می‌دهد که چگونه LLMها می‌توانند ورودی‌های ژورنال کامل را هنگام دریافت داده‌های ناقص پیش‌نویس کنند.

بهبود روایت: LLMها حتی می‌توانند به بهبود روایت یا توضیحات در ورودی‌ها کمک کنند. اگر یک توضیح خیلی مبهم است (به عنوان مثال، یک کد داخلی از یک صورت‌حساب بانکی)، می‌توانید از LLM بخواهید آن را به طور واضح‌تری برای دفتر کل بازنویسی کند. از آنجایی که LLMها به خوبی زبان طبیعی را مدیریت می‌کنند، ممکن است "PUR CHK 1234 XYZ CORP" را برای وضوح به "Check #1234 to XYZ Corp" تبدیل کنند.

راهنمایی و یادگیری: با گذشت زمان، یک LLM می‌تواند در گردش کار ویرایش شما یکپارچه شود (احتمالاً از طریق یک پلاگین ویرایشگر یا افزونه Fava) تا هنگام تایپ یک تراکنش، تکمیل‌های احتمالی را پیشنهاد دهد. این شبیه به این است که چگونه ویرایشگرهای کد از هوش مصنوعی برای پیشنهاد تکمیل‌های کد استفاده می‌کنند. در حسابداری با متن ساده، LLM می‌تواند از نام حساب‌های موجود و ورودی‌های گذشته شما برای توصیه نحوه نهایی کردن ورودی بعدی استفاده کند. به عنوان مثال، اگر اغلب هنگام ظاهر شدن "Staples" در پرداخت‌کننده، Office Supplies را ثبت می‌کنید، مدل می‌تواند این الگو را یاد بگیرد. برخی از کاربران گزارش می‌دهند که پیشنهادات ChatGPT را می‌توان پس از چند مثال اصلاح کرد و سپس با استفاده از یک پلاگین مانند smart_importer برای تراکنش‌های آینده تعمیم داد.

به طور خلاصه، LLMها "یک جفت چشم دوم" در ورودی‌های شما ارائه می‌دهند و تکمیل‌ها و اصلاحاتی را ارائه می‌دهند که از قوانین حسابداری دوطرفه Beancount پیروی می‌کنند.

تولید ورودی‌های Beancount از ورودی‌های بدون ساختار

شاید یکی از قدرتمندترین کاربردهای LLMها، ترجمه اطلاعات مالی بدون ساختار - متن خام، رسید یا توضیحات زبان طبیعی - به ورودی‌های Beancount ساختاریافته باشد. این به کاربران اجازه می‌دهد تا داده‌های آزاد را بیان یا جای‌گذاری کنند و ورودی‌های معتبر دفتر کل را در ازای آن دریافت کنند.

از زبان طبیعی به ورودی: می‌توانید یک LLM را با جمله‌ای مانند این ترغیب کنید:

"من در تاریخ 10 جولای 2025 لوازم اداری (جوهر چاپگر) را از Office Depot به مبلغ 45 دلار خریداری کردم و با حساب جاری خود پرداخت کردم."

یک LLM توانا این را تفسیر می‌کند و چیزی شبیه به این تولید می‌کند:

2025-07-10 * "Office Depot" "printer ink"
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 را می‌توان با دستورالعمل‌هایی برای خروجی تراکنش‌های Beancount به یک LLM وارد کرد - در واقع، کاربران GPT را ترغیب کرده‌اند تا "یک اسکریپت پایتون برای تجزیه یک CSV و خروجی ورودی‌های Beancount بنویسد" به عنوان راهی برای خودکارسازی واردات.

پردازش چند تراکنشی: LLMها می‌توانند ورودی‌های دسته‌ای را نیز مدیریت کنند. می‌توانید لیستی از تراکنش‌های خام (تاریخ‌ها، توضیحات، مبالغ) را جای‌گذاری کنید و از مدل بخواهید که خطوط دفتر کل Beancount مربوطه را تولید کند. یک نمونه دستورالعمل از انجمن از یک دستورالعمل دقیق برای GPT-4 برای "تبدیل محتوای CSV به فرمت Beancount" ضمن پیروی از اصول حسابداری استفاده می‌کند. خروجی یک فایل .beancount کامل است که تمام تراکنش‌ها را پوشش می‌دهد. این رویکرد اساساً به غیربرنامه‌نویسان اجازه می‌دهد تا به آنچه که اسکریپت‌های واردات سفارشی انجام می‌دهند، دست یابند - با دستور دادن به هوش مصنوعی به زبان طبیعی.

به خاطر داشته باشید که در حالی که LLMها در تجزیه و تولید متن چشمگیر هستند، اعتبارسنجی بسیار مهم است. همیشه ورودی‌های تولید شده از ورودی‌های بدون ساختار را بررسی کنید. تاریخ‌ها، مبالغ و اینکه بدهی‌ها/اعتبارات متعادل هستند را بررسی کنید (کامپایلر Beancount خطاهای عدم تعادل را تشخیص می‌دهد). همانطور که یک مطالعه برجسته کرده است، بدون راهنمایی دقیق، یک LLM ممکن است فقط بخش کوچکی از زمان را صرف تولید تراکنش‌های دوطرفه کاملاً صحیح کند. ارائه نمونه‌های الگو در دستورالعمل خود و یادآوری صریح نحو Beancount به مدل، دقت را تا حد زیادی بهبود می‌بخشد.

تطبیق صورت‌حساب‌ها با کمک LLM

تطبیق بانکی - فرآیند مطابقت دادن دفتر کل خود با یک صورت‌حساب خارجی (بانک یا کارت اعتباری) - می‌تواند خسته‌کننده باشد. LLMها می‌توانند به عنوان موتورهای مقایسه هوشمند عمل کنند و به شناسایی اختلافات بین سوابق Beancount و صورت‌حساب شما کمک کنند.

شناسایی ورودی‌های گمشده یا نامناسب: یک مورد استفاده ساده این است که دو لیست به LLM بدهید: یکی از تراکنش‌های دفتر کل خود برای یک دوره، و دیگری از صورت‌حساب بانکی، سپس از آن بخواهید که ورودی‌هایی را که مطابقت ندارند پیدا کند. از آنجایی که مدل می‌تواند خط به خط بخواند و مقایسه کند، مواردی را که در یک لیست وجود دارند و در لیست دیگر وجود ندارند، برجسته می‌کند. به عنوان مثال، می‌توانید این دستورالعمل را وارد کنید: "این دفتر کل من برای ماه مارس و صورت‌حساب مارس بانک من است. کدام تراکنش‌ها در صورت‌حساب وجود دارند اما در دفتر کل من وجود ندارند، یا برعکس؟". یک راهنما در مورد استفاده از ChatGPT در دفترداری اشاره می‌کند: "لیستی از تراکنش‌ها را جای‌گذاری کنید، و ChatGPT ورودی‌های گمشده یا نامناسب را برجسته می‌کند.". این بدان معناست که هوش مصنوعی ممکن است چیزی شبیه به این خروجی دهد: "پرداخت 120.00 دلار در تاریخ 03-15 در صورت‌حساب بانکی ظاهر می‌شود اما در دفتر کل وجود ندارد (ورودی گمشده احتمالی)."

توضیح تفاوت‌ها: LLMها همچنین می‌توانند تفاوت‌ها را به زبان ساده توصیف کنند. اگر یک تراکنش دارای مبلغ یا تاریخ متفاوتی بین دفتر کل و صورت‌حساب باشد (شاید به دلیل اشتباه تایپی یا اختلاف زمانی)، LLM می‌تواند نشانه‌گذاری کند: "تراکنش X دارای 105 دلار در دفتر کل در مقابل 150 دلار در صورت‌حساب بانکی است - اینها ممکن است به همان مورد با یک اختلاف مبلغ اشاره داشته باشند." این توضیح طبیعی می‌تواند شما را مستقیماً به سمت مشکلی که باید برطرف شود هدایت کند، به جای اینکه به صورت دستی خطوط اعداد را اسکن کنید.

خودکارسازی گردش‌کارهای تطبیق: در عمل، ممکن است از ویژگی Advanced Data Analysis (که قبلاً Code Interpreter نامیده می‌شد) ChatGPT استفاده کنید: CSV صورت‌حساب خود و شاید خروجی دفتر کل خود را بارگذاری کنید و اجازه دهید به صورت برنامه‌ریزی‌شده آنها را متقابلاً بررسی کند. همچنین پلاگین‌ها و ابزارهای نوظهوری وجود دارند که بر تطبیق تمرکز دارند. به عنوان مثال، برخی نشان داده‌اند که ChatGPT گزارش‌های تطبیق را تهیه می‌کند و حتی ثبت‌های ژورنال تعدیل را برای متعادل کردن دفاتر پیشنهاد می‌دهد. در حالی که اینها آزمایش‌های اولیه هستند، به آینده‌ای اشاره می‌کنند که در آن بیشتر کارهای سخت در تطبیق (مقایسه‌ها، برجسته‌سازی تفاوت‌ها) به هوش مصنوعی واگذار می‌شود، و حسابدار انسانی فقط تعدیلات را بررسی و تأیید می‌کند.

هنگام استفاده از LLMها برای تطبیق، به ویژه با داده‌های مالی حساس، مهم است که کنترل و امنیت را حفظ کنید. اگر از مدل‌های مبتنی بر ابر استفاده می‌کنید، اطمینان حاصل کنید که هیچ شماره حساب یا شناسه شخصی به اشتراک گذاشته نمی‌شود، یا از داده‌های ناشناس استفاده کنید. یک جایگزین این است که یک LLM محلی را اجرا کنید (که در زیر مورد بحث قرار می‌گیرد) تا داده‌ها هرگز محیط شما را ترک نکنند.

روش‌های پیاده‌سازی: APIها، گردش‌کارها و ابزارها

چگونه می‌توان LLMها را به طور عملی در یک گردش کار مبتنی بر Beancount ادغام کرد؟ چندین رویکرد وجود دارد، از تعاملات ساده کپی-جای‌گذاری با ChatGPT گرفته تا ساخت خطوط لوله خودکار سفارشی:

  • دستورالعمل دستی (UI ChatGPT): در دسترس‌ترین روش استفاده تعاملی از ChatGPT (یا رابط LLM دیگر) است. به عنوان مثال، دسته‌ای از تراکنش‌های طبقه‌بندی نشده را کپی کنید و از مدل دسته‌ها را بخواهید. یا تکه‌ای از یک صورت‌حساب بانکی را جای‌گذاری کنید و درخواست تبدیل Beancount را بدهید. این نیازی به کدنویسی ندارد - همانطور که توسط بسیاری از کاربرانی که به سادگی مشکل خود را برای ChatGPT توضیح می‌دهند و نتایج قابل استفاده دریافت می‌کنند، مشهود است. نکته منفی این است که کمی موردی است و باید اطمینان حاصل کنید که مدل هر بار به خوبی هدایت می‌شود.

  • APIها و اسکریپت‌نویسی: برای یک گردش کار تکرارپذیرتر، می‌توانید از یک API (مانند API OpenAI برای GPT-4) برای پردازش تراکنش‌ها استفاده کنید. این می‌تواند در یک اسکریپت پایتون انجام شود که تراکنش‌های جدید را می‌خواند و API را برای دریافت پیشنهاد دسته یا یک ورودی کامل فراخوانی می‌کند. می‌توانید این را با خط لوله واردات خود ادغام کنید. به عنوان مثال، پیکربندی Beanborg به شما امکان می‌دهد با تنظیم use_llm: true و ارائه یک کلید API، پیشنهادات ChatGPT را فعال کنید. سپس هر تراکنش وارد شده یک پیش‌بینی دسته اضافی از GPT در کنار پیش‌بینی مبتنی بر قاعده یا ML دریافت می‌کند، که می‌توانید آن را بررسی کنید.

  • پلاگین‌ها و افزونه‌ها: با افزایش محبوبیت LLMها، می‌توانیم انتظار داشته باشیم که پلاگین‌ها برای Beancount یا رابط وب آن Fava ظاهر شوند. اینها می‌توانند یک دکمه "Ask AI" به تراکنش‌ها اضافه کنند. در حالی که در زمان نوشتن این مقاله پلاگین هوش مصنوعی رسمی Beancount وجود ندارد، علاقه انجمن در حال افزایش است. در واقع، خالق Beancount ایده یک کتابخانه دستورالعمل LLM برای Beancount را سرگرم کننده دانست و اعضای انجمن در حال آزمایش "ربات‌های حسابداری LLM" و مهندسی دستورالعمل برای کارهای حسابداری هستند. مراقب انجمن‌های Beancount و مسائل GitHub برای چنین ادغام‌هایی باشید.

  • کتابخانه‌های متن‌باز: فراتر از Beanborg، ابزارهای مرتبط دیگر عبارتند از smart_importer (یک پلاگین Beancount که در آن می‌توانید یک تابع پایتون بنویسید یا حتی از یادگیری ماشین ساده برای طبقه‌بندی تراکنش‌ها در هنگام واردات استفاده کنید). در حالی که یک LLM نیست، به خوبی با استفاده از LLM جفت می‌شود: می‌توانید از یک LLM برای تولید سریع داده‌ها یا قوانین آموزش استفاده کنید، سپس اجازه دهید smart_importer آنها را اعمال کند. همچنین علاقه به ابزارهایی مانند Llamafile (یک LLM محلی متن‌باز برای کارهای داده) برای تجزیه و تبدیل داده‌های مالی، و پروژه‌هایی مانند Actual یا Paisa در فضای حسابداری با متن ساده وجود دارد (اگرچه اینها بیشتر بر ارائه یک رابط کاربری متمرکز هستند، نه هوش مصنوعی). چشم‌انداز به سرعت در حال تحول است، و احتمالاً پروژه‌های تحقیقاتی و کد متن‌باز بیشتری ظاهر می‌شوند که به طور خاص اتوماسیون حسابداری با LLMها را هدف قرار می‌دهند. به عنوان مثال، یک مقاله 2024 روشی را برای استفاده از دستورالعمل‌های زبان خاص دامنه (قوانین نحو Beancount) برای ارزیابی و بهبود خروجی LLM برای حسابداری معرفی کرد - چنین تحقیقاتی می‌تواند منجر به کتابخانه‌هایی شود که به LLM کمک می‌کنند تا دقیق‌تر به قوانین حسابداری پایبند باشد.

  • گردش‌کارهای هوش مصنوعی ترکیبی: می‌توانید LLMها را با سایر هوش مصنوعی/اتوماسیون ترکیب کنید. به عنوان مثال، از OCR برای دریافت متن از رسیدها استفاده کنید، سپس آن را برای تولید ورودی به یک LLM وارد کنید. یا از یک مدل ML تشخیص ناهنجاری برای نشانه‌گذاری پرت‌ها استفاده کنید، سپس یک LLM داشته باشید تا آن پرت‌ها را توضیح دهد. قطعات را می‌توان از طریق اسکریپت‌ها یا پلتفرم‌های اتوماسیون متصل کرد (مانند استفاده از Zapier یا کد سفارشی برای ارسال تراکنش‌های جدید به یک سرویس هوش مصنوعی و ذخیره پاسخ).

هنگام پیاده‌سازی، مراقب هزینه‌ها و محدودیت‌های نرخ باشید اگر از یک API پولی استفاده می‌کنید، به ویژه برای دفتر کل‌های بزرگ (اگرچه طبقه‌بندی یک تراکنش واحد توکن‌های بسیار کمی هزینه دارد). همچنین، رسیدگی به خطا را در نظر بگیرید - به عنوان مثال، اگر هوش مصنوعی نام حساب نامعتبر یا ورودی بدفرم را برگرداند، مراحل برگشتی یا بررسی دستی داشته باشید.

ابزارها، کتابخانه‌ها و تحقیقات موجود

  • Beanborg – همانطور که بحث شد، یک واردکننده تراکنش خودکار برای Beancount که قوانین، ML و ChatGPT را برای طبقه‌بندی یکپارچه می‌کند. این یک متن‌باز است و می‌تواند به عنوان یک الگو برای ساخت گردش‌کارهای واردات به کمک هوش مصنوعی خودتان عمل کند.

  • smart_importer – یک پلاگین برای Beancount که به شما امکان می‌دهد منطق پایتون را بنویسید تا به طور خودکار تراکنش‌ها را در طول واردات طبقه‌بندی کنید یا حتی اصلاح کنید. برخی از کاربران از GPT برای کمک به ساخت این قوانین یا پیش طبقه‌بندی داده‌هایی که smart_importer سپس استفاده می‌کند، استفاده کرده‌اند.

  • مهندسی دستورالعمل Beancount (انجمن) – اکتشافات مداوم انجمن در انجمن‌ها (r/plaintextaccounting Reddit، گروه Google Beancount) در مورد استفاده از LLMها وجود دارد. به عنوان مثال، یک کاربر تکنیک‌های دستورالعمل را برای خروجی صحیح ورودی‌های Beancount توسط GPT-4 با یادآوری صریح فرمت و استفاده از استدلال گام به گام به اشتراک گذاشت. یک Gist GitHub باز دیگر دستور العملی برای استفاده از GPT-4 یا Claude برای تولید یک تابع پایتون ارائه می‌دهد که تراکنش‌ها را بر اساس کلمات کلیدی طبقه‌بندی می‌کند. این آزمایش‌های انجمن منابع ارزشمندی برای یادگیری استراتژی‌های دستورالعمل هستند.

  • تحقیقات مالی LLM – فراتر از اسکریپت‌های عملی، مقالات تحقیقاتی (مانند "ارزیابی سواد مالی LLMها از طریق DSLها برای حسابداری با متن ساده", FinNLP 2025) مستقیماً به توانایی LLMها در دفترداری دوطرفه نگاه می‌کنند. آنها اغلب دستورالعمل‌ها یا مجموعه‌داده‌های خود را متن‌باز می‌کنند، که می‌تواند برای تنظیم دقیق یا آموزش مدل‌ها برای دقت بهتر استفاده شود. همچنین کار بر روی استفاده از جاسازی LLM برای تشخیص ناهنجاری در امور مالی و بر روی LLMهای تخصصی متمرکز بر امور مالی وجود دارد که ممکن است پرس و جوهای حسابداری را با اطمینان بیشتری مدیریت کنند. در حالی که اینها ابزارهای پلاگین و بازی نیستند، جهت پیشرفت‌های آینده را نشان می‌دهند.

  • پلاگین‌های ChatGPT و SaaS مرتبط – چند سرویس و پلاگین شخص ثالث با هدف ادغام ChatGPT با نرم‌افزار حسابداری (QuickBooks، Xero و غیره) وجود دارد. به عنوان مثال، برخی از پلاگین‌ها ادعا می‌کنند که "اختلافات را به صورت بصری نشانه‌گذاری می‌کنند" در QuickBooks از طریق ChatGPT. برای Beancount (مبتنی بر فایل و باز)، چنین پلاگین‌هایی هنوز وجود ندارند، اما ترکیبی از یک رابط هوش مصنوعی پسند مانند Fava با یک LLM پشت صحنه می‌تواند ظاهر شود. علاقه‌مندان به متن‌باز ممکن است یک افزونه Fava ایجاد کنند که پرس و جوها را به یک LLM ارسال می‌کند (به عنوان مثال، یک تب Fava که در آن می‌توانید در مورد دفتر کل خود به زبان طبیعی سؤال بپرسید).

به طور خلاصه، ترکیبی از اسکریپت‌های انجمن، ابزارهای اختصاصی مانند Beanborg و تحقیقات پیشرفته، محدودیت‌های چگونگی کمک LLMها در حسابداری با متن ساده را پیش می‌برند. حتی اگر یک راه حل کامل و آماده برای هر کار در دسترس نباشد، بلوک‌های ساختمانی و مثال‌ها برای کاربران فنی برای جمع‌آوری سیستم دفترداری تقویت‌شده با هوش مصنوعی خود وجود دارد.

فرصت‌ها و محدودیت‌های LLMها در گردش‌کارهای Beancount

LLMها فرصت‌های هیجان‌انگیزی را برای کاربران Beancount ارائه می‌دهند:

  • بهره‌وری چشمگیر: آنها می‌توانند تلاش دستی برای طبقه‌بندی و وارد کردن تراکنش‌ها را کاهش دهند. کارهایی که قبلاً نیاز به نوشتن کد یا قوانین سفارشی داشتند، اغلب می‌توانند به سادگی با درخواست از هوش مصنوعی برای انجام آن انجام شوند. این مانع را برای غیر برنامه‌نویسان برای خودکارسازی دفترداری خود کاهش می‌دهد ("اکنون همه می‌توانند با استفاده از ChatGPT توسعه‌دهنده باشند"). صاحبان مشاغل می‌توانند بیشتر بر بررسی بینش‌های مالی تمرکز کنند تا ورود داده‌ها.

  • یادگیری تطبیقی: بر خلاف قوانین سختگیرانه، یک LLM می‌تواند موارد حاشیه‌ای را تعمیم دهد و مدیریت کند. اگر شروع به خرج کردن در یک دسته جدید کنید، هوش مصنوعی ممکن است آن را به طور ظریف با قیاس با دسته‌های شناخته شده مدیریت کند. علاوه بر این، اگر به درستی یکپارچه شود، می‌تواند از اصلاحات یاد بگیرد – به عنوان مثال، اگر پیشنهادی را لغو کنید، از آن اطلاعات می‌توان برای تنظیم دقیق خروجی‌های آینده استفاده کرد (به صورت دستی یا از طریق حلقه بازخورد در ابزارهایی مانند Beanborg). این شبیه به نحوه آموزش یک دستیار در طول زمان است.

  • تعامل طبیعی: LLMها زبان روزمره را درک می‌کنند و امکان ایجاد رابط‌های مکالمه برای حسابداری را فراهم می‌کنند. تصور کنید بپرسید، "مجموع هزینه‌های من برای قهوه در این ماه چقدر بود؟" و پاسخی دریافت کنید یا حتی یک پرس و جو Beancount که برای شما ساخته شده است. در حالی که تمرکز ما بر اتوماسیون بوده است، قابلیت پرس و جو مزیت دیگری است - ChatGPT می‌تواند سؤال شما را تجزیه کند و در صورت دسترسی به داده‌های دفتر کل، نتیجه را فرموله کند. این می‌تواند گزارش‌های Beancount را با اجازه دادن به پرسش و پاسخ موردی به زبان انگلیسی ساده افزایش دهد.

با این حال، محدودیت‌ها و نگرانی‌های مهمی وجود دارد که باید در نظر گرفته شود:

  • دقت و قابلیت اطمینان: LLMها مطمئن به نظر می‌رسند، اما اگر وظیفه را اشتباه درک کنند یا محدودیت‌های مناسب را نداشته باشند، ممکن است خروجی نادرستی تولید کنند. در حسابداری، یک طبقه‌بندی نادرست یا عدم تعادل می‌تواند گزارش‌ها را مختل کند. تحقیق مذکور نشان داد که بدون دستورالعمل دقیق، تعداد بسیار کمی از تراکنش‌های تولید شده توسط LLM کاملاً صحیح بودند. حتی زمانی که نحو صحیح است، دسته انتخاب شده ممکن است قابل بحث باشد. بنابراین، پیشنهادات هوش مصنوعی باید توسط یک حسابدار انسانی بررسی شود، به ویژه در دفاتر مهم. شعار باید "اعتماد، اما تأیید" باشد. همیشه از اعتبارسنجی Beancount (به عنوان مثال، bean-check برای خطاهای تعادل/نحو) در ورودی‌های تولید شده توسط هوش مصنوعی استفاده کنید.

  • حریم خصوصی و امنیت: داده‌های مالی حساس هستند. بسیاری از راه حل‌های LLM شامل ارسال داده‌ها به سرورهای خارجی (OpenAI و غیره) است. همانطور که یک کاربر اشاره کرد، "ChatGPT می‌تواند یک طبقه‌بندی کننده حساب عالی باشد... تنها مشکل حریم خصوصی است." به اشتراک گذاشتن تراکنش‌های بانکی با یک سرویس هوش مصنوعی شخص ثالث ممکن است سیاست‌های حفظ حریم خصوصی یا مقررات را نقض کند و خطر نشت داده‌ها وجود دارد. در واقع، مواردی از قرار گرفتن در معرض تصادفی داده‌ها از طریق هوش مصنوعی ابری گزارش شده است. برای کاهش این، گزینه‌ها عبارتند از: استفاده از داده‌های ناشناس (به عنوان مثال، هنگام پرسیدن از هوش مصنوعی، نام‌های واقعی را با مکان نگهدار جایگزین کنید)، اجرای LLMها به صورت محلی (مدل‌های متن‌باز وجود دارند که می‌توانید میزبانی کنید که در حالی که به اندازه GPT-4 قدرتمند نیستند، می‌توانند کارهای ساده‌تر را مدیریت کنند)، یا استفاده از یک رویکرد ترکیبی (پردازش اولیه را به صورت محلی انجام دهید، و شاید فقط خلاصه‌های سطح بالا را به یک API ارسال کنید). همیشه از انطباق با هر گونه الزامات حفاظت از داده مربوط به کسب و کار خود اطمینان حاصل کنید.

  • هزینه و عملکرد: استفاده از یک مدل پیشرفته مانند GPT-4 از طریق API به ازای هر توکن هزینه دارد. برای دستورالعمل‌های گاه به گاه این ناچیز است، اما اگر می‌خواهید هزاران تراکنش را طبقه‌بندی کنید، هزینه آن جمع می‌شود. همچنین تأخیر وجود دارد - یک دستورالعمل بزرگ با بسیاری از تراکنش‌ها ممکن است مدتی طول بکشد تا پردازش شود. مدل‌های کوچکتر با تنظیم دقیق یا LLMهای متن‌باز می‌توانند ارزان‌تر/سریع‌تر باشند، اما ممکن است به تنظیمات بیشتری نیاز داشته باشند و ممکن است بدون تنظیم دقیق بر روی داده‌های شما به همان دقت نرسند. این یک معامله بین راحتی (هوش مصنوعی ابری که "فقط کار می‌کند") و کنترل (هوش مصنوعی محلی که شما مدیریت می‌کنید) است.

  • بیش‌برازش یا ناسازگاری: LLMها مفهوم ذاتی نمودار حساب‌های خاص شما را ندارند، مگر اینکه آن اطلاعات را در دستورالعمل