Skip to main content

Thin client for interacting with NineBit CIQ backend

Project description

🧠 NineBit CIQ Python SDK

Version License

Official Python client for interacting with NineBit CIQ, a workflow orchestration platform for rapid prototyping of AI/ML ideas using enterprise data and open-source models.


🚀 Features

  • 🔐 Auth via API Key (X-API-Key header)
  • ⚙️ Trigger & track workflows (synchronously or asynchronously)
  • 🔄 Get live workflow status
  • 🧵 Non-blocking execution via threads
  • 🧰 CLI support for easy experimentation
  • 📦 Lightweight, synchronous, and logging-enabled

📦 Installation

pip install ciq-py-client

Or clone and install locally:

git clone https://github.com/NineBit-Computing/ciq-py-client.git
cd ciq-py-client
pip install .

🧪 Quickstart (Python)

from ninebit_ciq import NineBitCIQClient

client = NineBitCIQClient(
    base_url="https://api.ciq.ninebit.in",
    api_key="YOUR_API_KEY"
)

# 1. Fetch design time workflow JSON
workflow = client.get_design_time_workflow()
print(workflow)

# 2. Trigger a new workflow
wf_id = client.trigger_workflow({"input": "your data here"})
print("Triggered Workflow ID:", wf_id)

# 3. Wait until the workflow completes
result = client.wait_for_completion(wf_id)
print("Final Result:", result)

🧠 Non-Blocking Workflow Monitoring

CIQ workflows are asynchronous — they may take time to complete. You can track them without blocking the main thread.

▶ Python (Threaded)

import threading
from ninebit_ciq import NineBitCIQClient

def on_complete(result):
    print("Workflow finished:", result)

def wait_async(client, wf_id):
    result = client.wait_for_completion(wf_id)
    on_complete(result)

client = NineBitCIQClient("https://api.ciq.ninebit.in", "YOUR_API_KEY")
wf_id = client.trigger_workflow({"input": "data"})

threading.Thread(target=wait_async, args=(client, wf_id)).start()
print("Main thread is free to do other work.")

🖥️ CLI Usage

The SDK also includes a simple CLI for rapid experiments:

# Show design-time workflow JSON
ciq-cli --base-url https://api.ciq.ninebit.in --api-key YOUR_API_KEY get-workflow

# Trigger a workflow
ciq-cli --base-url https://api.ciq.ninebit.in --api-key YOUR_API_KEY trigger-workflow --data '{"input": "your data"}'

# Check workflow status (blocking)
ciq-cli --base-url https://api.ciq.ninebit.in --api-key YOUR_API_KEY get-status --wf-id YOUR_WF_ID

# Check workflow status (non-blocking)
ciq-cli --base-url https://api.ciq.ninebit.in --api-key YOUR_API_KEY get-status --wf-id YOUR_WF_ID --async_mode

🔐 Authentication

Pass your API Key using the X-API-Key header:

Python SDK: NineBitCIQClient(base_url, api_key) CLI: --api-key YOUR_API_KEY

📚 SDK Reference

Method Description
get_design_time_workflow() Fetches the base workflow configuration
trigger_workflow(data: dict) Triggers a new workflow and returns wf_id
get_workflow_status(wf_id) Gets the current status of a workflow
wait_for_completion(wf_id, interval=5, timeout=300) Polls until the workflow completes

🛠️ Logging

You can control logging verbosity:

from ninebit_ciq import NineBitCIQClient
import logging

client = NineBitCIQClient(base_url, api_key, log_level=logging.INFO)

📁 Project Structure

ciq-py-client/
├── src/ninebit_ciq/
│ ├── client.py # Core SDK logic
│ ├── logger.py # Logger setup
│ ├── cli.py # CLI interface
│ └── **init**.py # Version info
├── examples/usage.py
├── examples/usage_with_thread.py
├── README.md
├── setup.py
└── version.txt

📄 License

MIT License © NineBit Computing

✉️ Contact

Questions? Reach out via ninebit.in or raise an issue in the GitHub repo.

Contributing

While we value open-source contributions to this SDK, the code is generated programmatically. Additions made directly would have to be moved over to our generation code, otherwise they would be overwritten upon the next generated release. Feel free to open a PR as a proof of concept, but know that we will not be able to merge it as-is. We suggest opening an issue first to discuss with us!

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

ninebit_ciq-1.0.0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

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

ninebit_ciq-1.0.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file ninebit_ciq-1.0.0.tar.gz.

File metadata

  • Download URL: ninebit_ciq-1.0.0.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ninebit_ciq-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3aa5b837fae1e721669d63f124a4c3e4832c0e52f5071b3903ec307f463557ca
MD5 563b3d7aa2cc7621f5737e4412c8334d
BLAKE2b-256 b3f315da0e4745169a2b9c1d8c2da8579c29cf415cf986a236126f7b46215852

See more details on using hashes here.

File details

Details for the file ninebit_ciq-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ninebit_ciq-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ninebit_ciq-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 280d738e62c5c2b7a2a732501a49b94825fd92668bf478b48e4bfe125fcab6ca
MD5 f0e68d3a2598ca128f7bd8bc273bf374
BLAKE2b-256 4bf36f1482179cd02278914712cb0a4e40ad3d928cf872a7eefe40b580ae1e77

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