Developer guide
Autenticazione con una chiave API
L’header che contiene la chiave API e il base URL da configurare nell’SDK
Il gateway CLEVI autentica i percorsi compatibili con OpenAI e quelli compatibili con Anthropic usando un’unica chiave API.
Nel client è necessario configurare due valori: l’header di autenticazione che contiene la chiave e il base URL dell’SDK. Il formato dell’header e il base URL consentiti variano in base alla specifica.
Dopo aver completato la configurazione, è possibile verificare immediatamente l’autenticazione recuperando l’elenco dei modelli.
Se l’autenticazione non riesce, viene restituito 401; se, dopo l’autenticazione, non vengono soddisfatti i requisiti di autorizzazione o di limite, viene restituito 403.
Genera la chiave API nella schermata delle chiavi API della console. Nella stessa schermata puoi gestire la revoca della chiave e il suo ambito di utilizzo.
Header di autenticazione
Entrambe le specifiche inseriscono la chiave API in un singolo header della richiesta. È possibile usare l’header X-API-Key o l’header Authorization; il formato consentito varia in base alla specifica.
| Header | Compatibile con OpenAI | Compatibile con Anthropic |
|---|---|---|
| X-API-Key: <chiave> | Consentito | Consentito |
| Authorization: Bearer <chiave> | Consentito | Consentito |
| Authorization: <chiave> (senza Bearer) | Rifiutato | Consentito |
Nel percorso compatibile con OpenAI, quando si usa l’header Authorization è necessario il prefisso Bearer. Se si invia solo la chiave senza il prefisso, il gateway rifiuta la richiesta.
Il nome dell’header non distingue tra maiuscole e minuscole, quindi anche l’header x-api-key inviato dall’SDK Anthropic funziona senza modifiche. Se vengono specificati entrambi gli header, viene applicato prima il valore di X-API-Key.
base URL
Gli SDK già in uso possono continuare a essere utilizzati cambiando solo il base URL con uno degli indirizzi indicati di seguito. Poiché i due indirizzi differiscono per la presenza di /v1, specifica esattamente l’indirizzo corrispondente alla specifica.
| Specifica | base URL | Regola del percorso |
|---|---|---|
| Compatibile con OpenAI | https://platform.clevi.net/api/v2/aiservice/openai/v1 | Includi /v1 nel base URL. |
| Compatibile con Anthropic | https://platform.clevi.net/api/v2/aiservice/anthropic | L’SDK Anthropic aggiunge direttamente /v1 al percorso della richiesta, quindi il base URL termina prima di /v1. |
Verifica dell’autenticazione
Dopo aver impostato la chiave e il base URL, puoi verificare l'autenticazione recuperando l'elenco dei modelli. Gli esempi di seguito eseguono la stessa richiesta con curl, OpenAI SDK e Anthropic SDK. Inserisci al posto di sk-... la chiave generata nella schermata delle chiavi API.
Quando recuperi l'elenco con curl, specifica il percorso completo fino a /v1/models per entrambi gli standard. Il primo comando utilizza l'header X-API-Key per il percorso compatibile con OpenAI, mentre il secondo utilizza l'header Authorization per il percorso compatibile con 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"Con OpenAI SDK, specifica un indirizzo che includa /v1 in 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)Con Anthropic SDK, specifica in base_url un indirizzo che termini prima di /v1.
Per l'autenticazione, utilizza invariato l'header x-api-key inviato dall'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)Se la risposta di uno qualsiasi degli esempi è 200, l'autenticazione è riuscita e data nella risposta contiene l'elenco dei modelli che puoi chiamare con questa chiave. Se ricevi 401, verifica la causa seguendo l'ordine indicato nella sezione successiva.
Autenticazione non riuscita
Se invii una chiave assente, scaduta o revocata, viene restituito 401. Se effettui una chiamata senza chiave sul percorso compatibile con OpenAI, viene restituito il corpo riportato di seguito; sul percorso compatibile con Anthropic, error.type è authentication_error.
{
"error": {
"message": "API key is required.",
"type": "invalid_request_error"
}
}Se ricevi 401, esegui le verifiche nel seguente ordine.
- Controlla lo stato della chiave nella schermata delle chiavi API. Se la chiave è scaduta o revocata, generane una nuova.
- Verifica che il nome dell'header sia X-API-Key o Authorization.
- Se utilizzi l'header Authorization sul percorso compatibile con OpenAI, verifica che includa il prefisso Bearer.
Dopo aver apportato le modifiche, esegui nuovamente il recupero dell'elenco dei modelli nella sezione Verifica dell'autenticazione e controlla che venga restituito 200.
Header utilizzati insieme
Tutti gli header seguenti sono facoltativi. Per facilitare il tracciamento dei problemi, consigliamo di specificare X-Request-Id.
| Header | Utilizzo | Se omesso |
|---|---|---|
| X-Request-Id | Identificatore per il tracciamento della richiesta. Il percorso compatibile con Anthropic restituisce lo stesso valore nell'header request-id della risposta. | Viene emesso dal server. |
| X-Region-Code | Specifica la regione in cui effettuare la chiamata. | È global. |
| X-Product-Sku (può essere specificato anche con il parametro di query product_sku) | Specifica direttamente il Product SKU da utilizzare per la fatturazione. L'header ha la precedenza sul parametro di query ed è utilizzato principalmente nei percorsi vocali/voice. | Non può essere omesso nei percorsi voice. audio/speech e audio/transcriptions selezionano il Product tramite model nel corpo della richiesta. |
| anthropic-version / anthropic-beta | Viene trasmesso così com'è nel percorso compatibile con Anthropic. | La versione è 2023-06-01. |
Se gli errori 5xx si ripetono, segnalatelo all'assistenza e al supporto insieme a X-Request-Id. Se il valore è stato specificato direttamente, può essere confrontato immediatamente con i registri del client.