Skip to main content
Version: Next

Configurable endpoints

Endpoints provide a static URL that can be pointed to any deployment. This page describes how to configure endpoints using the H2O MLOps Python client.

  1. Connect to H2O MLOps.
import h2o_mlops
import httpx


mlops = h2o_mlops.Client()
  1. First, we'll grab some deployments for demonstration purposes.
project = mlops.projects.get("fe96aa18-6aa5-4f26-80f7-a682f1741f84")

deployment_one = project.deployments.list()[0]
deployment_two = project.deployments.list()[1]

Create an endpoint

endpoint = project.endpoints.create(
name="Demo Endpoint",
description="Endpoint for giving demos.",
path="static/path",
target_deployment=deployment_one
)

List endpoints

project.endpoints.list()

Output:

    | name          | path        | uid
----+---------------+-------------+--------------------------------------
0 | Demo Endpoint | static/path | fb185ef2-f179-419b-914c-caec166aa6d7

Get endpoint

endpoint = project.endpoints.get(endpoint.uid)

Use an endpoint

Once we have an endpoint, it provides a static URL that can be pointed to any deployment.

Note: Endpoints take a little time to become ready to receive HTTP requests.

static_url = f"https://model.cloud-qa.h2o.ai/{endpoint.path}/model"

static_url

Output:

'https://model.cloud-qa.h2o.ai/static/path/model'

Any of the model methods available from the deployment (capabilities, schema, id, sample_request, score) are available at the endpoint.

Input:

httpx.get(f"{static_url}/capabilities").json()

Output:

['SCORE_PREDICTION_INTERVAL', 'SCORE']

Input:

sample_request = httpx.get(f"{static_url}/sample_request").json()

httpx.post(
url=f"{static_url}/score",
json=sample_request
).json()

Output:

{'fields': ['C11.0', 'C11.1'],
'id': 'c19bdd94-e673-4094-bd68-da5d077dc096',
'score': [['0.49786656666743145', '0.5021334333325685']]}

Input:

httpx.get(f"{static_url}/id").text

Output:

'c19bdd94-e673-4094-bd68-da5d077dc096'

Update the endpoint

Note: Only display_name, description, and target fields may be updated. Setting the target field to an empty string disables the endpoint.

Input:

endpoint.update(target_deployment=deployment_two)
sample_request = httpx.get(f"{static_url}/sample_request").json()

httpx.post(
url=f"{static_url}/score",
json=sample_request
).json()

Output:

{'fields': ['C11.0', 'C11.1'],
'id': 'c19bdd94-e673-4094-bd68-da5d077dc096',
'score': [['0.49786656666743145', '0.5021334333325685']]}

Input:

endpoint.target_deployment.uid != deployment_one.uid

Output:

True

Delete an endpoint

endpoint.delete()

Feedback