A client library for accessing FastAPI
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
response = Health.sync_detailed(client=client)
if not response.status_code == 200:
raise Exception(f"Failed health check. Status code: {response.status_code}. {response.parsed}")
Get Status
import whylogs_container_client.api.manage.status as Status
from whylogs_container_client.models.status_response import StatusResponse
response = Status.sync_detailed(client=client)
if response.parsed is None:
raise Exception("Unexpected response type")
result: StatusResponse = 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
File details
Details for the file whylogs_container_client-2.2.1.tar.gz
.
File metadata
- Download URL: whylogs_container_client-2.2.1.tar.gz
- Upload date:
- Size: 23.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.8 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1262590adcd85400b29d3777371c16483563fa1b4e5c9e88b0fdb942d4bbbf8 |
|
MD5 | 0a716d66ab52da3b839bd48cfc63c7c5 |
|
BLAKE2b-256 | 280000e09593d5a324948cdeef97f3427f99683702e76e3b617bd9e9e698ee0a |
File details
Details for the file whylogs_container_client-2.2.1-py3-none-any.whl
.
File metadata
- Download URL: whylogs_container_client-2.2.1-py3-none-any.whl
- Upload date:
- Size: 62.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.8 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 372c767c54dce119284c9dc60b57ab71782aae5931f6bb124041ae0e4a6dd1bd |
|
MD5 | 39a6c5f22e9fac4aaa275e12701e0e7e |
|
BLAKE2b-256 | 404873b3e578669bc294d47ea1f441affba8508d4cd9b26f027e8ada444d0dde |