base_url du SDK Anthropic https://northerninference.ca/v1 Défini dans le code comme base_url. Le SDK ajoute /messages, de sorte que le chemin complet devient /v1/messages. Ce n'est pas la même chose que le ANTHROPIC_BASE_URL de Claude Code (celui-là utilise la racine de l'hôte).

SDK Anthropic

Utilisez le SDK Anthropic officiel avec Inférence Nordique

Inférence Nordique est une API d'IA souveraine canadienne pour les équipes du gouvernement, de la défense, de la santé et des secteurs réglementés, y compris les organisations relevant du Programme des marchandises contrôlées. Chaque route comporte une résidence des données au Canada conforme à la LPRPDE, un chemin exact vers les derniers modèles de pointe et à poids ouverts, ainsi qu'un registre de chaîne de possession par requête.

Démarrez en 30 secondes

import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://northerninference.ca/v1",
    api_key=os.environ["NI_API_KEY"],          # ni_live_... key from the portal
)

resp = client.messages.create(
    model="claude-sonnet-4-5-20250929-t4",
    max_tokens=80,
    messages=[{"role": "user", "content": "Which jurisdiction am I in?"}],
)
print(resp.content[0].text)

Définissez NI_API_KEY avec votre clé ni_live_... obtenue à partir du portail. C'est le seul changement par rapport à une configuration standard du SDK Anthropic. Votre utilisation apparaît sous Usage en quelques secondes.

Pourquoi ça fonctionne

La passerelle de NI accepte les deux formats de transmission. Les clients OpenAI envoient une requête POST à /v1/chat/completions; les clients du SDK Anthropic envoient une requête POST à /v1/messages avec la forme de requête Anthropic native (aucune couche d'adaptation, aucune couche de traduction). Utilisez celui que votre code existant utilise déjà; définir base_url="https://northerninference.ca/v1" et votre clé NI est le seul changement.

Remarque : l'interface en ligne de commande Claude Code utilise ANTHROPIC_BASE_URL=https://northerninference.ca (racine de l'hôte, sans /v1). Il s'agit d'une convention de variable d'environnement propre au binaire Claude Code. Lorsque vous utilisez directement le SDK Python ou TypeScript d'Anthropic dans le code, utilisez https://northerninference.ca/v1 comme indiqué ci-dessous.

SDK Python

import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://northerninference.ca/v1",
    api_key=os.environ["NI_API_KEY"],          # ni_live_... NI key, not an Anthropic key
)

resp = client.messages.create(
    model="claude-sonnet-4-5-20250929-t4",  # exact NI route (copy from /v1/models)
    max_tokens=80,
    messages=[{"role": "user", "content": "Which jurisdiction am I in?"}],
)
print(resp.content[0].text)

SDK TypeScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
    baseURL: "https://northerninference.ca/v1",
    apiKey: process.env.NI_API_KEY!,
});

const resp = await client.messages.create({
    model: "claude-sonnet-4-5-20250929-t4",
    max_tokens: 80,
    messages: [{ role: "user", content: "Which jurisdiction am I in?" }],
});
console.log(resp.content[0].type === "text" ? resp.content[0].text : "");

curl (forme native /v1/messages)

curl https://northerninference.ca/v1/messages \
  -H "x-api-key: $NI_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-haiku-4-5-20251001-t4",
    "max_tokens": 30,
    "messages": [{"role": "user", "content": "hi"}]
  }'

Identifiants de modèle

Les exemples ci-dessus utilisent l'identifiant de route NI exact, copié depuis /v1/models ou /api/billing/models, afin que vous contrôliez explicitement le niveau de confidentialité et la juridiction. Par commodité, la passerelle de NI associe également les identifiants de modèle natifs d'Anthropic (claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001, etc.) à un déploiement correspondant, mais il est recommandé d'utiliser la route exacte afin de toujours savoir sur quel niveau vous vous trouvez.

Sélection de la route

Le nom de modèle que vous transmettez sélectionne la route NI et donc le fournisseur, la région et la résidence qui traitent la requête. Les niveaux autorisés de votre clé API déterminent les routes qu'elle peut appeler. Copiez l'identifiant de route exact depuis /models lorsque vous avez besoin d'un fournisseur ou d'une région en particulier.

Outils, vision, diffusion en continu

Toutes les fonctionnalités natives d'Anthropic passent sans modification : tool_use, vision (blocs de contenu image), stream: true, thinking avec budgets étendus. La facturation de NI tient compte explicitement des jetons de réflexion (aucune double facturation).

Chaîne de possession sur les réponses

Mêmes en-têtes de réponse X-NI-* que le chemin compatible OpenAI : X-NI-Resolved-Provider, X-NI-Resolved-Region, X-NI-Resolved-Jurisdiction, X-NI-Custody-Path, etc. Que la requête d'un client aboutisse à /v1/chat/completions ou à /v1/messages, NI applique la même protection de la résidence et produit la même piste de vérification.

Utilisation des commandes ni-*

Envoyez une commande ni-* comme contenu du message lorsque vous devez examiner ou modifier votre mappage de routes sans reconstruire votre client. La passerelle intercepte la commande et répond directement (aucun appel de modèle, aucune facturation).

Commandes utiles :

Les associations sont enregistrées dans le compte (toutes les clés du compte les partagent). La commande doit se trouver au début du contenu du message.


Quelque chose ne fonctionne pas comme prévu? Écrivez à support at northerninference dot ca. Le journal complet des requêtes se trouve dans votre portail, sous Usage.

↑