Apache Burr: Xây dựng các tác nhân và ứng dụng AI đáng tin cậy
(burr.apache.org)- Apache Burr là một framework để xây dựng các ứng dụng AI ra quyết định bằng Python, từ chatbot đơn giản đến các hệ thống đa tác nhân phức tạp
- Ứng dụng được định nghĩa bằng tập hợp action và transition, và được viết bằng hàm Python cùng decorator mà không cần DSL hay YAML
- Burr UI cung cấp khả năng giám sát · gỡ lỗi · truy vết theo từng bước thực thi, đồng thời có thể theo dõi thay đổi trạng thái theo thời gian thực
- Có thể lưu trạng thái vào đĩa, cơ sở dữ liệu hoặc backend tùy chỉnh, rồi tiếp tục từ điểm dừng; đồng thời hỗ trợ chờ đầu vào từ con người và thực thi song song
- Tích hợp với các công cụ hiện có như OpenAI, Anthropic, LangChain, FastAPI, PostgreSQL mà không tạo lock-in hay cần wrapper
Xây dựng các tác nhân và ứng dụng AI đáng tin cậy
- Apache Burr là một Apache Incubating Project giúp việc phát triển các ứng dụng có khả năng ra quyết định trở nên dễ dàng hơn
- Phạm vi áp dụng mở rộng từ chatbot đơn giản đến các hệ thống đa tác nhân phức tạp
- Cách triển khai là Python thuần, theo triết lý “no magic”
- Các chỉ số công khai hiển thị gồm GitHub Stars 1,641, PyPI Downloads 379k+, Discord Members 457+
API Python đơn giản nhưng mạnh mẽ
- Burr cung cấp giao diện có thể kết hợp để xây dựng từ chatbot đến hệ thống đa tác nhân
- Mã ví dụ sử dụng
burr.corevớiaction,State,ApplicationBuilderđể định nghĩa actionchat @action(reads=["messages"], writes=["messages"])dùng để chỉ định trạng thái được đọc và trạng thái được ghiApplicationBuilder()thiết lập action, transition, trạng thái ban đầu và local tracker trước khi build ứng dụng- Ví dụ thực thi truyền LLM client dưới dạng đầu vào với
app.run(halt_after=["chat"], inputs={"llm_client": client})
Những yếu tố cần có để xây dựng ứng dụng AI
- Simple Python API định nghĩa ứng dụng như một tập hợp action và transition, chỉ dùng hàm Python và decorator mà không cần DSL hay YAML
- Built-in Observability cho phép giám sát, gỡ lỗi và truy vết mọi bước của ứng dụng theo thời gian thực bằng Burr UI
- Persistence & State Management tự động lưu trạng thái vào đĩa, cơ sở dữ liệu hoặc backend tùy chỉnh và cho phép tiếp tục từ điểm bị gián đoạn
- Human-in-the-Loop cho phép dừng thực thi ở bất kỳ bước nào để chờ đầu vào từ con người, phù hợp với workflow phê duyệt và tác nhân tương tác
- Branching & Parallelism hỗ trợ chạy action song song, fan out / fan in, xây dựng DAG phức tạp và kết hợp các ứng dụng con
- Testing & Replay tăng độ tin cậy vào hệ thống AI thông qua phát lại các lần chạy trước, kiểm thử đơn vị cho từng action và xác minh chuyển đổi trạng thái
Tích hợp với stack hiện có
- Burr tích hợp với các công cụ và framework bạn đang dùng mà không yêu cầu lock-in hay wrapper
- Các mục tích hợp LLM được hiển thị gồm OpenAI, Anthropic, Instructor
- Các mục tích hợp framework được hiển thị gồm LangChain, Hamilton, Haystack
- Các mục tích hợp UI và serving được hiển thị gồm Streamlit và FastAPI
- Các mục tích hợp xác thực và lưu trữ được hiển thị gồm Pydantic và PostgreSQL
- Có thể xem toàn bộ danh sách tích hợp trong tài liệu
Trải nghiệm sử dụng từ nhà phát triển và đội ngũ
- Đánh giá từ Peanut Robotics cho biết sau khi đánh giá nhiều framework LLM, quản lý trạng thái của Burr là câu trả lời mạnh mẽ cho việc triển khai robot dựa trên ra quyết định bằng AI
- Đánh giá từ Watto.ai cho biết Burr giúp dễ dàng xây dựng các ứng dụng AI mô-đun, và UI giúp việc gỡ lỗi trở nên đơn giản
- Đánh giá từ Paxton AI nhấn mạnh rằng Burr không dùng những khái niệm kỳ quặc và khó hiểu chỉ vì đó là AI
- Đánh giá từ Provectus cho biết quản lý trạng thái của Burr hữu ích cho việc tạo snapshot trạng thái, gỡ lỗi, phát lại và xây dựng các ca đánh giá
- Đánh giá từ CognitiveGraphs cho biết khi so với nhiều nền tảng LLM agentic như LangChain, CrewAi, AutoGen, Agency Swarm, Burr cung cấp framework vững chắc hơn cho việc thiết kế hành vi phức tạp
- Đánh giá từ TaskHuman cho biết sau khi chuyển từ LangChain sang Burr, họ bắt đầu chỉ trong vài giờ và đã chuyển toàn bộ codebase sang Burr
Cộng đồng và trạng thái dự án
- Cộng đồng được xây dựng như một không gian để yêu cầu hỗ trợ, chia sẻ dự án và đóng góp cho tương lai của Burr
- Các kênh tham gia gồm Discord, GitHub, Twitter / X
- Tài nguyên dự án liên kết tới tài liệu, ví dụ, YouTube, roadmap và changelog
- Apache Burr là một dự án đang trong giai đoạn ươm tạo tại Apache Software Foundation, với sự bảo trợ của Apache Incubator
- Trạng thái ươm tạo không nhất thiết phản ánh mức độ hoàn thiện hay ổn định của mã nguồn, mà cho thấy dự án vẫn chưa nhận được sự phê duyệt đầy đủ từ ASF
1 bình luận
Ý kiến trên Hacker News
Tôi vẫn tạm thời giữ quan điểm trung lập với các framework agent, và tính hữu dụng của chúng thay đổi tùy theo bản chất của agent. Ví dụ, trường hợp cần trả về một phản hồi đủ ổn trong vòng 3 giây rất khác với trường hợp phải giải một bài toán trong 3 giờ
Cuối cùng, agent có thể được rút gọn thành: xây dựng ngữ cảnh, gọi LLM, thực thi các lệnh gọi công cụ được yêu cầu, phân tích đầu ra cuối cùng của mô hình, rồi trả về cho frontend. Có các phần mở rộng như bộ nhớ hay gọi công cụ bất đồng bộ, nhưng từ góc nhìn kỹ thuật phần mềm truyền thống thì không quá phức tạp
Ai cũng muốn tạo framework agent của riêng mình, nhưng nếu phải xây một agent cụ thể thì tôi thấy mã 1:1 được thiết kế riêng cho agent đó vừa dễ hơn vừa dễ bảo trì hơn nhiều. Các lớp trừu tượng của framework thường che khuất và cản trở logic cốt lõi, và rốt cuộc lại phải ép theo kiểu trừu tượng mà framework chọn, nên đôi khi lệch khỏi mục tiêu thực tế
Ngoài ra còn cần quản lý dự án để xử lý ticket, dependency, tiến độ, khởi động lại ticket bị kẹt; lưu lịch sử hội thoại cùng bộ nhớ, dreaming, học tích lũy; quan sát được chi phí và mức sử dụng; đánh giá prompt và tự động tinh chỉnh; thay đổi nhà cung cấp mô hình và cố định phiên bản mô hình; cùng sandbox để chạy các phiên thực tế
Không nhất thiết phải lấy tất cả từ một nhà cung cấp, nhưng trong đa số trường hợp thì không nên bị khóa vào một nhà cung cấp mô hình duy nhất, và ngữ cảnh của riêng mình cùng học tích lũy thì nên tự sở hữu
Mọi thứ trong ứng dụng kiểu agent rốt cuộc đều được hiện thực hóa thành chuỗi token hoặc lệnh gọi tới nhà cung cấp, nên ở gần như mọi tầng của ứng dụng điều đó phải được thể hiện rõ ràng
Dù vậy, con người vẫn cần việc để làm hoặc đồ chơi thú vị để nghịch, và “người tiếp theo” thường chẳng được coi trọng lắm, nên có vẻ họ không ngại đẩy sang cho người khác kết quả của những giờ vui chơi có lương
Ví dụ, có vẻ Apache Burr hỗ trợ hoặc sẽ hỗ trợ hệ thống vector RAG dạng plugin, nhưng thứ tôi cần là cách thêm tài liệu vào ngữ cảnh và giữ chúng như một phần của system prompt đã cập nhật, đồng thời chèn vào quá trình đó những điều chỉnh rất cụ thể. Đây là cách dùng tùy biến cho khái niệm RAG vốn có, nên không thật sự khớp với một framework cụ thể nào
Với nhu cầu của tôi thì triển khai tùy biến là phù hợp, nhưng các lựa chọn kỹ thuật để làm mới agent cũ vẫn còn là vấn đề
Tự làm chatbot từ đầu có thể dễ hoặc thậm chí dễ hơn, nhưng khi cần thêm observability hay tracing thì câu chuyện khác hẳn. Nếu chỉ cần thêm một biến môi trường là có thể xem toàn bộ trace trên UI gần như không cần làm gì thêm, thì giải pháp tự làm rất khó cạnh tranh
Tôi tự hỏi liệu trang này có được làm bằng https://vorpus.github.io/performativeUI/ không
Nó đạp trúng gần như mọi khuôn sáo điển hình của một trang đích do AI tạo ra. Hay là họ cố tình châm biếm nhỉ
Tôi rất thích dùng framework này trong cả dự án cá nhân lẫn dự án công việc. Thật tốt khi có được workflow có trạng thái đáng tin cậy cho các mô hình AI cùng observability miễn phí
Tôi đã ghép một công cụ để mount state machine của Burr bằng MCP, vừa cho agent các đường ray để đi theo, vừa đảm bảo rằng dù state machine có phức tạp đến đâu thì công cụ MCP cũng chỉ bị giới hạn trong việc duyệt state machine: https://github.com/msradam/theodosia
Hiện tôi đang làm việc chuyển các skill thành state machine. Nhiều skill phổ biến vốn đã được viết dưới dạng các bước để mô hình AI làm theo, nên có vẻ dùng các tính năng tường minh của Burr sẽ giúp chúng ổn định hơn
Tôi muốn biết nó so với https://strandsagents.com/ thế nào. Tôi quan tâm đến các công cụ trong mảng này và hiện chưa bị ràng buộc vào công cụ nào, nhưng Bedrock + Serverless on Agent Core đem lại cảm giác như một “lộ trình hướng dẫn dễ đi”. Chỉ là tôi không thích sự phụ thuộc vào nền tảng
Cho tới giờ thì tôi chưa thấy như vậy, thậm chí đôi lúc còn có cảm giác hai thứ này xung đột với nhau
Ở đây thấy có builder pattern và decorator. Python cũng có decorator, nhưng tôi cho rằng cách dùng phù hợp nhất là như một “bộ lọc” áp vào hàm hoặc phương thức. Kiểu như hàm này thì cache, đầu ra của hàm này thì luôn serialize, hàm này thì chuẩn bị làm công cụ cho bộ thực thi kiểu agent
Tôi không nghĩ nó nên được dùng cho đăng ký hay điều khiển luồng. Có thể bạn không đồng ý, nhưng phải có người nói ra. FastAPI đã kéo cách dùng decorator hiện đại đi sai hướng quá nhiều
Builder pattern gần như là một quy ước nảy sinh vì Rust không có keyword argument được đặt tên, còn hàm Python vốn đã phơi bày một giao diện có tên rõ ràng. Hầu như không có lý do gì để truyền các tham số cấu hình theo thứ tự bằng các lời gọi phương thức nối chuỗi
Nếu cần thêm trạng thái chưa có trong constructor hay factory thì đó không phải builder pattern mà là đăng ký. Nơi duy nhất tôi thấy có thể chấp nhận builder pattern là query builder. Vì ở đó ta lặp đi lặp lại việc ghép các khái niệm lại với nhau, và các slot metadata như tên phương thức và keyword argument thực sự hữu ích. Dùng các phương thức nhận một tham số đơn thay cho keyword argument thì tôi cho là sai
Có vẻ đây là một phiên bản khá ngây thơ về việc AI agent đáng tin cậy là gì
Độ tin cậy có nghĩa là “nó có thể hoàn thành việc được giao hay không”, chứ không liên quan gì đặc biệt đến máy trạng thái
Tôi mới lần đầu nghe về Burr, tò mò không hiểu vì sao nó lại được Apache ươm tạo
Một số dự án tốt nghiệp rồi trở thành những cái tên ai cũng biết, một số thất bại và bị đưa vào attic. ASF cung cấp hỗ trợ ở cấp tổ chức và nhìn chung nuôi dưỡng cộng đồng khá tốt
Trang này trông như rác dùng một lần được làm bằng Claude Code, và thậm chí còn không hề cố gắng hoạt động nếu không có JavaScript. Ít nhất thì tính nhất quán thương hiệu vẫn có
Tôi không tìm thấy căn cứ nêu tên một cách rõ ràng, nhưng cho ai tò mò thì đây là ví dụ Hamilton: https://github.com/apache/burr/tree/main/examples/multi-agen...
Mối liên hệ với Hamilton nằm ở chỗ đây là thư viện mã nguồn mở thứ hai mà DAGWorks công bố sau thư viện Hamilton. Cái tên này xuất phát từ việc tưởng tượng xem điều gì sẽ xảy ra nếu Burr và Hamilton hòa hợp với nhau, vượt qua khác biệt để xây dựng một liên bang tốt đẹp hơn
Ban đầu Burr được tạo ra như một cơ chế xử lý trạng thái giữa các lần thực thi DAG của Hamilton. Vì DAG không có chu trình. Sau đó chúng tôi nhận ra phạm vi áp dụng của nó rộng hơn nên đã phát hành rộng rãi hơn
https://pypi.org/project/burr/
Tôi muốn hỏi có công cụ hay nền tảng điều phối coding agent nào đáng để đề xuất không. Tôi muốn chạy, quản lý và giám sát các agent codex hoặc claude trên nhiều máy
Nếu có thể thì nên tự host được hoặc là mã nguồn mở. Tôi biết claude code nội bộ đã có nhiều tính năng kiểu này, nhưng nó chỉ dành cho claude
Tôi không chắc nó tích hợp với skills các thứ như thế nào, nhưng nhìn qua thì có vẻ sẽ hoạt động
https://burr.apache.org/docs/examples/agents/