Skip to main content

NLP interface for pypreql.

Project description

PreQL NLP

Natural language interface for generating PreQL query objects.

PreQL is easier for a large language model to interact with as it requires only extract relevant concepts from a text, classifying them as metrics or dimensions, and mapping them to what is available in a model.

This makes it more testable and less prone to hallucination than generating SQL directly.

Requires setting the following environment variables

  • OPENAI_API_KEY
  • OPENAI_MODEL

Recommended to use "gpt-3.5-turbo" or higher as the model.

Examples

Basic BQ example

from trilogy_public_models import models
from preql import Executor, Dialects
from preql_nlp import build_query

# define the model we want to parse
environment = models["bigquery.stack_overflow"]

# set up preql executor
# default bigquery executor requires local default credentials configured
executor = Dialects.BIGQUERY.default_executor(environment= environment)

# build a query off text and the selected model
processed_query = build_query(
    "How many questions are asked per year?",
    environment,
)

# make sure we got reasonable outputs
for concept in processed_query.output_columns:
    print(concept.name)

# and run that to get our answer
results = executor.execute_query(processed_query)
for row in results:
    print(row)

Don't Expecct Perfection

Results are non-determistic and may not always be accurate.

# generated from prompt: What is Taylor Swift's birthday? How many questions were asked on that day in 2020?
SELECT
    question.count,
    answer.creation_date.year,
    question.creation_date.year,
    question.creation_date,
WHERE
    question.creation_date.year = 1989
ORDER BY
    question.count desc,

    question.count desc

LIMIT 100;

Setting Up Your Environment

Recommend that you work in a virtual environment with requirements from both requirements.txt and requirements-test.txt installed. The latter is necessary to run tests (surprise).

Pypreql-nlp is python 3.10+

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

pypreql_nlp-0.0.18.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

pypreql_nlp-0.0.18-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file pypreql_nlp-0.0.18.tar.gz.

File metadata

  • Download URL: pypreql_nlp-0.0.18.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for pypreql_nlp-0.0.18.tar.gz
Algorithm Hash digest
SHA256 05c0041dbbf0b4c62efef30dda701416b8d3a5c05c819245f09b785cc3bb7104
MD5 3d02002f5046029c7263bca5739fbb5c
BLAKE2b-256 e1697a98166d9ef51bad7c0f13b7acabd96e39b96504f8d02ea06554e7b40a7e

See more details on using hashes here.

File details

Details for the file pypreql_nlp-0.0.18-py3-none-any.whl.

File metadata

  • Download URL: pypreql_nlp-0.0.18-py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for pypreql_nlp-0.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 107eda0f5f816d0242684e1e0206524dec1e5124f899f23a52a3239f164725d7
MD5 f96799529aebf38907ba260a1e149498
BLAKE2b-256 01e30f2302e178ad312e8081a6481dc17c0751a7be66ee73102035bed1c00d23

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page