> ## Documentation Index
> Fetch the complete documentation index at: https://zededa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Manage Providers Using Jupyter Notebook Integration

> Use the zededa-eip-client Python package to manage external model providers in ZEDEDA Edge Inference Services programmatically from a Jupyter Notebook or Python script.

## Introduction

The ZEDEDA Edge AI Client (`zededa-eip-client`) is a Python package that provides programmatic access to ZEDEDA Edge Inference Services. You can use it to manage providers, browse models, trigger imports, and monitor jobs from a Jupyter Notebook, a Python script, or any other Python environment.

This article covers provider management using the client. For console-based provider management, see [Manage Providers](https://zededa.mintlify.site/new-ui/edge-inference-services/inference-model-providers.md).

### Prerequisites

* Python 3.8 or later.
* Access to ZEDEDA Edge Inference Services with a valid organization ID.
* Credentials for the provider types you want to add (API tokens, access keys, or service principal details).

## Install the Client

Install the `zededa-eip-client` package from PyPI:

```bash theme={"dark"}
pip install zededa-eip-client
```

## Authenticate

Authenticate with ZEDEDA Edge Inference Services before making any API calls. Pass your organization ID to the `login` function:

```python theme={"dark"}
from zededa_eip_client import login

login(organization_id="your-organization-id")
```

After authentication, initialize the client:

```python theme={"dark"}
from zededa_eip_client.client import ZededaEIPClient

client = ZededaEIPClient()
```

## List Providers

Retrieve all providers configured in your organization:

```python theme={"dark"}
providers = client.list_external_providers()
for provider in providers:
    print(provider["name"], provider["type"], provider["status"])
```

Each provider entry includes the provider name, type, connection status, and configuration details.

## Create a Provider

Use `create_external_provider` to add a new provider. The required fields vary by provider type. The following examples cover seven of the nine supported provider types. Qualcomm AI Hub and Local (file upload) providers are also supported.

### HuggingFace

```python theme={"dark"}
client.create_external_provider(
    name="my-huggingface",
    provider_type="huggingface",
    credentials={"token": "hf_your_access_token"},
)
```

### NVIDIA NGC

```python theme={"dark"}
client.create_external_provider(
    name="my-ngc",
    provider_type="nvidia_ngc",
    credentials={"api_key": "your-ngc-api-key"},
)
```

### Azure ML

```python theme={"dark"}
client.create_external_provider(
    name="my-azure-ml",
    provider_type="azure",
    credentials={
        "tenant_id": "your-tenant-id",
        "client_id": "your-client-id",
        "client_secret": "your-client-secret",
    },
    configuration={
        "subscription_id": "your-subscription-id",
        "resource_group": "your-resource-group",
        "workspace_name": "your-workspace",
    },
)
```

### Azure Blob

```python theme={"dark"}
client.create_external_provider(
    name="my-blob",
    provider_type="blob",
    credentials={"account_key": "your-account-key"},
    configuration={
        "storage_account": "your-storage-account",
        "container": "your-container",
    },
)
```

### MLflow

```python theme={"dark"}
client.create_external_provider(
    name="my-mlflow",
    provider_type="mlflow",
    url="https://your-mlflow-server",
    credentials={
        "username": "your-username",
        "password": "your-password",
    },
)
```

### Amazon S3

```python theme={"dark"}
client.create_external_provider(
    name="my-s3",
    provider_type="s3",
    credentials={
        "access_key": "your-access-key-id",
        "secret_key": "your-secret-access-key",
        "session_token": "optional-session-token",
    },
    configuration={
        "region": "us-east-1",
        "bucket": "your-bucket-name",
    },
)
```

### AWS SageMaker

```python theme={"dark"}
client.create_external_provider(
    name="my-sagemaker",
    provider_type="sagemaker",
    credentials={
        "access_key": "your-access-key-id",
        "secret_key": "your-secret-access-key",
    },
    configuration={"region": "us-east-1"},
)
```

## Update a Provider

Use `update_external_provider` to modify an existing provider's credentials or configuration. Pass the provider ID and only the fields you want to change:

```python theme={"dark"}
client.update_external_provider(
    provider_id="your-provider-id",
    credentials={"token": "hf_new_access_token"},
)
```

## Test a Provider Connection

Use `test_provider_connection` to verify that ZEDEDA Edge Inference Services can reach the provider with its current credentials:

```python theme={"dark"}
result = client.test_provider_connection(provider_id="your-provider-id")
print(result)
```

The response indicates whether the connection succeeded or failed. Only Super Admin can run a connection test. A failed test sets the provider to an error state, and imports from it are blocked until a test passes.

## Browse a Provider

Use `browse_provider` to list models or files available in a provider. Browsing is supported for all provider types. The search query is supported only for Hugging Face, MLflow, NVIDIA NGC, and Qualcomm AI Hub providers. For other provider types, omit `query` or the request fails.

```python theme={"dark"}
items = client.browse_provider(
    provider_id="your-provider-id",
    path="/",        # directory path within the provider
    query="llama",   # optional search query
)
for item in items:
    print(item["name"], item["type"])
```

## Import a Model from a Provider

Use `import_model_from_external_provider` to start an import job that fetches a model from the provider into your ZEDEDA Edge Inference Services model library:

```python theme={"dark"}
job = client.import_model_from_external_provider(
    provider_id="your-provider-id",
    model_path="meta-llama/Llama-3-8b",
    model_name="llama-3-8b",
    version="1.0",
)
print("Import job started:", job["id"])
```

The method returns a job object containing the job ID. You can use this ID to monitor import progress in the Infrastructure Monitor Jobs page, or by polling the job status programmatically.

## Delete a Provider

Use `delete_external_provider` to remove a provider from your organization:

```python theme={"dark"}
client.delete_external_provider(provider_id="your-provider-id")
```

Deleting a provider does not remove any models that were already imported from it.

## In This Section

* [Edge Inference Services Overview](https://zededa.mintlify.site/new-ui/edge-inference-services/overview.md)
* [Inference Dashboard](https://zededa.mintlify.site/new-ui/edge-inference-services/inference-dashboard.md)
* [Inference Quick Start](https://zededa.mintlify.site/new-ui/edge-inference-services/inference-quick-start.md)
* [Access and Navigate Edge Inference Services](https://zededa.mintlify.site/new-ui/edge-inference-services/access-and-navigation.md)
* [Organizations, Users, and Roles](https://zededa.mintlify.site/new-ui/edge-inference-services/organizations-users-and-roles.md)
* [Manage Providers](https://zededa.mintlify.site/new-ui/edge-inference-services/inference-model-providers.md)
  * [Manage Providers Using Jupyter Notebook Integration](https://zededa.mintlify.site/new-ui/edge-inference-services/providers-jupyter.md)
* [Manage Models](https://zededa.mintlify.site/new-ui/edge-inference-services/manage-inference-models.md)
  * [Manage Models Using Jupyter Notebook Integration](https://zededa.mintlify.site/new-ui/edge-inference-services/models-jupyter.md)
  * [Benchmark Models and Manage Device Pools](https://zededa.mintlify.site/new-ui/edge-inference-services/inference-model-benchmarking.md)
  * [Monitor Benchmark Runs and Interpret Results](https://zededa.mintlify.site/new-ui/edge-inference-services/use-ondevice-eval-agent.md)
* [Submit Model Deployment Requests](https://zededa.mintlify.site/new-ui/edge-inference-services/submit-model-deployment-requests.md)
* [Approve and Validate Models](https://zededa.mintlify.site/new-ui/edge-inference-services/deployments-and-validation.md)
* [Monitor Inference Jobs](https://zededa.mintlify.site/new-ui/edge-inference-services/jobs-and-monitoring.md)
* [Use ZEIA to Query and Operate Your Fleet](https://zededa.mintlify.site/new-ui/edge-inference-services/zeia.md)
* [Use Prevalidated Agents](https://zededa.mintlify.site/new-ui/edge-inference-services/prevalidated-agents.md)
  * [Use the Faulty Printed Circuit Board Detection Agent](https://zededa.mintlify.site/new-ui/edge-inference-services/faulty-pcb-detection-agent.md)
  * [Use the Autonomous Retail Billing Agent](https://zededa.mintlify.site/new-ui/edge-inference-services/autonomous-retail-billing-agent.md)
* [Inference Troubleshooting](https://zededa.mintlify.site/new-ui/edge-inference-services/inference-troubleshooting.md)
