A client library for accessing the whylogs python container
Project description
whylogs-container-client
A client library for accessing FastAPI.
See the WhyLabs doc site for full documentation, or see the API endpoint documentation for information on a specific API. The structure there mimics the module structure in the generated client.
Usage
First, create a client:
from whylogs_container_client import AuthenticatedClient
# Create an authenticated client for a container running on localhost
# The token field should match the password that you set on your whylogs container deployment.
client = AuthenticatedClient(base_url="http://localhost:8000", token="password", prefix="", auth_header_name="X-API-Key")
from whylogs_container_client import Client
# Can use a regular Client if the container has no password set
client = Client(base_url="http://localhost:8000")
APIs
Things to know:
-
Every API has four ways of calling it.
sync
: Blocking request that returns parsed data (if successful) orNone
sync_detailed
: Blocking request that always returns aRequest
, optionally withparsed
set if the request was successful.asyncio
: Likesync
but async instead of blockingasyncio_detailed
: Likesync_detailed
but async instead of blocking
-
APIs are grouped by their "tags" as Python modules.
-
APIs that do not have a tag are in
whylogs_container_client.api.default
Here are some example requests for common APIs.
Log Data
from datetime import datetime
import whylogs_container_client.api.profile.log as Log
from whylogs_container_client.models import LogMultiple, LogRequest
# Get current time in epoch milliseconds using datetime
time_ms = int(datetime.now().timestamp() * 1000)
data = LogRequest(
dataset_id="model-141",
timestamp=time_ms,
multiple=LogMultiple(
columns=["custom_metric_1", "custom_metric_2"],
data=[[1, 2], [3, 4]],
),
)
response = Log.sync_detailed(client=client, body=data)
if response.status_code != 200:
raise Exception(f"Failed to log data. Status code: {response.status_code}")
Validate LLM
from whylogs_container_client.models.evaluation_result import EvaluationResult
from whylogs_container_client.models.llm_validate_request import LLMValidateRequest
from whylogs_container_client.models.validation_result import ValidationResult
request = LLMValidateRequest(
prompt="?",
response="I'm sorry you feel that way.",
dataset_id="model-139",
id="myid",
)
response = Evaluate.sync_detailed(client=client, body=request)
if not isinstance(response.parsed, EvaluationResult):
raise Exception(f"Failed to validate data. Status code: {response.status_code}. {response.parsed}")
result: ValidationResult = response.parsed.validation_results
Health check
import whylogs_container_client.api.manage.health as Health
Health.sync_detailed(client=client)
Get Status
import whylogs_container_client.api.manage.status as Status
from whylogs_container_client.models.process_logger_status_response import ProcessLoggerStatusResponse
response = Status.sync_detailed(client=client)
if response.parsed is None:
raise Exception("Unexpected response type")
result: ProcessLoggerStatusResponse = response.parsed
Certificates
You can customize or disable the certificate verification.
# Example of using a custom certificate bundle
client.verify_ssl = "/path/to/certificate_bundle.pem"
# Adding event hooks to the httpx client
def log_request(request):
print(f"Request event hook: {request.method} {request.url} - Waiting for response")
def log_response(response):
request = response.request
print(f"Response event hook: {request.method} {request.url} - Status {response.status_code}")
client.httpx_args = {"event_hooks": {"request": [log_request], "response": [log_response]}}
Advanced customizations
You can set the httpx client directly, but beware that this will override any existing settings (e.g., base_url):
import httpx
from whylogs_container_client import Client
client = Client(
base_url="https://api.example.com",
)
# Note that base_url needs to be re-set, as would any shared cookies, headers, etc.
client.set_httpx_client(httpx.Client(base_url="https://api.example.com", proxies="http://localhost:8030"))
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 whylogs_container_client-1.0.18.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f2bf9ff4090c3177ecd9f8493e01d8a20492da6df056ff1ed6e3c11bdaa9f67 |
|
MD5 | c546746e123aa1706fc8af32856df61a |
|
BLAKE2b-256 | 85ed80bfad2e50e1074634bf88d2791e091dbb682068597ea5f50903c15eb01a |
Hashes for whylogs_container_client-1.0.18-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b317588fa7bda22ba2afc5a893e8a7a1dd58dc66466008fc9d8348787b44d1a |
|
MD5 | d2780a09dbe29eee621af18c8e2d6589 |
|
BLAKE2b-256 | 67c6b0dee040ce919a6efa3269586a2c829db048f8b60ba1af6fe8dd352644a1 |