Execute Program API
Introduction
Under the hood, PromptQL utilizes a set of built-in primitives, in conjunction with any custom business logic you've provided, to create small programs on top of your data.
These primitives pair relevant data or artifacts—represented as inputs
or data
—from your application with on-the-fly
and context-aware instructions
based on the thread between the user and PromptQL.
Summarize
summaries = executor.summarize(
instructions="""
Create a concise summary of each reservation focusing on:
- The restaurant name
- Any special notes or important details
Keep each summary to 1-2 sentences.
""",
inputs=reservation_texts
)
Extract
extracted_info = executor.extract(
json_schema=json_schema,
instructions="""
Extract any mentioned dietary requirements, special occasions, or seating preferences from the reservation notes.
For dietary requirements, include any allergies, restrictions, or preferences mentioned.
For special occasions, look for mentions of birthdays, anniversaries, celebrations etc.
For seating preferences, identify if they specifically requested indoor, outdoor, bar seating etc.
If any field is not mentioned, omit it from the output.
""",
inputs=notes_to_extract
)
Classify
classifications = executor.classify(
instructions="""
Categorize each restaurant based on its name and any available description.
A restaurant can belong to multiple categories.
Consider both the dining style (Fine Dining, Casual) and cuisine type.
Examples:
- A high-end Italian restaurant would be both "Fine Dining" and "Italian"
- A casual American pub would be both "Casual Dining" and "American"
""",
categories=categories,
allow_multiple=True,
inputs=unique_restaurants
)
Visualize
viz_result = executor.visualize(
instructions="""
Create an interactive bar chart showing the distribution of restaurant categories.
Requirements:
- Use a horizontal bar chart for better readability of category names
- Sort bars by count in descending order
- Use a pleasant color scheme (preferably blues or teals)
- Include hover tooltips showing exact count
- Add a clear title 'Restaurant Categories Distribution'
- Make the chart responsive to container width
- Include total number of restaurants in each category
""",
data=viz_data
)
Each primitive is a specialized tool designed to perform a specific task on your data. They're flexible, composable, and context-aware, letting you build intelligent workflows by combining natural language instructions with structured input.
As you add your own custom business logic, you're providing more specific tools to PromptQL.
Execute Program Endpoint
Execute a PromptQL program with your data.
Request
POST https://api.promptql.pro.hasura.io/execute_program
Headers
Content-Type: application/json
Request Body
{
"code": "<YOUR_PROMPTQL_GENERATED_CODE_HERE>",
"promptql_api_key": "<YOUR_API_KEY_HERE>",
"ai_primitives_llm": {
"provider": "hasura"
},
"ddn": {
"url": "https://<PROJECT_NAME>.ddn.hasura.app/v1/sql",
"headers": {}
},
"artifacts": []
}
Request Body Fields
Field | Type | Required | Description |
---|---|---|---|
code | string | Yes | The PromptQL program code to execute |
promptql_api_key | string | Yes | PromptQL API key created from project settings |
ai_primitives_llm | object | Yes | Configuration for the AI primitives LLM provider |
ddn | object | Yes | DDN configuration including URL and headers |
artifacts | array | Yes | List of artifacts to provide as context or initial state |
LLM Provider Options
The ai_primitives_llm
field supports the following providers:
- Hasura:
{
"provider": "hasura"
}
- Anthropic:
{
"provider": "anthropic",
"api_key": "<your anthropic api key>"
}
- OpenAI:
{
"provider": "openai",
"api_key": "<your openai api key>"
}
Artifacts
The artifacts
array can contain both text and table artifacts:
- Text Artifact:
{
"identifier": "my_text",
"title": "My Text Document",
"artifact_type": "text",
"data": "Text content here"
}
- Table Artifact:
{
"identifier": "my_table",
"title": "My Data Table",
"artifact_type": "table",
"data": [
{
"column1": "value1",
"column2": "value2"
}
]
}
Request DDN Auth
The ddn.headers
field can be used to pass any auth header information through to DDN. Read more about
auth with these APIs.