NimbleBox ChainFury: Unlocking the Power of Open Source Chaining
Introduction
NimbleBox's ChainFury is the robust open-source chaining engine that powers applications like Tune Chat and Tune Studio. Central to its design is a commitment to flexibility and performance, serving as a backbone for creating sophisticated Software 2.0 solutions.
Features and Capabilities
ChainFury and ChainFury Server
ChainFury splits its tasks between two primary components:
- ChainFury (
chainfury
): This package contains the core fury-engine responsible for executing Directed Acyclic Graphs (DAGs). It allows developers to construct complex workflows efficiently. - ChainFury Server (
chainfury_server
): This self-hosted server supports a user interface designed for easy interaction and management, making the setup intuitive and accessible.
These components work collaboratively to enable seamless data processing and workflow management.
Getting Started
For those interested in exploring the potential of ChainFury, a set of inspiring examples are available:
- Retrieval Augmented Generation (RAG): Interact with PDFs by loading them into ChainFury and asking questions, as explained in the RAG documentation.
- Image Generation with Stability: Create dynamic images using ChainFury’s stability APIs, detailed in the stability guide.
- Private Storage: Securely store your data on AWS S3, with comprehensive instructions provided in the privacy section.
Installation and Setup
Setting up ChainFury is straightforward, with clear instructions available for various setups:
Direct Installation
To install directly, use the following commands:
pip install chainfury
pip install chainfury_server
To launch the server, execute:
python3 -m chainfury_server
Using Docker
Running ChainFury using Docker simplifies the server management:
docker build . -f Dockerfile -t chainfury:latest
docker run -p 8000:8000 chainfury:latest
Environment variables can be configured via:
docker run --env ENV_KEY=ENV_VALUE -p 8000:8000 chainfury:latest
Detailed environment variables for customization are available for:
- Component-level configurations
chainfury
specific settingschainfury_server
settings
Building from Source
The source provides the full control for those looking to modify or better understand the engine:
- Clone the repository and activate a virtual environment:
git clone https://github.com/NimbleBoxAI/ChainFury cd ChainFury python3 -m venv venv source venv/bin/activate
- Install UI dependencies using
yarn
and build the frontend:sh build_ui.sh
- Install the necessary Python packages:
pip install -e . # For chainfury pip install -e server/. # For chainfury_server
- Start the server:
python3 -m chainfury_server
Access the user interface at localhost:8000 and log in using the defaults admin:admin
.
Testing and Contributions
ChainFury includes several tests for critical functionalities, such as the get_kv
function for retrieving values by keys. Run tests using:
python3 tests/main.py
As an open-source project, ChainFury welcomes contributions in various forms, including code improvements, new features, infrastructural enhancements, and documentation. Engage with the community on Discord to seek help or contribute.
Conclusion
NimbleBox ChainFury represents a powerful tool in open-source software development, offering flexibility, ease of use, and a strong community backing. Whether for seasoned developers or those beginning their journey into chaining engines, ChainFury provides a comprehensive solution to meet modern computational needs.