FIM Completion și Chat Prefix Completion (Beta) în API-ul DeepSeek în DeepSeek (V4 & R1)

API și Integrare Producție DeepSeek API (octombrie 2026)

Două funcții Beta ale API-ului DeepSeek: FIM completează textul dintre un început și un final dat, iar Chat Prefix Completion obligă modelul să continue un început de răspuns scris de tine.

Sintaxă & invocare
client = OpenAI(api_key=..., base_url="https://api.deepseek.com/beta")
client.completions.create(model="deepseek-flash", prompt="...", suffix="...")
{"role": "assistant", "content": "...", "prefix": True}

În FIM (Fill In the Middle) dai un început (prompt) și, opțional, un final (suffix), iar modelul scrie ce lipsește între ele; e folosit mai ales la completarea de cod. Endpoint-ul este POST /completions, nu /chat/completions, și cere base_url="https://api.deepseek.com/beta". Ieșirea are cel mult 4K tokeni, iar tabelul de modele spune că FIM funcționează doar în modul non-thinking. Documentația dă extensia Continue pentru VS Code ca exemplu de integrare.

Chat Prefix Completion folosește Chat Completions: ultimul mesaj din messages are rolul assistant și "prefix": True, iar modelul continuă exact de acolo. Cere tot base_url terminat în /beta. În modul thinking, ultimul mesaj poate avea și reasoning_content, folosit ca început al raționamentului.

Împreună cu stop (până la 16 secvențe), prefixul controlează formatul. În exemplul oficial, prefixul "```python\n" și stop=["```"] fac modelul să scrie doar cod Python, fără explicații înainte sau după.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
POST /completions Endpoint-ul FIM (Beta); modele: deepseek-flash, deepseek-v4-pro.
prompt Textul de dinaintea golului (obligatoriu).
suffix Textul de după gol (opțional).
max_tokens La FIM, ieșirea are cel mult 4K tokeni.
echo Repetă promptul în răspuns; nu se poate folosi împreună cu suffix sau logprobs.
stop Până la 16 secvențe; textul întors nu conține secvența de oprire.
prefix: True Pe ultimul mesaj assistant: modelul continuă acest început.
reasoning_content (cu prefix) Început de raționament pentru Chat Prefix Completion în modul thinking.

Exemple practice și scenarii reale

Exemplul 1: FIM: completarea corpului unei funcții

Exemplul oficial: se dau începutul și finalul funcției Fibonacci.

import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com/beta")
r = client.completions.create(
    model="deepseek-flash",
    prompt="def fib(a):",
    suffix="    return fib(a-1) + fib(a-2)",
    max_tokens=128,
)
print(r.choices[0].text)

Exemplul 2: Chat Prefix Completion: doar cod

messages = [
    {"role": "user", "content": "Scrie un quicksort în Python."},
    {"role": "assistant", "content": "```python\n", "prefix": True},
]
r = client.chat.completions.create(model="deepseek-flash", messages=messages, stop=["```"])
print(r.choices[0].message.content)

Greșeli frecvente și capcane

  • Lași base_url fără /beta. Funcțiile Beta nu sunt active pe adresa obișnuită.
  • Apelezi FIM prin /chat/completions. FIM folosește client.completions.create (POST /completions).
  • Ultimul mesaj nu este assistant sau nu are prefix setat. Prefix completion cere ambele condiții.

Noțiuni și module înrudite