Developer guide

S’authentifier avec une clé API

En-tête contenant la clé API et base URL à définir dans le SDK

La passerelle CLEVI authentifie les chemins compatibles avec OpenAI et ceux compatibles avec Anthropic à l’aide d’une seule clé API.
Les deux valeurs à définir côté client sont l’en-tête d’authentification contenant la clé et la base URL du SDK. Le format d’en-tête autorisé et la base URL diffèrent selon la spécification.
Après avoir terminé la configuration, vous pouvez vérifier immédiatement l’authentification en consultant la liste des modèles.
En cas d’échec de l’authentification, le code 401 est renvoyé. Si, après l’authentification, les conditions d’autorisation ou de quota ne sont pas remplies, le code 403 est renvoyé.

Émettez une clé API depuis l’écran des clés API de la console. Vous pouvez également y gérer la révocation de la clé et son périmètre d’utilisation.

En-tête d’authentification

Dans les deux spécifications, la clé API est placée dans un seul en-tête de requête. Utilisez l’un des en-têtes X-API-Key ou Authorization ; le format autorisé dépend de la spécification.

En-têteCompatible avec OpenAICompatible avec Anthropic
X-API-Key: <clé>AcceptéAccepté
Authorization: Bearer <clé>AcceptéAccepté
Authorization: <clé> (sans Bearer)RefuséAccepté

Dans le chemin compatible avec OpenAI, le préfixe Bearer est requis lors de l’utilisation de l’en-tête Authorization. Si vous envoyez uniquement la clé sans préfixe, la passerelle refuse la requête.

Les noms d’en-tête ne sont pas sensibles à la casse ; l’en-tête x-api-key envoyé par le SDK Anthropic fonctionne donc également tel quel. Si vous définissez les deux en-têtes, la valeur de X-API-Key est prioritaire.

base URL

Les SDK que vous utilisez déjà peuvent continuer à être utilisés tels quels en remplaçant uniquement la base URL par l’une des adresses ci-dessous. Les deux adresses diffèrent selon qu’elles incluent ou non /v1 ; spécifiez directement l’adresse correspondant à la spécification.

Spécificationbase URLRègle de chemin
Compatible avec OpenAIhttps://platform.clevi.net/api/v2/aiservice/openai/v1Incluez /v1 dans la base URL.
Compatible avec Anthropichttps://platform.clevi.net/api/v2/aiservice/anthropicLe SDK Anthropic ajoute directement /v1 au chemin de la requête ; l’URL se termine donc avant /v1.

Vérifier l’authentification

Après avoir configuré la clé et l’URL de base, vous pouvez vérifier l’authentification en récupérant la liste des modèles. Les exemples ci-dessous exécutent la même requête avec curl, le SDK OpenAI et le SDK Anthropic. Remplacez sk-... par la clé émise sur l’écran des clés API.

Lors de la récupération avec curl, spécifiez le chemin complet jusqu’à /v1/models pour les deux formats. La première commande utilise l’en-tête X-API-Key pour le chemin compatible avec OpenAI, et la deuxième utilise l’en-tête Authorization pour le chemin compatible avec Anthropic.

curl https://platform.clevi.net/api/v2/aiservice/openai/v1/models \
  -H "X-API-Key: sk-..."

curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/models \
  -H "Authorization: Bearer sk-..." \
  -H "anthropic-version: 2023-06-01"

Avec le SDK OpenAI, spécifiez une adresse incluant /v1 dans base_url.

from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)

for model in client.models.list():
    print(model.id)

Avec le SDK Anthropic, spécifiez une adresse dans base_url qui se termine avant /v1.
Pour l’authentification, utilisez tel quel l’en-tête x-api-key envoyé par le SDK.

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-...",
    base_url="https://platform.clevi.net/api/v2/aiservice/anthropic",
)

for model in client.models.list(limit=20).data:
    print(model.id)

Dans tous les exemples, une réponse 200 indique que l’authentification a réussi, et la propriété data de la réponse contient la liste des modèles pouvant être appelés avec cette clé. Si vous obtenez 401, recherchez la cause en suivant l’ordre indiqué dans la section suivante.

Échec de l’authentification

Une clé absente, expirée ou révoquée entraîne une réponse 401. Si vous effectuez un appel sans clé sur le chemin compatible avec OpenAI, le corps ci-dessous est renvoyé ; sur le chemin compatible avec Anthropic, error.type vaut authentication_error.

{
  "error": {
    "message": "API key is required.",
    "type": "invalid_request_error"
  }
}

Si vous recevez 401, vérifiez les points suivants dans l’ordre indiqué.

  1. Vérifiez l’état de la clé sur l’écran des clés API. Si elle a expiré ou a été révoquée, générez-en une nouvelle.
  2. Vérifiez que le nom de l’en-tête est X-API-Key ou Authorization.
  3. Si vous utilisez l’en-tête Authorization sur le chemin compatible avec OpenAI, vérifiez qu’il contient le préfixe Bearer.

Après la correction, relancez la récupération de la liste des modèles dans la section de vérification de l’authentification et confirmez que vous obtenez une réponse 200.

En-têtes utilisés conjointement

Tous les en-têtes suivants sont facultatifs. Nous vous recommandons toutefois de définir X-Request-Id afin de faciliter le suivi des problèmes.

En-têteUtilisationSi omis
X-Request-IdIdentifiant destiné au suivi de la requête. Le chemin compatible avec Anthropic renvoie la même valeur dans l’en-tête request-id de la réponse.Délivré par le serveur.
X-Region-CodeSpécifie la région d’appel.La valeur est global.
X-Product-Sku (également spécifiable avec le paramètre de requête product_sku)Spécifie directement le Product SKU à utiliser pour la facturation. L’en-tête est prioritaire sur le paramètre de requête et est principalement utilisé pour les chemins audio et voix.Ne peut pas être omis dans les chemins voix. audio/speech et audio/transcriptions sélectionnent le Product avec le model du corps de la requête.
anthropic-version / anthropic-betaTransmis tel quel dans le chemin compatible avec Anthropic.La version est 2023-06-01.

Si les erreurs 5xx se répètent, veuillez nous en informer via l’aide et le support en indiquant le X-Request-Id. Si vous avez spécifié directement la valeur, elle peut être comparée immédiatement aux journaux du client.

Langue et région

Les langues traduites automatiquement sont traduites par clevi/cip-5.5-im et signalées comme telles. Cela s’applique aux langues disposant d’un bundle de site publié.

137 langues

Recommandé

1

Asie de l’Est

7

Asie du Sud-Est

11

Asie du Sud

18

Asie centrale

5

Moyen-Orient et Caucase

10

Europe de l’Ouest et Europe du Sud

17

Royaume-Uni et Irlande

4

Europe du Nord

10

Europe centrale et Balkans

14

Europe de l’Est

5

Afrique orientale

8

Afrique occidentale et Afrique centrale

9

Afrique australe

8

Amériques

5

Océanie

5