Skip to main content

Python SDK for Bleu AI workflow execution

Project description

Bleu AI Python SDK

A Python client library for interacting with Bleu AI workflows.

Installation

pip install bleuai

Quick Start

import asyncio
from bleuai import BleuAI

async def main():
    # Initialize the client with your API key
    client = BleuAI(api_key="your-api-key-here")
    
    # Run a workflow and wait for completion
    result = await client.run_workflow(
        workflow_id="your-workflow-uuid",
        inputs={
            "prompt": "Generate an image of a sunset over mountains"
        }
    )
    
    # Check if successful
    if result.is_completed:
        print("Workflow completed successfully!")
        print(f"Outputs: {result.outputs}")
    else:
        print(f"Workflow failed: {result.error}")
    
    # Close the client
    await client.close()

# Run the async function
asyncio.run(main())

Example

See example.py for a complete working example:

export BLEU_API_KEY="your-api-key"
python example.py

Usage

Basic Usage

The SDK provides a simple interface to run Bleu AI workflows:

from bleuai import BleuAI

# Create client
client = BleuAI(api_key="your-api-key")

# Run workflow (async)
result = await client.run_workflow(
    workflow_id="workflow-uuid",
    inputs={"key": "value"}
)

Synchronous Usage

For non-async environments, use the synchronous wrapper:

from bleuai import BleuAI

client = BleuAI(api_key="your-api-key")

# This creates an event loop internally
result = client.run_workflow_sync(
    workflow_id="workflow-uuid",
    inputs={"key": "value"}
)

Context Manager

The client can be used as an async context manager:

async with BleuAI(api_key="your-api-key") as client:
    result = await client.run_workflow(
        workflow_id="workflow-uuid",
        inputs={"prompt": "Hello, world!"}
    )

Handling Results

The WorkflowResult object provides convenient access to outputs:

result = await client.run_workflow(workflow_id="...", inputs={...})

# Check status
if result.is_completed:
    # Get all outputs
    all_outputs = result.outputs
    
    # Get output from specific node
    node_output = result.get_output(node_id="node-123")
    
    # Get outputs by type
    images = result.get_output(output_type="image")
    
elif result.is_failed:
    print(f"Error: {result.error}")

Error Handling

The SDK provides specific exception types for different error scenarios:

from bleuai import (
    BleuAI,
    AuthenticationError,
    WorkflowNotFoundError,
    InsufficientCreditsError,
    WorkflowExecutionError
)

try:
    client = BleuAI(api_key="your-api-key")
    result = await client.run_workflow(
        workflow_id="workflow-uuid",
        inputs={"prompt": "Generate something"}
    )
except AuthenticationError:
    print("Invalid API key")
except WorkflowNotFoundError:
    print("Workflow not found or no access")
except InsufficientCreditsError:
    print("Not enough credits to run workflow")
except WorkflowExecutionError as e:
    print(f"Workflow execution failed: {e}")

Timeout Configuration

You can configure the timeout for workflow execution:

# Wait up to 10 minutes for completion
result = await client.run_workflow(
    workflow_id="workflow-uuid",
    inputs={...},
    timeout=600.0  # seconds
)

Fire and Forget

To start a workflow without waiting for completion:

# Start workflow and return immediately
result = await client.run_workflow(
    workflow_id="workflow-uuid",
    inputs={...},
    wait_for_completion=False
)

print(f"Workflow started with job ID: {result.job_id}")

API Reference

BleuAI

Main client class for interacting with Bleu AI.

Constructor

BleuAI(
    api_key: str,
    base_url: str = "https://api.buildbleu.com",
    supabase_url: str = "...",
    supabase_anon_key: str = "..."
)

Methods

  • async run_workflow(workflow_id, inputs, wait_for_completion, timeout) - Run a workflow
  • run_workflow_sync(workflow_id, inputs, timeout) - Synchronous workflow execution
  • async close() - Close the client connection

WorkflowResult

Result object returned from workflow execution.

Attributes

  • job_id: str - Unique job identifier
  • status: WorkflowStatus - Current status (PENDING, RUNNING, COMPLETED, FAILED)
  • outputs: Optional[Dict] - Workflow outputs (when completed)
  • error: Optional[str] - Error message (when failed)

Methods

  • is_completed: bool - Check if workflow completed successfully
  • is_failed: bool - Check if workflow failed
  • get_output(node_id, output_type) - Get specific outputs

Requirements

  • Python 3.7+
  • httpx
  • supabase
  • realtime

License

MIT

Support

For support, please contact contact@buildbleu.com or visit https://buildbleu.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bleuai-0.1.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bleuai-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file bleuai-0.1.0.tar.gz.

File metadata

  • Download URL: bleuai-0.1.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bleuai-0.1.0.tar.gz
Algorithm Hash digest
SHA256 08bdad034641fe9e90068f7b80c6e7db19e7abee2a904d9409ad1c043d994145
MD5 a060c9a9d1977e7f1ed79e2d4729b654
BLAKE2b-256 52be34528ed1819c6185dfd29fd6ec6e0b55b1e8b5f2ad98789b3dda0577d997

See more details on using hashes here.

File details

Details for the file bleuai-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bleuai-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bleuai-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d478f34c90d2c12c609e01321b2a71450ac3daf9d4b085b9bc3c6c3cb7ef82c
MD5 2d0d6ebd01a3feae20d32944aef4c296
BLAKE2b-256 169376d12c1d484ad515a99352f055ba370173f9661defa3c6a1b39f1a102ea8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page