Skip to main content

caikit-nlp client

Project description

caikit-nlp-client

PyPI version Tests codecov

A client library for caikit-nlp

Installation

Install from PyPi

pip install caikit-nlp-client

Usage

A few examples follow, see example.py

http

To use the http protocol

from caikit_nlp_client import HttpClient

host = "localhost"
port = 8080
model_name = "flan-t5-small-caikit"
http_client = HttpClient(f"http://{host}:{port}")

text = http_client.generate_text(model_name, "What is the boiling point of Nitrogen?")

gRPC

To use the gRPC protocol

from caikit_nlp_client import GrpcClient

host, port= "localhost", 8085
model_name = "flan-t5-small-caikit"
grpc_client = GrpcClient(host, port, insecure=True) # plain text mode

text = grpc_client.generate_text(model_name, "What is the boiling point of Nitrogen?")

Text generation methods may accept text generation parameters, which can be provided as kwargs to generate_text and generate_text_stream.

Available values and types be retrieved as a dict for both the grpc and http clients:

for param, default_value in client.get_text_generation_parameters():
    print(f"{param=}, {default_value=}")

Self-signed certificates

To use a self-signed certificate, assuming we have a certificate authority cert ca.pem

http_client = HttpClient(f"https://{host}:{http_port}", ca_cert_path="ca.pem")

with open("ca.pem", "rb") as fh:
    ca_cert = fh.read()
grpc_client = GrpcClient(host, grpc_port, ca_cert=ca_cert)

To skip certificate validation:

# http
http_client = HttpClient(f"https://{host}:{http_port}", verify=False)
# grpc
grpc_client = GrpcClient(host, port, verify=False)

mTLS

Assuming we have a client.pem and client-key.pem certificate files, and we require ca.pem to validate the server certificate:

# http
http_client = HttpClient(
    f"https://{host}:{http_port}",
    ca_cert_path="ca.pem",
    client_cert_path="client.pem",
    client_key_path="client-key.pem"
)

# grpc
with open("ca.pem", "rb") as fh:
    ca_cert = fh.read()
with open("client.pem", "rb") as fh:
    client_cert = fh.read()
with open("client-key.pem", "rb") as fh:
    client_key = fh.read()

grpc_client = GrpcClient(
    host,
    port,
    ca_cert=ca_cert,
    client_key=client_key,
    client_cert=client_cert,
)
# alternatively you can pass the paths directly to the client constructor
grpc_client = GrpcClient(
    host,
    port,
    ca_cert="ca.pem",
    client_cert="client.pem",
    client_key="client-key.pem"
)

Contributing

Set up pre-commit for linting/style/misc fixes:

pip install pre-commit
pre-commit install

This project uses nox to manage test automation:

pip install nox
nox --list  # list available sessions
nox --python 3.10 -s tests # run tests session for a specific python version

Testing against a real caikit+tgis stack

Tests are run against a mocked instance of a TGIS backend by default. To test against a real caikit+tgis stack, it is sufficient to run using the --real-caikit flag when running pytest:

nox -s tests -- --real-caikit tests

Notes:

  • The required images (caikit-tgis-serving, text-generation-inference), so it could take a while for tests to start while compose is pulling the required images, it may seem like the tests are hanging.
  • This uses a real model (google/flan-t5-small), which will be downloaded to tests/fixtures/resources/flan-t5-small-caikit and is around 300MB in size.

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

caikit_nlp_client-0.0.8.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

caikit_nlp_client-0.0.8-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file caikit_nlp_client-0.0.8.tar.gz.

File metadata

  • Download URL: caikit_nlp_client-0.0.8.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for caikit_nlp_client-0.0.8.tar.gz
Algorithm Hash digest
SHA256 72f59c99db87b0c73d589bebad9452a186544b52ed706ed0f94a661f83608339
MD5 80bae3ae667f1aa008e273e589a04bd2
BLAKE2b-256 1171c1a2793e4d1c3a57828651055df499711bb18c9740afb7b423acaa702f29

See more details on using hashes here.

File details

Details for the file caikit_nlp_client-0.0.8-py3-none-any.whl.

File metadata

File hashes

Hashes for caikit_nlp_client-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 8e8a31378d8f711f95b164824bc75b68c5ac433ab640005218e287bbfb53e581
MD5 fafda714632855bab9fd21d6df052937
BLAKE2b-256 f10c94f70b7df6a6c3a72ddfdc59bc3454da7b7b410fd18a2d3f25f9dda580b4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page