Developer guide
S’authentifier avec une clé API
En-tête contenant la clé API et base URL à configurer dans le SDK
La passerelle CLEVI authentifie les chemins compatibles avec OpenAI et les chemins compatibles avec Anthropic avec une seule clé API.
Les deux valeurs à configurer dans le client sont l’en-tête d’authentification contenant la clé et le base URL du SDK. Les formats d’en-tête et le base URL autorisés diffèrent selon la spécification.
Après avoir terminé la configuration, vous pouvez vérifier immédiatement l’authentification en récupérant la liste des modèles.
Une erreur d’authentification renvoie 401. Si l’authentification réussit, mais que les conditions d’autorisation ou de limite ne sont pas respectées, la réponse est 403.
Obtenez une clé API à partir de l’écran des clés API de la console. Vous pouvez également y gérer la révocation de la clé et sa portée d’utilisation.
En-tête d’authentification
Les deux spécifications placent la clé API dans un seul en-tête de requête. Utilisez l’en-tête X-API-Key ou l’en-tête Authorization; le format autorisé varie selon la spécification.
| En-tête | Compatible avec OpenAI | Compatible avec Anthropic |
|---|---|---|
| X-API-Key: <clé> | Autorisé | Autorisé |
| Authorization: Bearer <clé> | Autorisé | Autorisé |
| Authorization: <clé> (sans Bearer) | Rejeté | Autorisé |
Lorsque vous utilisez l’en-tête Authorization avec un chemin compatible avec OpenAI, le préfixe Bearer est requis. Si vous envoyez uniquement la clé sans le préfixe, la passerelle rejette 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 les deux en-têtes sont spécifiés, 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 le base URL par l’adresse ci-dessous. Les deux adresses diffèrent quant à l’inclusion de /v1; spécifiez l’adresse correspondant à la spécification telle quelle.
| Spécification | base URL | Règle de chemin |
|---|---|---|
| Compatible avec OpenAI | https://platform.clevi.net/api/v2/aiservice/openai/v1 | Incluez /v1 jusqu’à la fin dans le base URL. |
| Compatible avec Anthropic | https://platform.clevi.net/api/v2/aiservice/anthropic | Le SDK Anthropic ajoute directement /v1 au chemin de la requête; le base 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, l’OpenAI SDK et l’Anthropic SDK. Remplacez sk-... par la clé générée dans l’écran des clés API.
Pour effectuer la requête avec curl, spécifiez le chemin complet jusqu’à /v1/models dans les deux formats. La première commande utilise l’en-tête X-API-Key pour le chemin compatible avec OpenAI, tandis que 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 l’OpenAI SDK, spécifiez une adresse qui inclut /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 l’Anthropic SDK, spécifiez une adresse qui se termine avant /v1 dans base_url.
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)Si la réponse est 200 dans n’importe quel exemple, l’authentification a réussi et la propriété data de la réponse contient la liste des modèles que vous pouvez appeler avec cette clé. Si vous recevez 401, vérifiez la cause en suivant l’ordre indiqué dans la section suivante.
Échec de l’authentification
Si vous envoyez une clé absente, expirée ou révoquée, une réponse 401 est renvoyée. 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, effectuez les vérifications dans l’ordre suivant.
- Vérifiez l’état de la clé dans l’écran des clés API. Si elle est expirée ou révoquée, générez-en une nouvelle.
- Vérifiez que le nom de l’en-tête est X-API-Key ou Authorization.
- Si vous utilisez l’en-tête Authorization sur le chemin compatible avec OpenAI, vérifiez qu’il comporte le préfixe Bearer.
Après avoir effectué les corrections, relancez la récupération de la liste des modèles dans la section Vérification de l’authentification et vérifiez que la réponse est 200.
En-têtes utilisés conjointement
Tous les en-têtes suivants sont facultatifs. Nous vous recommandons de définir X-Request-Id afin de faciliter le suivi des problèmes.
| En-tête | Utilisation | Si omis |
|---|---|---|
| X-Request-Id | Identifiant de 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. | Attribué par le serveur. |
| X-Region-Code | Spécifie la région d’appel. | Il s’agit de global. |
| X-Product-Sku (peut également être spécifié avec le paramètre de requête product_sku) | Spécifie directement le Product SKU à utiliser pour la facturation. L’en-tête a priorité sur le paramètre de requête et est principalement utilisé pour les chemins audio et vocaux. | Ne peut pas être omis dans les chemins vocaux. audio/speech et audio/transcriptions sélectionnent le Product au moyen de model dans le corps de la requête. |
| anthropic-version / anthropic-beta | Transmis 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 dans l’aide et les demandes de renseignements, en indiquant X-Request-Id. Si la valeur a été spécifiée directement, elle peut être comparée immédiatement aux journaux du client.