API الملفات

ارفعوا مستندًا مرة واحدة، وأعيدوا استخدامه بقدر ما تشاؤون. تستخرج CloudZIR النص منه عند التسجيل : تسترجعون هذا النص وتُدرجونه في إدخالاتكم، دون إعادة إرسال الملف في كل طلب.

الرفع#

POST https://api.cloudzir.com/v1/files؛ multipart، بحقلَي file وpurpose.

from openai import OpenAI

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

with open("facture.txt", "rb") as fichier:
    envoi = client.files.create(file=fichier, purpose="assistants")

print(envoi.id, envoi.status)     # 9f2c1a7b-… processed

الاستجابة#

{
  "id": "9f2c1a7b-…",
  "object": "file",
  "bytes": 4821,
  "created_at": 1766400000,
  "filename": "facture.txt",
  "purpose": "assistants",
  "status": "processed",
  "status_details": null,
  "tokens": 1204
}

tokens هو تقدير ما سيكلفه المستند من رموز إدخال عند إدراجه؛ ما يتيح توقع الفاتورة حتى قبل استدعاء أي نموذج.

استخدام المستند#

استرجعوا النص المُستخرَج، ثم ضعوه في إدخالكم :

import httpx

texte = httpx.get(
    f"https://api.cloudzir.com/v1/files/{envoi.id}/content",
    headers={"Authorization": f"Bearer {cle}"},
).text

reponse = client.chat.completions.create(
    model="mina-low",
    messages=[
        {"role": "system", "content":
         "Réponds UNIQUEMENT à partir du document. Si l'information n'y est pas, dis-le."},
        {"role": "user", "content": f"DOCUMENT :\n{texte}\n\nQUESTION : quel est le total ?"},
    ],
)
لماذا هذه الخطوة الصريحة

ترون بدقة ما يتلقاه النموذج، وتحتفظون بزمام الأمر : استخراج مقطع، تقطيع، تلخيص. مستند مُدرَج بشكل أعمى هو السبب الأول للفواتير المفاجئة.

إدارة ملفاتكم#

الاستدعاءالأثر
GET /v1/filesيعرض قائمة ملفاتكم (فلتر ?purpose=، ?limit=).
GET /v1/files/{id}بيانات وصفية لملف.
GET /v1/files/{id}/contentالنص المُستخرَج (text/plain).
DELETE /v1/files/{id}يحذف الملف ومحتواه المُخزَّن.

ملفاتكم مرئية فقط لحسابكم : معرّف ملف لعميل آخر يُعيد 404، أبدًا محتواه.

الصيغ والقيود#

القيدالقيمة
صيغ الاستخراج المباشرtxt وmd وcsv وtsv وjson وjsonl وxml وyaml وhtml وsrt وvtt ومعظم ملفات الشيفرة
PDFيُستخرَج النص تلقائيًا (يُشار إلى ملف PDF ممسوح ضوئيًا بلا طبقة نصية). تُقطَع القراءة بعد 20 ثانية من الحساب (PDF شديد التعقيد) ويُحدَّد النص المستخرَج بـ 2 000 000 حرف : فيحمل الملف عندئذٍ status: "error" ورسالة صريحة
الحجم لكل ملف10 ميغابايت
الحجم الإجمالي لكل حساب100 ميغابايت
عدد الملفات200
purposeassistants، user_data، batch

حين لا يكون الملف قابلًا للقراءة#

ينجح الرفع رغم ذلك، لكن الملف يحمل status: "error" و status_details يقول بدقة لماذا :

{
  "id": "…", "status": "error",
  "status_details": "Type de fichier non supporté (application/octet-stream). Formats acceptés : texte, code, csv, json, markdown, pdf."
}

طلب محتوى ملف كهذا يُعيد 400 بنفس الرسالة؛ أبدًا مستندًا فارغًا قد يعطي إجابات مُختلَقة.

مستندات ممسوحة ضوئيًا

لا يمكن استخراج نص من PDF بلا طبقة نصية (صورة أو مسح ضوئي). حوّلوا الصفحات إلى صور وأرسلوها إلى النموذج : انظروا الرؤية.

تقطيع المستندات الكبيرة#

يجب تقطيع مستند أطول من نافذة النموذج. انظروا الرمز واستخدامه للنوافذ المتاحة، وضعوا في الحسبان التخزين المؤقت : بإبقاء المستند في بداية طلباتكم، قد يُفوتَر بسعر مخفّض بدءًا من السؤال الثاني المطروح عليه، حين يتعرّف التخزين المؤقت عليه (تُبيّن الاستجابة ذلك في usage).

الحذف#

لحذف ملف صراحةً، استخدموا DELETE /v1/files/{file_id}. يحذف هذا الطلب المحتوى وكائن التخزين؛ ويبقى أثر تقني للحذف. لا تُطبّق مدة انتهاء تلقائية لهذه الملفات. تُحتسَب ضمن حصة تخزينكم، لكن التخزين نفسه غير مُفوتَر : الرموز المستهلكة في استدعاءاتكم وحدها تُفوتَر.

الإعدادات

استجابة API