For the complete documentation index, see llms.txt. This page is also available as Markdown.

Chat completions

L’endpoint POST /v1/chat/completions est le point d’entrée principal pour la génération de texte. Le corps de requête et la réponse s’inspirent du modèle OpenAI Chat Completions : messages, paramètres de décodage, response_format, streaming et outils (tools / tool_calls).

Quel type de modèle ?

Pour POST /v1/chat/completions, vous devez utiliser un modèle de type text-generation (voir Types de modèles).

Avant de commencer

1) Définir votre clé API

export ALBERT_API_KEY="votre_jeton"

2) Choisir un modèle text-generation

curl -sS "https://albert.api.etalab.gouv.fr/v1/models" \
  -H "Authorization: Bearer $ALBERT_API_KEY"
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://albert.api.etalab.gouv.fr/v1",
    api_key=os.environ["ALBERT_API_KEY"],
)

models = client.models.list().data
model = [m for m in models if m.type == "text-generation"][0].id
print("Modèle chat trouvé :", model)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://albert.api.etalab.gouv.fr/v1",
  apiKey: process.env.ALBERT_API_KEY,
});

const models = (await client.models.list()).data;
const model = models.find((m) => m.type === "text-generation")?.id;
console.log("Modèle chat trouvé :", model);

Unstreamed chat

curl -sS "https://albert.api.etalab.gouv.fr/v1/chat/completions" \
  -H "Authorization: Bearer $ALBERT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "REMPLACER_PAR_MODELE_TEXT_GENERATION",
    "messages": [
      {"role": "system", "content": "Tu réponds en français, de façon concise."},
      {"role": "user", "content": "Explique ce qu’est une API compatible OpenAI en deux phrases."}
    ],
    "stream": false
  }'
resp = client.chat.completions.create(
    model=model,
    messages=[
        {"role": "system", "content": "Tu réponds en français, de façon concise."},
        {"role": "user", "content": "Explique ce qu’est une API compatible OpenAI en deux phrases."},
    ],
    stream=False,
)

print(resp.choices[0].message.content)

Streaming (SSE)

Pour activer le streaming, passez stream=True. Le SDK OpenAI renvoie une suite de chunks (deltas) jusqu’à la fin du flux.

Voir aussi le guide Streaming.

Format de réponse (response_format)

  • {"type": "json_object"} : JSON valide (mode “JSON”). Vous devez aussi demander explicitement du JSON côté prompt (system / user) pour éviter des sorties longues inutiles.

  • {"type": "json_schema", "json_schema": { ... }} : sorties structurées guidées par un schéma JSON (approche proche des Structured Outputs).

Outils et tool_calls

Le champ tools permet forcer le modèle à gérer des fonctions au format JSON Schema. Le mécanisme tools / tool_choice est décrit dans Function calling.

Multimodal (image + texte) via chat/completions

Albert API peut accepter des entrées multimodales via POST /v1/chat/completions en passant, dans un message user, un content structuré (liste) combinant :

  • {"type": "text", "text": "..."}

  • {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}

Choisissez un modèle dont le type est généralement image-text-to-text (ou image-to-text selon l’instance).

Last updated

Was this helpful?