A library for orchestrating AI workflows.
Project description
GenFlow
Description
GenFlow is an innovative AI workflow engine, designed to integrate seamlessly with a node-based web interface. It enables users to orchestrate complex workflows involving various AI models for generating multimedia content, including images, text, audio, and video, all within a single, unified platform.
Features
- Diverse AI Model Integration: Effortlessly combine a broad spectrum of AI models.
- Multimedia Content Generation: Create images, text, audio, and video within the same workflow.
- Flexible Execution Environments: Supports both local and remote execution options.
- Comprehensive Platform Support: Utilize models from leading platforms like Huggingface, Replicate, and OpenAI.
- Advanced Database Integration: Leverage support for vector databases to enhance your workflows.
- ComfyUI Workflows: Incorporate ComfyUI workflows for enhanced user interaction.
- Retrieval Augmented Generation: Implement RAG for sophisticated data retrieval and generation.
- Serverless GPU Deployment: Easily deploy workflows on serverless GPU platforms, including modal.com, for scalable processing power.
Installation
GenFlow supports various Python environments, including CPython and PyPy. The installation instructions provided below cater to both environments for maximum compatibility.
For CPython (default Python implementation)
pip install genflow-lib
Usage
To get started with GenFlow:
genflow setup
Execution
- GenFlow Node Editor: Install the GenFlow Node Editor for an intuitive, graphical interface to design and manage workflows.
- Command Line Execution: Alternatively, execute workflows directly from the command line for automation and scripting purposes.
Implementing Nodes
New nodes can be added by subclassing GenflowNode.
Node properties are defined using class fields with type annotations.
The node operation is defined in the process method, which takes a context object, allowing I/O amongst other operations.
class MyNode(GenflowNode):
a: str = ""
b: str = ""
async def process(self, context: ProcessingContext) -> str:
return self.a + self.b
Environment Variables
Configuration can be passes as environment variables, or from configuration
files. A dot env (.env) file will be read if present in the working dirctory.
General Configuration
| Variable | Description | Default |
|---|---|---|
ASSET_BUCKET |
S3 bucket for storing asset files | "images" |
TEMP_BUCKET |
S3 bucket for storing temporary files | "temp" |
COMFY_FOLDER |
Location of ComfyUI folder (optional) | None |
ENV |
Environment mode ("development" or "production") |
"development" |
LOG_LEVEL |
Logging level | "INFO" |
AWS_REGION |
AWS region | "us-east-1" |
GENFLOW_API_URL |
URL of the Genflow API server | "http://localhost:8000/api" |
Database Configuration
| Variable | Description | Default |
|---|---|---|
DB_PATH |
Path to the SQLite database file | "./data/genflow.db" |
AWS Configuration
| Variable | Description | Default |
|---|---|---|
AWS_ACCESS_KEY_ID |
AWS access key ID | None |
AWS_SECRET_ACCESS_KEY |
AWS secret access key | None |
DYNAMO_ENDPOINT_URL |
DynamoDB endpoint URL (for local development) | None |
DYNAMO_REGION |
DynamoDB region | AWS_REGION |
DYNAMO_ACCESS_KEY_ID |
DynamoDB access key ID | AWS_ACCESS_KEY_ID |
DYNAMO_SECRET_ACCESS_KEY |
DynamoDB secret access key | AWS_SECRET_ACCESS_KEY |
S3_ENDPOINT_URL |
S3 endpoint URL (for local development) | None |
S3_ACCESS_KEY_ID |
S3 access key ID | AWS_ACCESS_KEY_ID |
S3_SECRET_ACCESS_KEY |
S3 secret access key | AWS_SECRET_ACCESS_KEY |
S3_REGION |
S3 region | AWS_REGION |
API Keys and Tokens
| Variable | Description |
|---|---|
OPENAI_API_KEY |
OpenAI API key (optional) |
HF_TOKEN |
Hugging Face token (optional) |
REPLICATE_API_TOKEN |
Replicate API token (optional) |
CHROMA_TOKEN |
Chroma token |
NGROK_TOKEN |
ngrok token |
OAuth Configuration
| Variable | Description |
|---|---|
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
Other Configuration
| Variable | Description |
|---|---|
WORKER_URL |
URL of the worker server |
CHROMA_URL |
URL of the Chroma server |
Setup Files
The following files are used for storing settings and secrets:
settings.yaml: Stores general settingssecrets.yaml: Stores secret values (API keys, tokens, etc.)
The location of these files depends on the operating system:
- Linux/macOS:
~/.config/genflow/ - Windows:
%APPDATA%\genflow\
If the files don't exist, default values will be used.
API Endpoints
| Endpoint | Method | Description | Query Key | Query Value | Body Key | Body Value |
|---|---|---|---|---|---|---|
/api/assets/ |
GET | Returns all assets for a given user or workflow. | parent_id |
string, nullable | - | - |
content_type |
string, nullable | - | - | |||
cursor |
string, nullable | - | - | |||
page_size |
number, nullable | - | - | |||
/api/assets/ |
POST | Create a new asset. | - | - | workflow_id |
string, nullable |
| - | - | parent_id |
string, nullable | |||
| - | - | name |
string | |||
| - | - | content_type |
string | |||
/api/assets/{id} |
GET | Returns the asset for the given id. | - | - | - | - |
/api/assets/{id} |
PUT | Updates the asset for the given id. | - | - | name |
string, nullable |
| - | - | parent_id |
string | |||
| - | - | status |
string, nullable | |||
| - | - | content_type |
string, nullable | |||
/api/assets/{id} |
DELETE | Deletes the asset for the given id. | - | - | - | - |
/api/jobs/{id} |
GET | Returns the status of a job. | - | - | - | - |
/api/jobs/ |
GET | Returns all assets for a given user or workflow. | workflow_id |
string, nullable | - | - |
cursor |
string, nullable | - | - | |||
page_size |
number, nullable | - | - | |||
/api/jobs/ |
POST | Run | - | - | job_type |
string, default: 'workflow' |
| - | - | params |
unknown | |||
| - | - | workflow_id |
string | |||
| - | - | user_id |
string | |||
| - | - | auth_token |
string | |||
| - | - | env |
Record<string, never>, nullable | |||
| - | - | graph |
Graph | |||
/api/auth/validate-token |
POST | Checks if the given token is valid. | - | - | token |
string |
/api/auth/login |
POST | Logs a user in with one time passcode. Returns an auth token that can be used for future requests. | - | - | email |
string |
| - | - | passcode |
string | |||
/api/auth/signup |
POST | Creates a new user for given email address. Returns an auth token that can be used for future requests. | - | - | email |
string |
/api/auth/oauth/login |
POST | Oauth Login | - | - | redirect_uri |
string |
| - | - | provider |
OAuthProvider | |||
/api/auth/oauth/callback |
POST | Oauth Callback | - | - | provider |
OAuthProvider |
| - | - | state |
string | |||
| - | - | authorization_response |
string | |||
| - | - | redirect_uri |
string | |||
/api/nodes/dummy |
GET | Returns a dummy node. | - | - | - | - |
/api/nodes/metadata |
GET | Returns a list of all node metadata. | - | - | - | - |
| `/api |
Contribution
We welcome contributions from the community! To contribute to GenFlow, please adhere to our contribution guidelines. Your efforts help us improve and evolve this project.
License
GenFlow is made available under the terms of the GPL3 License, promoting open-source collaboration and sharing.
Contact
For inquiries, suggestions, or contributions, please reach out to the core team:
- Matthias Georgi
- David Buerer
- Severin Schwanck
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file genflow_lib-0.1.9.tar.gz.
File metadata
- Download URL: genflow_lib-0.1.9.tar.gz
- Upload date:
- Size: 10.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df1e7bd03fdddcbdeaf75b10815b4d9cf58087b4a96696a197b7e67f8ca3b333
|
|
| MD5 |
2e97c9028012efe4ffdc3a474400be1f
|
|
| BLAKE2b-256 |
d69c6c3ecde6c099ffc8d61ca590ebf66b1c3da31085eeb705b6b4e5d85d92e6
|
File details
Details for the file genflow_lib-0.1.9-py3-none-any.whl.
File metadata
- Download URL: genflow_lib-0.1.9-py3-none-any.whl
- Upload date:
- Size: 11.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a34897e5e2968edd93150d2c7832fb018b8ac32f046abe3e2e47ba23cfc5c68
|
|
| MD5 |
d7e659cb047950b7aa886d258ff32a34
|
|
| BLAKE2b-256 |
4cff6f688fb508623c78d74d0b1986d3ada0d21317f18b96cc3866b3ca8dd9e9
|