Complétion FIM

La complétion FIM (Fill In the Middle) remplit un trou entre un préfixe et un suffixe de code. C'est le mécanisme derrière l'autocomplétion d'un éditeur : vous donnez ce qu'il y a avant et après le curseur, le modèle écrit ce qui manque.

Endpoint#

POST https://api.cloudzir.com/v1/completions

curl https://api.cloudzir.com/v1/completions \
  -H "Authorization: Bearer $CLOUDZIR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mina-flash",
    "prompt": "def moyenne(valeurs):\n    if not valeurs:\n        return 0.0\n",
    "suffix": "\n\nprint(moyenne([1, 2, 3]))",
    "max_tokens": 80,
    "temperature": 0
  }'

Réponse#

{
  "id": "cmpl-4334a6f158894999",
  "object": "text_completion",
  "created": 1766400000,
  "model": "mina-flash",
  "choices": [{
    "index": 0,
    "text": "    return sum(valeurs) / len(valeurs)",
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {"prompt_tokens": 36, "completion_tokens": 13, "total_tokens": 49}
}

Le champ text contient uniquement ce qui manque : ni le préfixe, ni le suffixe. Vous reconstituez le fichier avec prompt + text + suffix.

Paramètres#

ChampDescription
model requismina-flash, mina-low ou mina-full.
prompt requisLe code AVANT le curseur.
suffixLe code APRÈS le curseur. Sans lui, c'est une simple complétion de fin.
max_tokensDéfaut 256. Plafonné par le modèle.
temperature, top_pPour du code, restez bas (0 à 0,2).
stop4 séquences maximum.
userIdentifiant de votre utilisateur final (isolement des limites).
Pas de streaming ici

"stream": true renvoie un 400 sur cet endpoint. Une complétion d'éditeur est courte : elle arrive en un seul morceau. Pour du streaming, utilisez /v1/chat/completions.

Brancher un éditeur#

Toute extension qui parle « OpenAI completions » fonctionne : pointez-la sur https://api.cloudzir.com/v1 avec le modèle mina-flash.

Choisir le modèle

Pour de l'autocomplétion, seul compte le temps de réponse : prenez mina-flash, avec un max_tokens serré (64 à 128) et une température à 0. Une complétion qui arrive après une seconde n'est plus utilisée par le développeur.

Maîtriser le coût#

  • Ne transmettez pas tout le fichier : 30 à 60 lignes avant le curseur et 10 à 20 après suffisent presque toujours.
  • Déclenchez la complétion sur pause de frappe (150 à 300 ms), pas à chaque caractère.
  • Annulez la requête en cours quand l'utilisateur continue de taper.

Limites#

  • prompt + suffix : 200 000 caractères au total.
  • Pas de streaming, pas d'appels d'outils, pas d'images sur cet endpoint.
  • n > 1 non supporté : une seule complétion par requête.

Paramètres

Réponse API