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
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
Hashes for pypreql_nlp-0.0.11-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d76badca09ea7020d11fea8705696eaad41d6a8ddf85e3128f863f0084b6d354 |
|
MD5 | 1566a35b1c5e49d6e7ece61d055473a6 |
|
BLAKE2b-256 | d77eca65d577735a01f45dccf85c385d6b8d21d457a8c6e387070b932c17dce2 |