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_versionorbuild_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/sqlURL - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3362ce324268a0f0ba48105e36925490c854cfef34ad6b62bc5e74ea7182a7e4
|
|
| MD5 |
faa420755a759f4de7125ef839f33786
|
|
| BLAKE2b-256 |
ba0ef1e7a27cc4de11c861b3ff05c080be4d329ad0fc5334355a6788389edc8f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
713163a2d6185e0baf50afacf3a3c46911f7ff7158e3213832f60ec2de0dee07
|
|
| MD5 |
4425cd30acf952d0623ea05167d23734
|
|
| BLAKE2b-256 |
0d55ee3e8bf4e0300d333e06e8cfa499adc9e049391477528688ac4788518105
|