Make sure AI model outputs are consistent
Project description
consisTent is a full blows testing framework for prompts. The goal of consisTent is to create reproducible tests for LLM based applications regardless of the FM used.
Installation
pip install consistent
Concepts
consisTent comes with 2 types of validators (testers)
syntactic validators
This type of validators is used to do static assertions of the LLM output. for example validating if the output is in a certain JSON format and assert the schema. You can also use syntactic validators to assert something is a valid piece of code (JS or Python are supported at the moment)
Syntactic validators are used to assert the FORM of the response
example
consisTent.JsValidator().validate('console.log("Im a JS program!")')
consisTent.PyValidator().validate('print("Im a python program!")')
consisTent.JsonValidator().validate('{"question": "is this a valid JSON?"}')
syntactic validators
This type of validators is used to assert the quality of the response with more "soft" parameters for example, check if something is factually correct, check for hallucinations, check for labels like "funny"/"interesting" etc... another type of semantic validator is the semantic consistency validator where you provide a seed of validated input and a threshold, and the test will assert the semantic distance of the new output from the seed cluster.
Semantic validators are used to assert the CONTENT of the response
example
import consisTent
seed = [
"the cat sat on the mat",
"the feline layed on the carpet",
]
consisTent.ConsistencyValidator(
seed_size=2,
consistency_threshold=0.5,
).validate(
seed=seed,
model_output="the dog sat on the mat",
)
Label Test
OPENAI_KEY = "XXXXXXXXXXXXXXX"
consisTent.LabelsValidator(openai_key=OPENAI_KEY).validate(
labels=[
"funny",
"short",
"about rabbits",
],
model_output="What do you call a rabbit that tells jokes? A funny bunny!",
)
facts validation
OPENAI_KEY = "XXXXXXXXXXXXXXX"
consisTent.FactsValidator(openai_key=OPENAI_KEY).validate(
facts=["this car weighs 1000KG"],
model_output="I can lift this car",
)
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
Built Distribution
File details
Details for the file consistent-0.0.10.tar.gz
.
File metadata
- Download URL: consistent-0.0.10.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee674a4721eb23e8aea3c65d3ae17abb9725e7c1cc127cc4747d7333e0059e78 |
|
MD5 | 23d0ff729eba2364c2e9516e91401735 |
|
BLAKE2b-256 | d563d00eb436be523b5a88f96316032e6f545f2802814c373079651dd85791f7 |
File details
Details for the file consistent-0.0.10-py3-none-any.whl
.
File metadata
- Download URL: consistent-0.0.10-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97312c05b6eaa77a8fa3843929801b1f5c0ed56d34778d3aafeec6043ee2cdaa |
|
MD5 | 28d0a2b534bb24b040df50ee0e3a10b7 |
|
BLAKE2b-256 | bf70aa4691b4bdc59de3289e796bf0563f6a7a8907814446c8be36eaf06053ef |