API Responses

API Responses هي الصيغة الأحدث من OpenAI، المتوقَعة افتراضيًا من طرف بعض الأدوات؛ خصوصًا Codex CLI. تعرضها CloudZIR : نفس النماذج، نفس الأسعار، نفس الحدود مثل Chat Completions.

نقطة النهاية#

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

from openai import OpenAI

client = OpenAI(api_key="zir_ai_...", base_url="https://api.cloudzir.com/v1")

reponse = client.responses.create(
    model="mina-low",
    instructions="Tu es un assistant concis, en français.",
    input="Explique le DNS en trois phrases.",
    max_output_tokens=300,
)

print(reponse.output_text)

الاستجابة#

{
  "id": "resp_4334a6f158894999",
  "object": "response",
  "created_at": 1766400000,
  "status": "completed",
  "model": "mina-low",
  "output": [{
    "type": "message",
    "id": "msg_4334a6f158894999",
    "status": "completed",
    "role": "assistant",
    "content": [{"type": "output_text", "text": "Le DNS traduit…", "annotations": []}]
  }],
  "output_text": "Le DNS traduit…",
  "incomplete_details": null,
  "usage": {
    "input_tokens": 28, "output_tokens": 96, "total_tokens": 124,
    "input_tokens_details": {"cached_tokens": 0},
    "output_tokens_details": {"reasoning_tokens": 0}
  }
}

الحقول المدعومة#

الحقلالوصف
model إلزاميmina-flash، mina-low، mina-full.
input إلزاميسلسلة نصية، أو قائمة رسائل بأجزاء input_text / input_image.
instructionsمكافئ لرسالة نظام.
max_cost_micro_dzdسقف إنفاق بالميكرو دينار جزائري، متاح فقط مع mina-auto. يفشل الطلب إذا تجاوزه.
max_output_tokensمحدود بسقف النموذج.
temperature، top_p، userكما في Chat Completions.
reasoning.effortminimal / low / medium / high، أو none لإيقاف التفكير؛ وضع التفكير.
text.format{"type": "json_object"}؛ إخراج JSON.
tools، tool_choiceدوالكم الخاصة (صيغة مسطّحة من Responses أو صيغة متداخلة).
streamأحداث response.output_text.delta، ثم response.completed.

ما هو مرفوض (ولماذا)#

لا حالة من جهة الخادم

يُرفَض previous_response_id وstore: true بالرمز 400 صراحةً. لا تحتفظ CloudZIR باستجاباتكم : قبولهما بصمت كان سينتج نموذجًا فاقدًا للذاكرة؛ سيجيب دون السياق الذي تظنون أنكم أرسلتموه. أعيدوا إرسال التاريخ الكامل في input، كما في Chat Completions.

الأدوات المدمجة (web_search، code_interpreter، file_search) غير متاحة : عرّفوا دوالكم الخاصة (استدعاء الأدوات). تُرفَض صراحةً بدل تجاهلها.

في input تُعالَج العناصر message وfunction_call وfunction_call_output. أما العنصر reasoning (الذي قد تتضمنه الاستجابة في output، وتعيد أداة بلا حالة مثل Codex إرساله في الدور التالي) فيُقبَل ثم يُهمَل : فهو يصف استدلال دورٍ سابق ولا يُمرَّر إلى النموذج. ويُرفَض العنصر من أي نوع آخر بالرمز 400 ويكون معامله input[i].type.

الصور#

reponse = client.responses.create(
    model="mina-low",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Que montre cette image ?"},
            {"type": "input_image", "image_url": f"data:image/png;base64,{image}"},
        ],
    }],
)

نفس القواعد كما في Chat Completions : انظروا الرؤية.

البث المباشر#

event: response.created
data: {"type":"response.created","response":{"id":"resp_…","status":"in_progress",…}}

event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"Le ","output_index":0,…}

event: response.output_text.done
data: {"type":"response.output_text.done","text":"Le DNS traduit…",…}

event: response.completed
data: {"type":"response.completed","response":{…,"status":"completed","usage":{…}}}

المقابلة مع Chat Completions#

ResponsesChat Completions
inputmessages
instructionsرسالة system
max_output_tokensmax_tokens
output_textchoices[0].message.content
usage.input_tokensusage.prompt_tokens
status: "incomplete"finish_reason: "length"
أيهما تختارون

تؤدي الواجهتان إلى نفس المحرك، بنفس السعر. اختاروا Responses إن كانت أداتكم تتوقعها (Codex)، وإلا يبقى Chat Completions الصيغة الأوسع دعمًا.

الإعدادات

استجابة API