Skip to main content

Python SDK for PromptQL Natural Language API

Project description

PromptQL Natural Language API SDK for Python

A Python SDK for interacting with the PromptQL Natural Language API.

Installation

pip install promptql-api-sdk

Or with Poetry:

poetry add promptql-api-sdk

Features

  • Full support for the PromptQL Natural Language API (v1 and v2)
  • Type-safe interface with Pydantic models
  • Support for streaming responses
  • Conversation management
  • Support for all LLM providers (Hasura, Anthropic, OpenAI)
  • Support for build-based configuration (v2 API)

Quick Start

v2 API (Recommended)

The v2 API uses build-based configuration and is the recommended approach:

from promptql_api_sdk import PromptQLClient

# Initialize the client with build version
client = PromptQLClient(
    api_key="your-promptql-api-key",
    build_version="your-build-version",  # or use build_id=UUID("your-build-id")
    timezone="America/Los_Angeles",
)

# Send a simple query
response = client.query("What is the average temperature in San Francisco?")
print(response.assistant_actions[0].message)

# Use streaming for real-time responses
for chunk in client.query("Tell me about the weather in New York", stream=True):
    if hasattr(chunk, "message") and chunk.message:
        print(chunk.message, end="", flush=True)

Note: To use applied build, do not specify build_version or build_id.

client = PromptQLClient(
    api_key="your-promptql-api-key",
    timezone="America/Los_Angeles",
)

v1 API (Legacy)

The v1 API requires DDN /v1/sql URL and explicit LLM provider configuration:

from promptql_api_sdk import PromptQLClient
from promptql_api_sdk.types.models import HasuraLLMProvider

# Initialize the client
client = PromptQLClient(
    api_key="your-promptql-api-key",
    ddn_url="your-ddn-url/v1/sql",
    llm_provider=HasuraLLMProvider(), # Required for v1 API
    timezone="America/Los_Angeles",
)

# Send a simple query
response = client.query("What is the average temperature in San Francisco?")
print(response.assistant_actions[0].message)

Private DDN

If you are using a private DDN, you need to provide the base URL for the PromptQL API:

client = PromptQLClient(
    api_key="your-promptql-api-key",
    build_version="your-build-version",
    timezone="America/Los_Angeles",
    api_base_url="https://promptql.fqdn.hasura.app/api",
)

Note: The api_base_url should not include the /query endpoint.

For more details refer to the PromptQL API Endpoint documentation.

Conversation Management

The SDK provides a Conversation class to help manage multi-turn conversations:

# Create a conversation
conversation = client.create_conversation(
    system_instructions="You are a helpful assistant that provides weather information."
    # Note: system_instructions are ignored in v2 API as they come from build's PromptQL config
)

# Send messages in the conversation
response = conversation.send_message("What's the weather like in London?")
print(response.message)

# Send a follow-up message
response = conversation.send_message("How about tomorrow?")
print(response.message)

# Get all artifacts created during the conversation
artifacts = conversation.get_artifacts()

LLM Provider Configuration (v1 API only)

The SDK supports multiple LLM providers for v1 API:

from promptql_api_sdk.types.models import HasuraLLMProvider, AnthropicLLMProvider, OpenAILLMProvider

# Hasura (default)
hasura_provider = HasuraLLMProvider()

# Anthropic
anthropic_provider = AnthropicLLMProvider(api_key="your-anthropic-api-key")

# OpenAI
openai_provider = OpenAILLMProvider(api_key="your-openai-api-key")

# Use with the client (v1 API only)
client = PromptQLClient(
    api_key="your-promptql-api-key",
    ddn_url="your-ddn-url/v1/sql",
    llm_provider=anthropic_provider,
)

Note: In v2 API, LLM configuration is managed through the DDN build's PromptQL settings.

API Version Differences

v2 API (Recommended)

  • Uses build-based configuration (build_version or build_id) (optional, uses applied build if not specified)
  • LLM configuration and system instructions come from build's PromptQL config

v1 API (Legacy)

  • Uses direct DDN /v1/sql URL
  • Requires explicit LLM provider configuration
  • System instructions specified in requests

Error Handling

from promptql_api_sdk import PromptQLClient
from promptql_api_sdk.exceptions import PromptQLAPIError

client = PromptQLClient(...)

try:
    response = client.query("What is the weather like?")
except PromptQLAPIError as e:
    print(f"API Error: {e}")

License

MIT

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

promptql_api_sdk-0.2.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

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

promptql_api_sdk-0.2.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file promptql_api_sdk-0.2.0.tar.gz.

File metadata

  • Download URL: promptql_api_sdk-0.2.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.5 Linux/6.15.7-arch1-1

File hashes

Hashes for promptql_api_sdk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3362ce324268a0f0ba48105e36925490c854cfef34ad6b62bc5e74ea7182a7e4
MD5 faa420755a759f4de7125ef839f33786
BLAKE2b-256 ba0ef1e7a27cc4de11c861b3ff05c080be4d329ad0fc5334355a6788389edc8f

See more details on using hashes here.

File details

Details for the file promptql_api_sdk-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: promptql_api_sdk-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.5 Linux/6.15.7-arch1-1

File hashes

Hashes for promptql_api_sdk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 713163a2d6185e0baf50afacf3a3c46911f7ff7158e3213832f60ec2de0dee07
MD5 4425cd30acf952d0623ea05167d23734
BLAKE2b-256 0d55ee3e8bf4e0300d333e06e8cfa499adc9e049391477528688ac4788518105

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