ObjectStackObjectStack

Nlq

Nlq protocol schemas

Natural Language Query (NLQ) Protocol

Transforms natural language queries into ObjectQL AST (Abstract Syntax Tree).

Enables business users to query data using natural language instead of writing code.

Source: packages/spec/src/ai/nlq.zod.ts

TypeScript Usage

import { Entity, FieldSynonymConfig, NLQAnalytics, NLQFieldMapping, NLQModelConfig, NLQParseResult, NLQRequest, NLQResponse, NLQTrainingExample, QueryContext, QueryIntent, QueryTemplate, Timeframe } from '@objectstack/spec/ai';
import type { Entity, FieldSynonymConfig, NLQAnalytics, NLQFieldMapping, NLQModelConfig, NLQParseResult, NLQRequest, NLQResponse, NLQTrainingExample, QueryContext, QueryIntent, QueryTemplate, Timeframe } from '@objectstack/spec/ai';

// Validate data
const result = Entity.parse(data);

Entity

Properties

PropertyTypeRequiredDescription
typeEnum<'object' | 'field' | 'value' | 'operator' | 'function' | 'timeframe'>
textstringOriginal text from query
valueanyNormalized value
confidencenumberConfidence score
spanany[]optionalCharacter span in query

FieldSynonymConfig

Properties

PropertyTypeRequiredDescription
objectstringObject name
fieldstringField name
synonymsstring[]Natural language synonyms
examplesstring[]optionalExample queries using synonyms

NLQAnalytics

Properties

PropertyTypeRequiredDescription
totalQueriesinteger
successfulQueriesinteger
failedQueriesinteger
averageConfidencenumber
intentDistributionRecord<string, integer>Count by intent type
topQueriesObject[]
averageParseTimenumberAverage parse time in milliseconds
averageExecutionTimenumberoptional
lowConfidenceQueriesObject[]
startDatestringISO timestamp
endDatestringISO timestamp

NLQFieldMapping

Properties

PropertyTypeRequiredDescription
naturalLanguagestringNL field name (e.g., "customer name")
objectFieldstringActual field name (e.g., "account.name")
objectstringObject name
fieldstringField name
confidencenumber

NLQModelConfig

Properties

PropertyTypeRequiredDescription
modelIdstringModel from registry
systemPromptstringoptionalSystem prompt override
includeSchemabooleanInclude object schema in prompt
includeExamplesbooleanInclude examples in prompt
enableIntentDetectionboolean
intentThresholdnumber
enableEntityRecognitionboolean
entityRecognitionModelstringoptional
enableFuzzyMatchingbooleanFuzzy match field names
fuzzyMatchThresholdnumber
enableTimeframeDetectionboolean
defaultTimeframestringoptionalDefault timeframe if not specified
enableCachingboolean
cacheTTLintegerCache TTL in seconds

NLQParseResult

Properties

PropertyTypeRequiredDescription
originalQuerystring
intentEnum<'select' | 'aggregate' | 'filter' | 'sort' | 'compare' | 'trend' | 'insight' | 'create' | 'update' | 'delete'>
intentConfidencenumber
entitiesObject[]
targetObjectstringoptionalPrimary object to query
fieldsObject[]optional
timeframeObjectoptional
astRecord<string, any>Generated ObjectQL AST
confidencenumberOverall confidence
ambiguitiesObject[]optionalDetected ambiguities requiring clarification
alternativesObject[]optional

NLQRequest

Properties

PropertyTypeRequiredDescription
querystringNatural language query
contextObjectoptional
includeAlternativesbooleanInclude alternative interpretations
maxAlternativesinteger
minConfidencenumberMinimum confidence threshold
executeQuerybooleanExecute query and return results
maxResultsintegeroptionalMaximum results to return

NLQResponse

Properties

PropertyTypeRequiredDescription
parseResultObject
resultsRecord<string, any>[]optionalQuery results
totalCountintegeroptional
executionTimenumberoptionalExecution time in milliseconds
needsClarificationbooleanWhether query needs clarification
tokensObjectoptionalToken usage for this query
costnumberoptionalCost for this query in USD
suggestionsstring[]optionalQuery refinement suggestions

NLQTrainingExample

Properties

PropertyTypeRequiredDescription
querystringNatural language query
contextObjectoptional
expectedIntentEnum<'select' | 'aggregate' | 'filter' | 'sort' | 'compare' | 'trend' | 'insight' | 'create' | 'update' | 'delete'>
expectedObjectstringoptional
expectedASTRecord<string, any>Expected ObjectQL AST
categorystringoptionalExample category
tagsstring[]optional
notesstringoptional

QueryContext

Properties

PropertyTypeRequiredDescription
userIdstringoptional
userRolestringoptional
currentObjectstringoptionalCurrent object being viewed
currentRecordIdstringoptionalCurrent record ID
conversationHistoryObject[]optional
defaultLimitinteger
timezonestring
localestring

QueryIntent

Allowed Values

  • select
  • aggregate
  • filter
  • sort
  • compare
  • trend
  • insight
  • create
  • update
  • delete

QueryTemplate

Properties

PropertyTypeRequiredDescription
idstring
namestringTemplate name (snake_case)
labelstring
patternstringQuery pattern with placeholders
variablesObject[]
astTemplateRecord<string, any>AST template with variable placeholders
categorystringoptional
examplesstring[]optional
tagsstring[]optional

Timeframe

Properties

PropertyTypeRequiredDescription
typeEnum<'absolute' | 'relative'>
startstringoptionalStart date (ISO format)
endstringoptionalEnd date (ISO format)
relativeObjectoptional
textstringOriginal timeframe text

On this page