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 Retrieval-Augmented Generation (RAG) 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 ninebit-ciq

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(
    api_key="YOUR_API_KEY"
)

def on_done(error, data):
    if error:
        print(f"Task failed: {error}")
    else:
        print(f"Task succeeded: {str(data)}")

# 1. Ingest file as datasource for performing RAG
client.ingest_file(file="files/my_file.pdf", callback=on_done)

# 2. Ask your query
client.rag_query(query="What is axiom?", callback=on_done)

🧠 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(api_key="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.")

🔐 Authentication

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

Python SDK: NineBitCIQClient(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(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.4.tar.gz (9.0 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.4-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ninebit_ciq-1.0.4.tar.gz
  • Upload date:
  • Size: 9.0 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.4.tar.gz
Algorithm Hash digest
SHA256 8cfb3860fd4927adb405ee984aef8fe4f3190fc7ec606bd1ad927a62f05a8053
MD5 eadd5ea41ca0cb45ed7e6c8f498c57e7
BLAKE2b-256 63559a07a749bd4cee7a3c9878936d3605f8a02f71e36d4aa416833ed530ede5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ninebit_ciq-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.4 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0aac04c2c12afa5527cdfa859e4dda6e1799491d30ee5b7b82e4d510bde0b6da
MD5 e42167796a4241307f43615aeb98dca7
BLAKE2b-256 69fdce7fc5f305dabc59fbfcd8bd37c5137b76a4adbdee510eb3bfea56cecd1c

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