mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-17 05:31:16 +08:00
163 lines
4.5 KiB
Markdown
163 lines
4.5 KiB
Markdown
---
|
|
title:
|
|
page: Configure Inference Routing
|
|
nav: Configure
|
|
description: Set up the managed local inference endpoint with provider credentials and model configuration.
|
|
topics:
|
|
- Generative AI
|
|
- Cybersecurity
|
|
tags:
|
|
- Inference Routing
|
|
- Configuration
|
|
- Privacy
|
|
- LLM
|
|
- Provider
|
|
content:
|
|
type: how_to
|
|
difficulty: technical_intermediate
|
|
audience:
|
|
- engineer
|
|
---
|
|
|
|
<!--
|
|
SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
-->
|
|
|
|
# Configure Inference Routing
|
|
|
|
This page covers the managed local inference endpoint (`https://inference.local`). External inference endpoints go through sandbox `network_policies`. Refer to [Policies](/sandboxes/policies.md) for details.
|
|
|
|
The configuration consists of two values:
|
|
|
|
| Value | Description |
|
|
|---|---|
|
|
| Provider record | The credential backend OpenShell uses to authenticate with the upstream model host. |
|
|
| Model ID | The model to use for generation requests. |
|
|
|
|
## Step 1: Create a Provider
|
|
|
|
Create a provider that holds the backend credentials you want OpenShell to use.
|
|
|
|
:::::{tab-set}
|
|
|
|
::::{tab-item} NVIDIA API Catalog
|
|
|
|
```console
|
|
$ openshell provider create --name nvidia-prod --type nvidia --from-existing
|
|
```
|
|
|
|
This reads `NVIDIA_API_KEY` from your environment.
|
|
|
|
::::
|
|
|
|
::::{tab-item} Local / self-hosted endpoint
|
|
|
|
```console
|
|
$ openshell provider create \
|
|
--name my-local-model \
|
|
--type openai \
|
|
--credential OPENAI_API_KEY=empty-if-not-required \
|
|
--config OPENAI_BASE_URL=http://192.168.10.15/v1
|
|
```
|
|
|
|
Use `--config OPENAI_BASE_URL` to point to any OpenAI-compatible server running on your network. Set `OPENAI_API_KEY` to a dummy value if the server does not require authentication.
|
|
|
|
::::
|
|
|
|
::::{tab-item} Anthropic
|
|
|
|
```console
|
|
$ openshell provider create --name anthropic-prod --type anthropic --from-existing
|
|
```
|
|
|
|
This reads `ANTHROPIC_API_KEY` from your environment.
|
|
|
|
::::
|
|
|
|
:::::
|
|
|
|
## Step 2: Set Inference Routing
|
|
|
|
Point `inference.local` at that provider and choose the model to use:
|
|
|
|
```console
|
|
$ openshell inference set \
|
|
--provider nvidia-prod \
|
|
--model nvidia/nemotron-3-nano-30b-a3b
|
|
```
|
|
|
|
## Step 3: Verify the Active Config
|
|
|
|
Confirm that the provider and model are set correctly:
|
|
|
|
```console
|
|
$ openshell inference get
|
|
Gateway inference:
|
|
|
|
Provider: nvidia-prod
|
|
Model: nvidia/nemotron-3-nano-30b-a3b
|
|
Version: 1
|
|
```
|
|
|
|
## Step 4: Update Part of the Config
|
|
|
|
Use `update` when you want to change only one field:
|
|
|
|
```console
|
|
$ openshell inference update --model nvidia/nemotron-3-nano-30b-a3b
|
|
```
|
|
|
|
Or switch providers without repeating the current model:
|
|
|
|
```console
|
|
$ openshell inference update --provider openai-prod
|
|
```
|
|
|
|
## Use It from a Sandbox
|
|
|
|
After inference is configured, code inside any sandbox can call `https://inference.local` directly:
|
|
|
|
```python
|
|
from openai import OpenAI
|
|
|
|
client = OpenAI(base_url="https://inference.local/v1", api_key="unused")
|
|
|
|
response = client.chat.completions.create(
|
|
model="anything",
|
|
messages=[{"role": "user", "content": "Hello"}],
|
|
)
|
|
```
|
|
|
|
The client-supplied `model` and `api_key` values are not sent upstream. The privacy router injects the real credentials from the configured provider and rewrites the model before forwarding.
|
|
|
|
Use this endpoint when inference should stay local to the host for privacy and security reasons. External providers that should be reached directly belong in `network_policies` instead.
|
|
|
|
### Verify the Endpoint from a Sandbox
|
|
|
|
`openshell inference get` confirms the configuration was saved, but does not verify the upstream endpoint is reachable. The CLI also accepts `--no-verify` on `openshell inference set` and `openshell inference update` so automation can opt out explicitly ahead of a future verify-by-default rollout.
|
|
|
|
To confirm end-to-end connectivity, connect to a sandbox and run:
|
|
|
|
```bash
|
|
curl https://inference.local/v1/responses \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"instructions": "You are a helpful assistant.",
|
|
"input": "Hello!"
|
|
}'
|
|
```
|
|
|
|
A successful response confirms the privacy router can reach the configured backend and the model is serving requests.
|
|
|
|
- Gateway-scoped: Every sandbox using the active gateway sees the same `inference.local` backend.
|
|
- HTTPS only: `inference.local` is intercepted only for HTTPS traffic.
|
|
|
|
## Next Steps
|
|
|
|
Explore related topics:
|
|
|
|
- To understand the inference routing flow and supported API patterns, refer to {doc}`index`.
|
|
- To control external endpoints, refer to [Policies](/sandboxes/policies.md).
|
|
- To manage provider records, refer to {doc}`../sandboxes/manage-providers`.
|