API compatible OpenAI

API compatible OpenAI

Endpoints /v1, chat completions, en-têtes, codes d’erreur, streaming et cache.

La passerelle expose des endpoints compatibles OpenAI sous l’URL de base /v1. Les clients OpenAI peuvent pointer vers la passerelle plutôt que vers le fournisseur.

Endpoints#

Méthode et cheminFonction
POST /v1/chat/completionsChat completions OpenAI, natif ou via facade vers des backends Anthropic.
POST /v1/responsesRelay Responses API pour SDK récents, adapté au chat dans le même pipeline.
POST /v1/embeddingsEmbeddings OpenAI routés vers le fournisseur configuré.
GET /v1/modelsListe des modèles enregistrés.

Les alias de route habituels sont acceptés pour connecter outils et SDK existants.

Endpoint Gateway (images, audio, fichiers, fine-tuning, lots)#

D’autres interfaces compatibles OpenAI peuvent être activées en plus de chat, messages et embeddings. Elles sont désactivées par défaut ; endpoint désactivé renvoie 404 endpoint_disabled. Configurez dans Settings -> Endpoint Gateway :

SurfaceContrôleComportement
/v1/images/generations, edits, variationsimagesInspecte, masque et compresse le prompt JSON comme chat ; inspecte métadonnées et utilise un cache soumis à l’inspection.
/v1/audio/speechaudioInspecte l’entrée comme prompt de chat et la relaie.
/v1/audio/transcriptions, translationspassthroughRelay multipart gouverné, injection de clé et audit.
/v1/filesfilesDécode et inspecte fichiers texte ; bloque les téléversements non conformes, laisse passer les binaires.
/v1/fine_tuning/jobs, /v1/batchespassthroughRelay gouverné avec injection de clé et audit.

Les pixels et formes d’onde ne sont pas analysés, uniquement le texte associé. Le journal des transactions indique le type d’endpoint.

En-têtes#

En-têteFonction
Authorization: Bearer [key]Authentification client et/ou clé upstream selon la configuration.
X-Agent-IDIdentité d’agent pour suivi, routage, risque et portée du cache.
X-User-IdIdentité utilisateur ; les claims sub du token authentifié sont préférées.
x-aifw-cache-refreshIgnore la recherche cache, mais autorise l’écriture.

Requête standard#

POST /v1/chat/completions
{
  "model": "gpt-4o",
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "Hello!" }
  ],
  "stream": false
}
ChampNotes
modelFacultatif ; le modèle par défaut est utilisé s’il est omis.
messagesMessages standard ; tool_calls/tool transmis octet pour octet.
streamtrue applique le mode buffered ou live effectif.

Codes d’erreur#

Les requêtes bloquées ou refusées renvoient HTTP 400 et une erreur structurée :

{
  "error": {
    "message": "The transaction was intercepted and blocked by corporate AI security policy.",
    "type": "guardrail_violation",
    "code": "prompt_injection_detected",
    "details": { "policy_id": "BUILTIN-JAILBREAK", "timestamp": "2025-01-15T10:00:00Z" }
  }
}
CodeSignification
guardrail_violationBlocage d’une règle intégrée/personnalisée ; détails avec ID de politique.
prompt_injection_detectedRègle jailbreak/injection correspondante.
semantic_rule_violation:ruleScore sémantique au-dessus du seuil block.
model_disabledModèle enregistré mais désactivé.
model_not_registeredMode strict activé, modèle absent du registre.
backend_not_configuredURL backend absente pour le modèle choisi.
default_policy_blockAucune règle correspond et l’action implicite est block.

Les réponses bloquées comprennent X-Gateway-Security: Violated. Authentification invalide : 401 ; route inconnue : 404.

Streaming#

Avec stream: true, les réponses utilisent server-sent events et se terminent par data: [DONE].

  • buffered (défaut) : réponse complète inspectée avant livraison ; violation = 400 avant transmission.
  • stream : tokens transmis en direct ; violation en cours = arrêt SSE avec guardrail_violation. Les tokens déjà envoyés ne peuvent être retirés.

Cache#

Avec une portée configurée, les réponses peuvent provenir du completion cache. Les hits sont journalisés et le body est réinspecté à la relecture.

Pour aller plus loin#

Pour aller plus loin