إكمال FIM
إكمال FIM (Fill In the Middle) يملأ فراغًا بين بادئة ولاحقة من الشيفرة. إنها الآلية الكامنة خلف الإكمال التلقائي في محرر ما : تعطون ما قبل المؤشر وما بعده، ويكتب النموذج الناقص.
نقطة النهاية#
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
}'from openai import OpenAI
client = OpenAI(api_key="zir_ai_...", base_url="https://api.cloudzir.com/v1")
reponse = client.completions.create(
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,
)
print(reponse.choices[0].text)
# → return sum(valeurs) / len(valeurs)const reponse = await client.completions.create({
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,
});
console.log(reponse.choices[0].text);الاستجابة#
{
"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}
}
يحتوي حقل text على الجزء الناقص فقط : لا البادئة، ولا
اللاحقة. تعيدون بناء الملف بـprompt + text + suffix.
المعاملات#
| الحقل | الوصف |
|---|---|
model إلزامي | mina-flash أو mina-low أو mina-full. |
prompt إلزامي | الشيفرة قبل المؤشر. |
suffix | الشيفرة بعد المؤشر. بدونها، إنه مجرد إكمال نهاية بسيط. |
max_tokens | افتراضيًا 256. محدود بسقف النموذج. |
temperature، top_p | للشيفرة، ابقوا منخفضين (0 إلى 0,2). |
stop | 4 سلاسل كحد أقصى. |
user | معرّف مستخدمكم النهائي (عزل الحدود). |
لا بث مباشر هنا
"stream": true يُعيد 400 على نقطة النهاية هذه.
إكمال المحرر قصير : يصل دفعة واحدة. للبث المباشر، استخدموا
/v1/chat/completions.
ربط محرر#
أي إضافة تتحدث «OpenAI completions» تعمل : وجّهوها نحو
https://api.cloudzir.com/v1 بالنموذج mina-flash.
اختيار النموذج
للإكمال التلقائي، لا يهم سوى زمن الاستجابة : اختاروا
mina-flash، مع max_tokens ضيّق (64 إلى 128) ودرجة
حرارة 0. إكمال يصل بعد ثانية لم يعد يُستخدَم من طرف المطور.
التحكم في التكلفة#
- لا تنقلوا الملف كاملًا : 30 إلى 60 سطرًا قبل المؤشر و10 إلى 20 بعده تكفي غالبًا.
- أطلقوا الإكمال عند توقف الكتابة (150 إلى 300 مللي ثانية)، لا عند كل حرف.
- ألغوا الطلب الجاري حين يواصل المستخدم الكتابة.
القيود#
prompt+suffix: 200 000 حرف إجمالًا.- لا بث مباشر، لا استدعاء أدوات، لا صور على نقطة النهاية هذه.
n> 1 غير مدعوم : إكمال واحد فقط لكل طلب.