Skip to main content

Prompt in, analysis out — Python SDK for Quix.AI data-analysis runs

Project description

quix-ai-sdk

Prompt in, analysis out. One method launches a Quix.AI agent session: a sandboxed sub-agent writes fresh analysis code for your prompt, queries the lakehouse, and streams conclusions back.

from quix_ai_sdk import run

result = run("Compare sector times between the two fastest laps of the last session")
print(result)              # the agent's conclusions
result.activities          # typed log: tools called, code generated, queries run
result.session_id          # resume handle + audit id

Install

uv add quix-ai-sdk        # or: pip install quix-ai-sdk

Configuration (env only)

variable meaning
Quix__Portal__Api portal base URL
Quix__Workspace__Id workspace scope for the analysis sandbox
QUIX_TOKEN a user PAT — see below

QUIX_TOKEN must be a user PAT. Quix.AI sessions are user-owned — opening one requires a real user's PAT. The Quix__Sdk__Token that deployments auto-inject is a service token and cannot run Quix.AI sessions. Deployments that run analyses (e.g. automated post-race summaries) must therefore add QUIX_TOKEN as a secret. Missing vars raise MissingConfigError naming the variable.

Acting as a user

Web apps forwarding a logged-in user's token pass token= to run() or stream():

result = run("Summarize", token=request.user.quix_token)

The env QUIX_TOKEN is the default; token= is the only per-call override. When a real user triggers the run, pass their token — fall back to env QUIX_TOKEN only for headless/automated runs (attribution and permissions follow the token). Never log the token value or call args containing it.

Streaming

import asyncio
from quix_ai_sdk import stream, TextChunk, Done

async def main():
    async for event in stream("Find anomalies in brake temperature"):
        if isinstance(event, TextChunk):
            print(event.text, end="")
        elif isinstance(event, Done):
            print(f"\nsession: {event.session_id}")

asyncio.run(main())

Distilled events: TextChunk, ToolCalled, CodeGenerated, QueryRan, Progress, Failed, Done. Pass raw=True for wire-level SSE dicts.

Follow-ups

first = run("Summarize the session")
more = run("Expand on the tyre wear point", resume=first.session_id)

Provisioning (0.2): agents / knowledge / mcp

One-time setup of the AI resources your analyses run on. These live in submodules (agents, knowledge, mcp), not in the root namespace. Every write needs an org-admin user PAT (token= per call or env QUIX_TOKEN).

from quix_ai_sdk import agents, runs

agent_id = agents.ensure_analysis_agent(token=ORG_ADMIN_PAT)  # once per org
result = runs.run(f"Analyze test {test_id} ...", agent_id=agent_id)

ensure_analysis_agent() creates (or updates) an org agent with a curated, versioned system prompt shipped in-package: lakehouse query discipline, the delegate_task sandbox workflow, honest handling of missing data. Append app-specific rules with extra_prompt=. All ensure_* functions are idempotent and support dry_run=True previews. Full guide: docs/admin.md.

Failure model

  • Agent outcome → in the result: result.status == "failed", detail in result.error. Never raises.
  • Infrastructure → typed exceptions under QuixAIError: MissingConfigError, AuthError, RunTimeout, StreamInterrupted.
  • A dropped stream cancels the run server-side (platform behavior). The session survives: StreamInterrupted.session_id feeds resume=. The SDK never auto-retries — a retried run duplicates cost and side effects.

Logging

The SDK logs to stdlib logging under the quix_ai_sdk logger and never configures handlers. Suggested app-side setup:

import logging

handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter("%(asctime)s [%(levelname)-8s] [%(name)s] %(message)s"))
logging.getLogger("quix_ai_sdk").setLevel(logging.INFO)
logging.getLogger("quix_ai_sdk").addHandler(handler)

More runnable examples in examples/. Module docs in docs/.

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

quix_ai_sdk-0.2.1.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

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

quix_ai_sdk-0.2.1-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file quix_ai_sdk-0.2.1.tar.gz.

File metadata

  • Download URL: quix_ai_sdk-0.2.1.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quix_ai_sdk-0.2.1.tar.gz
Algorithm Hash digest
SHA256 af44f348b237f41ea50323a0489feb193ff7b8af67689808e84a2c54c12c4a73
MD5 f4eb20b4043a248e4b911e7c4c2a2cf4
BLAKE2b-256 28c79afea8fcf98e47f675440599275bee024ef780907bc65b0ac6cbb6ee6981

See more details on using hashes here.

File details

Details for the file quix_ai_sdk-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: quix_ai_sdk-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 30.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quix_ai_sdk-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9c2c984be28d491f7a2240a092fc7add35ac7928fd3bf412c83b5e4f638062f1
MD5 32b5452c01dab3d10b331aa42a3b88bb
BLAKE2b-256 9ade3abbcd0535856afa57df244b5517fd950d1ae24a838d4f4122c99d9d769b

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