CLI for evaluating large language models with Quotient
Project description
quotientai
Overview
quotientai is an SDK and CLI built to manage artifacts (prompts, datasets), and run evaluations on Quotient.
Installation
pip install quotientai
Usage
Create an API key on Quotient and set it as an environment variable called QUOTIENT_API_KEY. Then follow the examples below or see our docs for a more comprehensive walkthrough.
Examples
Create a prompt:
from quotientai import QuotientAI
quotient = QuotientAI()
new_prompt = quotient.prompts.create(
name="customer-support-inquiry",
system_prompt="You are a helpful assistant.",
user_prompt="How can I assist you today?"
)
print(new_prompt)
Create a dataset:
from quotientai import QuotientAI
quotient = QuotientAI()
new_dataset = quotient.datasets.create(
name="my-sample-dataset"
description="My first dataset",
rows=[
{"input": "Sample input", "expected": "Sample output"},
{"input": "Another input", "expected": "Another output"}
]
)
print(new_dataset)
Create a log with hallucination detection: Log an event with hallucination detection. This will create a log event in Quotient and perform hallucination detection on the model output, input, and documents. This is a fire and forget operation, so it will not block the execution of your code.
Additional examples can be found in the examples directory.
from quotientai import QuotientAI
quotient = QuotientAI()
quotient_logger = quotient.logger.init(
# Required
app_name="my-app",
environment="dev",
# dynamic labels for slicing/dicing analytics e.g. by customer, feature, etc
tags={"model": "gpt-4o", "feature": "customer-support"},
hallucination_detection=True,
inconsistency_detection=True,
)
# Mock retrieved documents
retrieved_documents = [{"page_content": "Sample document"}]
response = quotient_logger.log(
user_query="Sample input",
model_output="Sample output",
# Page content from Documents from your retriever used to generate the model output
documents=[doc["page_content"] for doc in retrieved_documents],
# Message history from your chat history
message_history=[
{"role": "system", "content": "You are an expert on geography."},
{"role": "user", "content": "What is the capital of France?"},
{"role": "assistant", "content": "The capital of France is Paris"},
],
# Instructions for the model to follow
instructions=[
"You are a helpful assistant that answers questions about the world.",
"Answer the question in a concise manner. If you are not sure, say 'I don't know'.",
],
# Tags can be overridden at log time
tags={"model": "gpt-4o-mini", "feature": "customer-support"},
)
print(response)
You can also use the async client if you need to create logs asynchronously.
from quotientai import AsyncQuotientAI
import asyncio
quotient = AsyncQuotientAI()
quotient_logger = quotient.logger.init(
# Required
app_name="my-app",
environment="dev",
# dynamic labels for slicing/dicing analytics e.g. by customer, feature, etc
tags={"model": "gpt-4o", "feature": "customer-support"},
hallucination_detection=True,
inconsistency_detection=True,
)
async def main():
# Mock retrieved documents
retrieved_documents = [{"page_content": "Sample document"}]
response = await quotient_logger.log(
user_query="Sample input",
model_output="Sample output",
# Page content from Documents from your retriever used to generate the model output
documents=[doc["page_content"] for doc in retrieved_documents],
# Message history from your chat history
message_history=[
{"role": "system", "content": "You are an expert on geography."},
{"role": "user", "content": "What is the capital of France?"},
{"role": "assistant", "content": "The capital of France is Paris"},
],
# Instructions for the model to follow
instructions=[
"You are a helpful assistant that answers questions about the world.",
"Answer the question in a concise manner. If you are not sure, say 'I don't know'.",
],
# Tags can be overridden at log time
tags={"model": "gpt-4o-mini", "feature": "customer-support"},
)
print(response)
# Run the async function
asyncio.run(main())
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quotientai-0.2.6.tar.gz.
File metadata
- Download URL: quotientai-0.2.6.tar.gz
- Upload date:
- Size: 24.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9b1ed60d9d32af0c292a0cc81ee3c6058b6713b9717181bf4c744259f35050c
|
|
| MD5 |
bc930557a77aa31342e6c1bd129aaad2
|
|
| BLAKE2b-256 |
361ea413c5d74a51a10ee94c5d5c11ef77a6f7bf23d309152869e4c0fde4d705
|
File details
Details for the file quotientai-0.2.6-py3-none-any.whl.
File metadata
- Download URL: quotientai-0.2.6-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
679339e3e7b00053ca0f377b9c6db268016ce04d3dafb8c128bde8e521a3c803
|
|
| MD5 |
b4e8934e47714e64d3aecaab27128720
|
|
| BLAKE2b-256 |
5d9cdcbb51d25666f664d1baf38062ff9ecb0a8d066e1f27c392ca9d0cc39a12
|