Apache Burr؛ ساخت اپهای هوش مصنوعی بهشکل ماشین حالت
خلاصهٔ کاملتر
تو این پروژه اومده که Apache Burr (که الان تو دورهٔ incubating آپاچیه) یه کتابخونهٔ پایتونیه که ساختن اپهایی که باید تصمیم بگیرن رو ساده میکنه؛ چیزایی مثل چتبات، ایجنت و شبیهسازی. فلسفهش اینه که هر اپی که حالت (state) داره، تصمیمهای پیچیده میگیره، یا به فیدبک آدم نیاز داره رو میشه باهاش تمیز مدیریت کرد.
مدل ذهنی Burr اینه که اپت رو مثل یه ماشین حالت یا فلوچارت بنویسی. تو هر گره یه اکشن داری که مشخص میکنه از state چی میخونه و چی توش مینویسه، و بعد انتقالها (transitions) میگن از کدوم اکشن به کدوم اکشن بریم. خود اکشنها فقط تابعهای سادهٔ پایتونن، پس میتونی هر کدی که خواستی توشون بذاری.
این تیکه نشون میده که چطور دو تا اکشن و انتقالهای بینشون به یه اپلیکیشن وصل میشن:
app = (
ApplicationBuilder()
.with_actions(human_input, ai_response)
.with_transitions(
("human_input", "ai_response"),
("ai_response", "human_input")
).with_state(chat_history=[])
.with_entrypoint("human_input")
.build()
)Burr سه تا تیکهٔ اصلی داره: یه کتابخونهٔ پایتونی بدون وابستگی و کمانتزاع برای ساختن ماشینهای حالت، یه UI برای دیدن تلهمتری و دیباگ اجرا، و یه سری اینتگریشن برای ذخیرهٔ state و وصلشدن به سیستمهای دیگه. نکتهٔ مهمش اینه که فریمورکـه و به LLM گره نخورده، یعنی هم با مدلهای زبانی کار میکنه هم با کاربردهای غیر-LLM مثل شبیهسازی سریزمانی یا تیونکردن هایپرپارامتر.
به گفتهٔ سازندهها، Burr بهت نمیگه مدلت رو چطور بساز یا API رو چطور صدا بزن یا دیتات رو چطور مدیریت کن؛ کارش فقط اینه که همهٔ اینها رو جوری به هم وصل کنه که دنبالکردن منطق سیستم راحت بمونه و با رشد نیازت مقیاس بخوره. اسم پروژه هم از Aaron Burr گرفته شده، چون اولش بهعنوان یه harness برای مدیریت state بین اجراهای پروژهٔ Apache Hamilton ساخته شده بود.
رو نقشهٔ راهشون هم چیزایی مثل اینتگریشن با FastAPI و دیپلوی میزبانیشده، پشتیبانی درستوحسابی از retry و مدیریت خطا، و اینتگریشنهای ذخیرهسازی بیشتر مثل MySQL و S3 هست. یه نسخهٔ ابری به اسم Burr Cloud هم برای کسایی که نمیخوان خودشون میزبانی کنن در دست کاره.
نکات کلیدی:
- یه کتابخونهٔ پایتونی برای ساخت اپهای تصمیمگیر بهشکل ماشین حالت
- اکشنها تابعهای سادهٔ پایتونن و انتقالها مسیر بینشون رو مشخص میکنن
- فریمورک-اگنوستیکه و هم با LLM هم با کاربردهای غیر-LLM کار میکنه
- یه UI داره که اجرای سیستم رو لحظهای ترِیس و دیباگ میکنه
- پرسیستر داره تا state رو ذخیره و بارگذاری کنی




