Apache Burr: Güvenilir yapay zeka ajanları ve uygulamaları oluşturma
(burr.apache.org)- Apache Burr, basit chatbotlardan karmaşık çoklu ajan sistemlerine kadar karar verme odaklı yapay zeka uygulamalarını Python ile kurmak için bir framework'tür
- Uygulamalar, aksiyonlar ve geçişler kümesi olarak tanımlanır ve DSL ya da YAML olmadan Python fonksiyonları ve dekoratörleriyle yazılır
- Burr UI, yürütmenin her adımı için izleme·hata ayıklama·takip sunar ve durum değişiklikleri gerçek zamanlı olarak görülebilir
- Durum disk, veritabanı ve özel backend'lerde saklanabilir; kesinti noktasından devam edilebilir; ayrıca insan girdisi bekleme ve paralel yürütme de desteklenir
- OpenAI, Anthropic, LangChain, FastAPI, PostgreSQL gibi mevcut araçlarla entegre olur ve vendor lock-in ya da wrapper gerektirmeden kullanılabilir
Güvenilir yapay zeka ajanları ve uygulamaları oluşturma
- Apache Burr, karar verme yapan uygulamaların geliştirilmesini kolaylaştıran bir Apache Incubating Project'tir
- Kapsamı, basit chatbotlardan karmaşık çoklu ajan sistemlerine kadar uzanır
- Uygulama yaklaşımı saf Python'dır ve “no magic” anlayışını öne çıkarır
- Açık metriklerde GitHub Stars 1,641, PyPI Downloads 379k+, Discord Members 457+ gösterilmektedir
Basit ve güçlü Python API
- Burr, chatbotlardan çoklu ajan sistemlerine kadar kurulabilen birleştirilebilir bir arayüz sunar
- Örnek kod,
burr.coreiçindekiaction,State,ApplicationBuilderkullanılarakchataksiyonunu tanımlar @action(reads=["messages"], writes=["messages"]), hangi durumun okunacağını ve yazılacağını belirtirApplicationBuilder(), aksiyonları, geçişleri, başlangıç durumunu ve local tracker'ı ayarladıktan sonra uygulamayı oluşturur- Çalıştırma örneği, LLM istemcisini girdi olarak
app.run(halt_after=["chat"], inputs={"llm_client": client})biçiminde geçirir
Yapay zeka uygulamaları oluşturmak için gereken unsurlar
- Simple Python API, uygulamayı aksiyonlar ve geçişler kümesi olarak tanımlar; DSL veya YAML olmadan yalnızca Python fonksiyonları ve dekoratörleri kullanır
- Built-in Observability, Burr UI ile uygulamanın tüm adımlarını gerçek zamanlı izleme, hata ayıklama ve takip etmeyi mümkün kılar
- Persistence & State Management, durumu diske, veritabanına veya özel backend'lere otomatik olarak kaydeder ve kesilen noktadan devam etmeyi sağlar
- Human-in-the-Loop, herhangi bir aşamada yürütmeyi durdurup insan girdisini beklemeye olanak tanır; bu da onay iş akışları ve etkileşimli ajanlar için uygundur
- Branching & Parallelism, paralel aksiyon çalıştırma, fan out / fan in, karmaşık DAG kurma ve alt uygulamaları birleştirmeyi destekler
- Testing & Replay, geçmiş çalıştırmaları yeniden oynatma, tek tek aksiyonları birim testiyle sınama ve durum geçişlerini doğrulama yoluyla yapay zeka sistemlerine güveni artırır
Mevcut stack ile entegrasyon
- Burr, hâlihazırda kullanılan araç ve framework'lerle entegre olur; vendor lock-in ya da wrapper gerektirmez
- LLM entegrasyonları arasında OpenAI, Anthropic ve Instructor yer alır
- Framework entegrasyonları arasında LangChain, Hamilton ve Haystack yer alır
- UI ve serving entegrasyonları arasında Streamlit ve FastAPI yer alır
- Doğrulama ve veri deposu entegrasyonları arasında Pydantic ve PostgreSQL yer alır
- Tüm entegrasyon listesi dokümantasyonda görülebilir
Geliştiricilerin ve ekiplerin kullanım deneyimi
- Peanut Robotics, birden fazla LLM framework'ünü değerlendirdikten sonra Burr'ün durum yönetimini, yapay zeka tabanlı karar verme kullanan robotları dağıtmak için güçlü bir çözüm olarak değerlendirdi
- Watto.ai, modüler yapay zeka uygulamaları oluşturmanın kolay olduğunu ve UI'ın hata ayıklamayı kolaylaştırdığını belirtti
- Paxton AI, sırf yapay zeka olduğu için garip ve anlaşılmaz kavramlar kullanmamasını vurguladı
- Provectus, durum snapshot'ları oluşturma, hata ayıklama, yeniden oynatma ve değerlendirme senaryoları kurmada Burr'ün durum yönetimini faydalı buldu
- CognitiveGraphs, LangChain, CrewAi, AutoGen, Agency Swarm gibi çeşitli agentic LLM platformlarıyla karşılaştırıldığında Burr'ün karmaşık davranış tasarımı için daha sağlam bir framework sunduğunu belirtti
- TaskHuman, LangChain'den Burr'e geçtikten sonra birkaç saat içinde çalışmaya başladığını ve tüm kod tabanını Burr'e taşıdığını söyledi
Topluluk ve proje durumu
- Topluluk, yardım isteme, proje paylaşma ve Burr'ün geleceğine katkı sunma alanı olarak yapılandırılmıştır
- Katılım kanalları Discord, GitHub ve Twitter / X olarak sunulmaktadır
- Proje kaynakları; dokümantasyon, örnekler, YouTube, yol haritası ve değişiklik günlüğüne bağlantılar içerir
- Apache Burr, Apache Software Foundation altında kuluçka sürecindeki bir projedir ve Apache Incubator tarafından desteklenmektedir
- Kuluçka durumu, kodun olgunluğunu veya kararlılığını zorunlu olarak yansıtmaz; ancak ASF'nin tam onayının henüz alınmadığını gösterir
1 yorum
Hacker News yorumları
Ajan framework’leri konusunda hâlâ kararsızım ve faydaları da ajanın niteliğine göre değişiyor. Örneğin 3 saniye içinde yeterince iyi bir yanıt üretmesi gereken durumla, tek bir problemi 3 saat boyunca çözmesi gereken durum aynı değil
Sonuçta ajan; bağlamın kurulması, LLM çağrısı, istenen araç çağrılarının yürütülmesi, nihai model çıktısının ayrıştırılması ve frontend’e döndürülmesine indirgeniyor. Bellek ya da asenkron araç çağrıları gibi genişletmeler var ama geleneksel yazılım mühendisliği açısından bakınca o kadar da karmaşık değil
Herkes kendi ajan framework’ünü yapmak istiyor ama belirli bir ajan geliştirilecekse, o ajana göre yazılmış bire bir kodun çok daha kolay ve bakımının da daha iyi olduğunu düşünüyorum. Framework’ün soyutlamaları çoğu zaman çekirdek mantığı gizleyip engelliyor; en sonunda da framework’ün seçtiği soyutlamaya uymak zorunda kalıyorsunuz ve bu da gerçek hedefle çelişebiliyor
Bunun yanında biletleri/bağımlılıkları/ilerlemeyi/tıkanmış biletlerin yeniden başlatılmasını ele alan proje yönetimi, konuşma geçmişi saklama ile bellek/rüya görme/birikimli öğrenme işlevleri, maliyet ve kullanımı izleyen gözlemlenebilirlik, prompt değerlendirme ve otomatik ayarlama, model sağlayıcısını değiştirme ve model sürümünü sabitleme ile gerçek oturumları çalıştıracak sandbox da gerekli
Bunların hepsini tek bir sağlayıcıdan almak zorunda değilsiniz ama çoğu durumda tek bir model sağlayıcısına kilitlenmemek ve özellikle kendi bağlamınıza ile birikimli öğrenmenize sahip olmak gerektiğini düşünüyorum
Ajanik uygulamalardaki her şey sonuçta token dizileri ya da sağlayıcı çağrılarıyla hayata geçtiği için, bunun uygulamanın neredeyse her katmanında açıkça görünmesi lazım
Yine de insanların yapacak işlere ya da eğlenceli oyuncaklara ihtiyacı var ve “bir sonraki kişi” genelde çok da önemsenmiyor; bu yüzden ücretli oyun zamanının çıktısını başkasına devretmekte sakınca görmüyor gibiler
Örneğin Apache Burr, takılabilir bir vektör RAG sistemini destekliyor ya da ileride destekleyecek gibi görünüyor; ama benim ihtiyaç duyduğum şey, belgeleri bağlama ekleyen ve güncellenmiş sistem prompt’unun bir parçası olarak tutarken sürece çok özel ince ayarlar katan bir yaklaşım. Bu, mevcut RAG kavramının özelleştirilmiş bir kullanımı ve belirli bir framework’e pek uymuyor
Benim kullanımımda özel bir uygulama daha doğru ama eski ajanları güncellemek için yapılacak mühendislik tercihleri hâlâ ortada duruyor
Bir chatbot’u sıfırdan kendiniz yapmak kolay ya da daha kolay olabilir ama gözlemlenebilirlik veya izleme eklemeniz gerektiğinde durum değişiyor. Tek bir environment variable ekleyerek, neredeyse hiç ek iş yapmadan tüm izleri UI üzerinden inceleyebiliyorsanız, kendi el yapımı çözümünüzün bununla rekabet etmesi zor
Bu sayfanın https://vorpus.github.io/performativeUI/ ile mi yapıldığını merak ediyorum
AI üretimi landing page klişelerinin mümkün olan neredeyse tamamına basıyor. Yoksa bilinçli bir hiciv mi diye düşündürüyor
Bu framework’ü kişisel projelerde ve iş projelerinde keyifle kullanıyorum. AI modelleri için güvenilir durumlu workflow ve ücretsiz gözlemlenebilirlik sunması hoşuma gitti
Burr durum makinesini MCP ile mount eden bir araç geliştirdim; böylece ajana izleyeceği rayları verirken, durum makinesi ne kadar karmaşıklaşırsa karmaşıklaşsın MCP araçları durum makinesini keşfetmekle sınırlı kalıyor: https://github.com/msradam/theodosia
Şu anda becerileri durum makinelerine dönüştürmek üzerinde çalışıyorum. Popüler birçok beceri zaten AI modellerinin izleyebileceği adımlar biçiminde yazılmış durumda; Burr’ün açık özelliklerinden yararlanarak bunları daha güvenilir hâle getirebiliriz gibi görünüyor
https://strandsagents.com/ ile karşılaştırınca nasıl olduğunu merak ediyorum. Bu alandaki araçlarla ilgileniyorum ve henüz belirli bir araca bağlanmış değilim ama Bedrock + Agent Core üzerinde Serverless bana “kolay yönlendirme yolu” gibi geliyor. Yine de platforma bağımlı olmak hoşuma gitmiyor
Şimdiye kadar öyle hissettirmedi; hatta bazen ikisinin birbiriyle çatıştığı izlenimini veriyor da olabiliyor
Burada builder pattern ve decorator’lar görünüyor. Python’da da decorator var ama bence en doğru kullanım, bunları fonksiyon ya da metotlara uygulanan birer “filtre” olarak görmek. Yani bu fonksiyonu cache’le, bu fonksiyonun çıktısını her zaman serialize et, bu fonksiyonu agent tipi bir yürütme motorunun aracı olarak hazırla gibi
Kayıt veya akış kontrolü için kullanılmaları gerektiğini düşünmüyorum. Katılmayabilirsiniz ama birinin bunu söylemesi lazım. FastAPI, modern decorator kullanımını fazlasıyla yanlış bir yöne çekti
Builder pattern, Rust’ta isimlendirilmiş keyword argümanları olmamasından doğan bir gelenek gibi; Python fonksiyonları ise zaten isimlendirilmiş bir sözleşmeyi açığa çıkarıyor. Yapılandırma parametrelerini zincirleme metot çağrılarıyla sırayla geçirmek için neredeyse hiç sebep yok
Constructor’da ya da factory’de henüz olmayan bir durumu eklemeniz gerekiyorsa bu builder pattern değil, registration’dır. Builder pattern’in tolere edilebilir olduğu tek yer belki de query builder’lardır. Çünkü kavramı yinelemeli olarak katman katman kurarsınız ve metot adlarıyla keyword argümanları gibi metadata yuvaları gerçekten işe yarar. Keyword argümanları yerine tek parametre alan metotlar kullanmanın yanlış olduğunu düşünüyorum
Güvenilir AI agent’ın ne olduğuna dair oldukça naif bir versiyon gibi görünüyor
Güvenilirlik, “verilen işi bitirebiliyor mu” demektir; state machine ile özel bir ilgisi yok
Burr’ü ilk kez duyuyorum; neden Apache’de inkübasyona alındığını merak ediyorum
Bazıları mezun olup herkesin bildiği isimlere dönüşüyor, bazıları ise başarısız olup attic’e gidiyor. ASF kurumsal destek sağlıyor ve genelde iyi bir topluluk yetiştiriyor
Sayfa, Claude Code ile yapılmış tek kullanımlık bir çöp gibi görünüyor ve JavaScript olmadan çalışması için en ufak bir çaba bile göstermiyor. En azından marka tutarlılığı var
İsmin açık bir gerekçesini bulamadım ama merak edenler için bir Hamilton örneği var: https://github.com/apache/burr/tree/main/examples/multi-agen...
Hamilton bağlantısı, bunun DAGWorks’ün Hamilton kütüphanesinden sonra çıkardığı ikinci açık kaynak kütüphane olması. İsim, Burr ile Hamilton’ın uyum içinde çalışıp farklılıklarını aşarak daha iyi bir federasyon kurduğu bir alternatif tarih hayalinden geliyor
Burr başlangıçta Hamilton DAG yürütmeleri arasındaki durumu ele almak için yapılmıştı. Çünkü DAG’lerde döngü olmaz. Sonra bunun daha geniş bir kullanım alanı olduğunu fark edip daha kapsamlı biçimde yayımladık
https://pypi.org/project/burr/
Kodlama agent’ları için orkestrasyon araçları veya platformları arasında tavsiye edebileceğiniz bir şey var mı diye merak ediyorum. Birden fazla makinede codex ya da claude agent’larını çalıştırmak, yönetmek ve izlemek istiyorum
Mümkünse self-hosted ya da açık kaynak olmasını tercih ederim. Claude Code’un içeride böyle birçok özelliğe sahip olduğunu biliyorum ama o yalnızca Claude’a özel
Skill’lerle vb. nasıl entegre edildiğinden emin değilim ama görünüşe göre çalışır
https://burr.apache.org/docs/examples/agents/