burr


Nameburr JSON
Version 0.14.1 PyPI version JSON
download
home_pageNone
SummaryA state machine for data projects
upload_time2024-05-03 21:57:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords mlops data state-machine llmops
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Burr
<div>
<a href="https://discord.gg/6Zy2DwP4f3" target="_blank"><img src="https://img.shields.io/badge/Join-Burr_Discord-brightgreen?logo=discord" alt="Burr Discord"/></a>
</div>

Burr makes it easy to develop applications that make decisions based on state (chatbots, agents, simulations, etc...) from simple python building blocks.
Burr includes a UI that can track/monitor those decisions in real time.

Link to [documentation](https://burr.dagworks.io/). Quick (<3min) video intro [here](https://www.loom.com/share/a10f163428b942fea55db1a84b1140d8?sid=1512863b-f533-4a42-a2f3-95b13deb07c9).
Longer [video intro & walkthrough](https://www.youtube.com/watch?v=rEZ4oDN0GdU). Blog post [here](https://blog.dagworks.io/p/burr-develop-stateful-ai-applications).

## πŸƒQuick start

Install from `pypi`:

```bash
pip install "burr[start]"
```

Then run the UI server:

```bash
burr
```
This will open up Burr's telemetry UI. It comes loaded with some default data so you can click around.
It also has a demo chat application to help demonstrate what the UI captures enabling you too see things changing in
real-time. Hit the "Demos" side bar on the left and select `chatbot`. To chat it requires the `OPENAI_API_KEY`
environment variable to be set, but you can still see how it works if you don't have an API key set.

Next, start coding / running examples:

```bash
git clone https://github.com/dagworks-inc/burr && cd burr/examples/hello-world-counter
python application.py
```
You'll see the counter example running in the terminal, along with the trace being tracked in the UI.
See if you can find it.

For more details see the [getting started guide](https://burr.dagworks.io/getting_started/simple-example/).

## πŸ”© How does Burr work?

With Burr you express your application as a state machine (i.e. a graph/flowchart).
You can (and should!) use it for anything where managing state can be hard. Hint: managing state is always hard!
This is true across a wide array of contexts, from building RAG applications to power a chatbot, to running ML parameter tuning/evaluation workflows,
to conducting a complex forecasting simulation.

Burr includes:

1. A (dependency-free) low abstraction python library that enables you to build and manage state machines with simple python functions
2. A UI you can use view execution telemetry for introspection and debugging
3. A set of integrations to make it easier to persist state, connect to telemetry, and integrate with other systems

![Burr at work](./chatbot.gif)

## πŸ’»οΈ What can you do with Burr?

Burr can be used to power a variety of applications, including:

1. [A simple gpt-like chatbot](examples/multi-modal-chatbot)
2. [A stateful RAG-based chatbot](examples/conversational-rag)
3. [A machine learning pipeline](examples/ml-training)
4. [A simulation](examples/simulation)

And a lot more!

Using hooks and other integrations you can (a) integrate with any of your favorite vendors (LLM observability, storage, etc...), and
(b) build custom actions that delegate to your favorite libraries (like [Hamilton](https://github.com/DAGWorks-Inc/hamilton)).

Burr will _not_ tell you how to build your models, how to query APIs, or how to manage your data. It will help you tie all these together
in a way that scales with your needs and makes following the logic of your system easy. Burr comes out of the box with a host of integrations
including tooling to build a UI in streamlit and watch your state machine execute.

## πŸ— Start Building

See the documentation for [getting started](https://burr.dagworks.io/getting_started/simple-example), and follow the example.
Then read through some of the concepts and write your own application!

## πŸ“ƒ Comparison against common frameworks

While Burr is attempting something (somewhat) unique, there are a variety of tools that occupy similar spaces:

| Criteria                                  | Burr | Langgraph | temporal | Langchain | Superagent | Hamilton |
|-------------------------------------------|:---:|:----------:|:--------:|:---------:|:----------:|:--------:|
| Explicitly models a state machine         | βœ…  |      βœ…    |    ❌    |     ❌    |     ❌     |   ❌     |
| Framework-agnostic                        | βœ…  |      ❌    |    βœ…    |     βœ…    |     ❌     |   βœ…     |
| Asynchronous event-based orchestration    | ❌  |      ❌    |    βœ…    |     ❌    |     ❌     |   ❌     |
| Built for core web-service logic          | βœ…  |      βœ…    |    ❌    |     βœ…    |     βœ…     |   βœ…     |
| Open-source user-interface for monitoring | βœ…  |      ❌    |    ❌    |     ❌    |     ❌     |   ❌     |
| Works with non-LLM use-cases              | βœ…  |      ❌    |    ❌    |     ❌    |     ❌     |   βœ…     |

## 🌯 Why the name Burr?

Burr is named after [Aaron Burr](https://en.wikipedia.org/wiki/Aaron_Burr), founding father, third VP of the United States, and murderer/arch-nemesis of [Alexander Hamilton](https://en.wikipedia.org/wiki/Alexander_Hamilton).
What's the connection with Hamilton? This is [DAGWorks](www.dagworks.io)' second open-source library release after the [Hamilton library](https://github.com/dagworks-inc/hamilton)
We imagine a world in which Burr and Hamilton lived in harmony and saw through their differences to better the union. We originally
built Burr as a _harness_ to handle state between executions of Hamilton DAGs (because DAGs don't have cycles),
but realized that it has a wide array of applications and decided to release it more broadly.

## πŸ›£ Roadmap

While Burr is stable and well-tested, we have quite a few tools/features on our roadmap!

1. Testing & eval curation. Curating data with annotations and being able to export these annotations to create unit & integration tests.
2. Various efficiency/usability improvements for the core library (see [planned capabilities](https://burr.dagworks.io/concepts/planned-capabilities/) for more details). This includes:
   1. Fully typed state with validation
   2. First-class support for retries + exception management
   3. More integration with popular frameworks (LCEL, LLamaIndex, Hamilton, etc...)
   4. Capturing & surfacing extra metadata, e.g. annotations for particular point in time, that you can then pull out for fine-tuning, etc.
3. Cloud-based checkpointing/restart for debugging or production use cases (save state to db and replay/warm start, backed by a configurable database)
4. Tooling for hosted execution of state machines, integrating with your infrastructure (Ray, modal, FastAPI + EC2, etc...)
5. Storage integrations. More integrations with technologies like Redis, MongoDB, MySQL, etc. so you can run Burr on top of what you have available.

If you want to avoid self-hosting the above solutions we're building Burr Cloud. To let us know you're interested
 sign up [here](https://forms.gle/w9u2QKcPrztApRedA) for the waitlist to get access.

## 🀲 Contributing

We welcome contributors! To get started on developing, see the [developer-facing docs](https://burr.dagworks.io/contributing).

## πŸ‘ͺ Contributors

### Code contributions

Users who have contributed core functionality, integrations, or examples.
- [Elijah ben Izzy](https://github.com/elijahbenizzy)
- [Stefan Krawczyk](https://github.com/skrawcz)
- [Joseph Booth](https://github.com/jombooth)

### Bug hunters/special mentions
Users who have contributed small docs fixes, design suggestions, and found bugs
- [Thierry Jean](https://github.com/zilto)
- [Luke Chadwick](https://github.com/vertis)
- [Evans](https://github.com/sudoevans)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "burr",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "Elijah ben Izzy <elijah@dagworks.io>, Stefan Krawczyk <stefan@dagworks.io>",
    "keywords": "mlops, data, state-machine, llmops",
    "author": null,
    "author_email": "Elijah ben Izzy <elijah@dagworks.io>, Stefan Krawczyk <stefan@dagworks.io>",
    "download_url": "https://files.pythonhosted.org/packages/36/82/4342c234aa027097cc96f403a88c8669cf4cff12d5f88f5d9c9f49577cb9/burr-0.14.1.tar.gz",
    "platform": null,
    "description": "# Burr\n<div>\n<a href=\"https://discord.gg/6Zy2DwP4f3\" target=\"_blank\"><img src=\"https://img.shields.io/badge/Join-Burr_Discord-brightgreen?logo=discord\" alt=\"Burr Discord\"/></a>\n</div>\n\nBurr makes it easy to develop applications that make decisions based on state (chatbots, agents, simulations, etc...) from simple python building blocks.\nBurr includes a UI that can track/monitor those decisions in real time.\n\nLink to [documentation](https://burr.dagworks.io/). Quick (<3min) video intro [here](https://www.loom.com/share/a10f163428b942fea55db1a84b1140d8?sid=1512863b-f533-4a42-a2f3-95b13deb07c9).\nLonger [video intro & walkthrough](https://www.youtube.com/watch?v=rEZ4oDN0GdU). Blog post [here](https://blog.dagworks.io/p/burr-develop-stateful-ai-applications).\n\n## \ud83c\udfc3Quick start\n\nInstall from `pypi`:\n\n```bash\npip install \"burr[start]\"\n```\n\nThen run the UI server:\n\n```bash\nburr\n```\nThis will open up Burr's telemetry UI. It comes loaded with some default data so you can click around.\nIt also has a demo chat application to help demonstrate what the UI captures enabling you too see things changing in\nreal-time. Hit the \"Demos\" side bar on the left and select `chatbot`. To chat it requires the `OPENAI_API_KEY`\nenvironment variable to be set, but you can still see how it works if you don't have an API key set.\n\nNext, start coding / running examples:\n\n```bash\ngit clone https://github.com/dagworks-inc/burr && cd burr/examples/hello-world-counter\npython application.py\n```\nYou'll see the counter example running in the terminal, along with the trace being tracked in the UI.\nSee if you can find it.\n\nFor more details see the [getting started guide](https://burr.dagworks.io/getting_started/simple-example/).\n\n## \ud83d\udd29 How does Burr work?\n\nWith Burr you express your application as a state machine (i.e. a graph/flowchart).\nYou can (and should!) use it for anything where managing state can be hard. Hint: managing state is always hard!\nThis is true across a wide array of contexts, from building RAG applications to power a chatbot, to running ML parameter tuning/evaluation workflows,\nto conducting a complex forecasting simulation.\n\nBurr includes:\n\n1. A (dependency-free) low abstraction python library that enables you to build and manage state machines with simple python functions\n2. A UI you can use view execution telemetry for introspection and debugging\n3. A set of integrations to make it easier to persist state, connect to telemetry, and integrate with other systems\n\n![Burr at work](./chatbot.gif)\n\n## \ud83d\udcbb\ufe0f What can you do with Burr?\n\nBurr can be used to power a variety of applications, including:\n\n1. [A simple gpt-like chatbot](examples/multi-modal-chatbot)\n2. [A stateful RAG-based chatbot](examples/conversational-rag)\n3. [A machine learning pipeline](examples/ml-training)\n4. [A simulation](examples/simulation)\n\nAnd a lot more!\n\nUsing hooks and other integrations you can (a) integrate with any of your favorite vendors (LLM observability, storage, etc...), and\n(b) build custom actions that delegate to your favorite libraries (like [Hamilton](https://github.com/DAGWorks-Inc/hamilton)).\n\nBurr will _not_ tell you how to build your models, how to query APIs, or how to manage your data. It will help you tie all these together\nin a way that scales with your needs and makes following the logic of your system easy. Burr comes out of the box with a host of integrations\nincluding tooling to build a UI in streamlit and watch your state machine execute.\n\n## \ud83c\udfd7 Start Building\n\nSee the documentation for [getting started](https://burr.dagworks.io/getting_started/simple-example), and follow the example.\nThen read through some of the concepts and write your own application!\n\n## \ud83d\udcc3 Comparison against common frameworks\n\nWhile Burr is attempting something (somewhat) unique, there are a variety of tools that occupy similar spaces:\n\n| Criteria                                  | Burr | Langgraph | temporal | Langchain | Superagent | Hamilton |\n|-------------------------------------------|:---:|:----------:|:--------:|:---------:|:----------:|:--------:|\n| Explicitly models a state machine         | \u2705  |      \u2705    |    \u274c    |     \u274c    |     \u274c     |   \u274c     |\n| Framework-agnostic                        | \u2705  |      \u274c    |    \u2705    |     \u2705    |     \u274c     |   \u2705     |\n| Asynchronous event-based orchestration    | \u274c  |      \u274c    |    \u2705    |     \u274c    |     \u274c     |   \u274c     |\n| Built for core web-service logic          | \u2705  |      \u2705    |    \u274c    |     \u2705    |     \u2705     |   \u2705     |\n| Open-source user-interface for monitoring | \u2705  |      \u274c    |    \u274c    |     \u274c    |     \u274c     |   \u274c     |\n| Works with non-LLM use-cases              | \u2705  |      \u274c    |    \u274c    |     \u274c    |     \u274c     |   \u2705     |\n\n## \ud83c\udf2f Why the name Burr?\n\nBurr is named after [Aaron Burr](https://en.wikipedia.org/wiki/Aaron_Burr), founding father, third VP of the United States, and murderer/arch-nemesis of [Alexander Hamilton](https://en.wikipedia.org/wiki/Alexander_Hamilton).\nWhat's the connection with Hamilton? This is [DAGWorks](www.dagworks.io)' second open-source library release after the [Hamilton library](https://github.com/dagworks-inc/hamilton)\nWe imagine a world in which Burr and Hamilton lived in harmony and saw through their differences to better the union. We originally\nbuilt Burr as a _harness_ to handle state between executions of Hamilton DAGs (because DAGs don't have cycles),\nbut realized that it has a wide array of applications and decided to release it more broadly.\n\n## \ud83d\udee3 Roadmap\n\nWhile Burr is stable and well-tested, we have quite a few tools/features on our roadmap!\n\n1. Testing & eval curation. Curating data with annotations and being able to export these annotations to create unit & integration tests.\n2. Various efficiency/usability improvements for the core library (see [planned capabilities](https://burr.dagworks.io/concepts/planned-capabilities/) for more details). This includes:\n   1. Fully typed state with validation\n   2. First-class support for retries + exception management\n   3. More integration with popular frameworks (LCEL, LLamaIndex, Hamilton, etc...)\n   4. Capturing & surfacing extra metadata, e.g. annotations for particular point in time, that you can then pull out for fine-tuning, etc.\n3. Cloud-based checkpointing/restart for debugging or production use cases (save state to db and replay/warm start, backed by a configurable database)\n4. Tooling for hosted execution of state machines, integrating with your infrastructure (Ray, modal, FastAPI + EC2, etc...)\n5. Storage integrations. More integrations with technologies like Redis, MongoDB, MySQL, etc. so you can run Burr on top of what you have available.\n\nIf you want to avoid self-hosting the above solutions we're building Burr Cloud. To let us know you're interested\n sign up [here](https://forms.gle/w9u2QKcPrztApRedA) for the waitlist to get access.\n\n## \ud83e\udd32 Contributing\n\nWe welcome contributors! To get started on developing, see the [developer-facing docs](https://burr.dagworks.io/contributing).\n\n## \ud83d\udc6a Contributors\n\n### Code contributions\n\nUsers who have contributed core functionality, integrations, or examples.\n- [Elijah ben Izzy](https://github.com/elijahbenizzy)\n- [Stefan Krawczyk](https://github.com/skrawcz)\n- [Joseph Booth](https://github.com/jombooth)\n\n### Bug hunters/special mentions\nUsers who have contributed small docs fixes, design suggestions, and found bugs\n- [Thierry Jean](https://github.com/zilto)\n- [Luke Chadwick](https://github.com/vertis)\n- [Evans](https://github.com/sudoevans)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A state machine for data projects",
    "version": "0.14.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/dagworks-inc/burr",
        "Documentation": "https://github.com/dagworks-inc/burr",
        "Homepage": "https://github.com/dagworks-inc/burr",
        "Repository": "https://github.com/dagworks-inc/burr"
    },
    "split_keywords": [
        "mlops",
        " data",
        " state-machine",
        " llmops"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a813bd52b024c0645d787960ee67d28b18c1b5ce87b1a5991ef19f5890ef90ef",
                "md5": "231db01c8edf572c0267f19fee0706ad",
                "sha256": "63f18895d50cb24ef7e2d660ba4481b99b096294d0f1987f58fd900702838948"
            },
            "downloads": -1,
            "filename": "burr-0.14.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "231db01c8edf572c0267f19fee0706ad",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 4009301,
            "upload_time": "2024-05-03T21:56:54",
            "upload_time_iso_8601": "2024-05-03T21:56:54.954665Z",
            "url": "https://files.pythonhosted.org/packages/a8/13/bd52b024c0645d787960ee67d28b18c1b5ce87b1a5991ef19f5890ef90ef/burr-0.14.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "36824342c234aa027097cc96f403a88c8669cf4cff12d5f88f5d9c9f49577cb9",
                "md5": "65fe57c034ceb5ce6f7ce13a77e443a1",
                "sha256": "3c9c063d3770bcb830afe798405d8466ce431ac00ee56893f59709be24d7f063"
            },
            "downloads": -1,
            "filename": "burr-0.14.1.tar.gz",
            "has_sig": false,
            "md5_digest": "65fe57c034ceb5ce6f7ce13a77e443a1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 20963279,
            "upload_time": "2024-05-03T21:57:08",
            "upload_time_iso_8601": "2024-05-03T21:57:08.357557Z",
            "url": "https://files.pythonhosted.org/packages/36/82/4342c234aa027097cc96f403a88c8669cf4cff12d5f88f5d9c9f49577cb9/burr-0.14.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-03 21:57:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "dagworks-inc",
    "github_project": "burr",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "burr"
}
        
Elapsed time: 0.26311s