فهرس النماذج

5.1 سرد النماذج

GET /lmsp/v1/models?capability=chat&ready_only=false
Authorization: Bearer <token>
معامل الاستعلام المعنى
capability يعيد النماذج التي لها القدرة المسماة فقط، مثل chat أو embeddings أو tools.
ready_only عندما تكون true يعيد النماذج التي حالتها status هي ready فقط. والقيمة الافتراضية false.
{
  "object": "list",
  "catalog_revision": "42",
  "data": [
    {
      "id": "qwen3:14b-q4_k_m",
      "object": "model",
      "display_name": "Qwen3 14B Q4_K_M",
      "owned_by": "local",
      "family": "qwen3",
      "revision": "sha256:8f27c1a4e9b05d36f2a7c8e1b4d90a63c5e2f7b8a1d4c9e60b3f5a7d2c8e1b04",
      "status": "ready",
      "capabilities": {
        "chat": true,
        "completion": true,
        "embeddings": false,
        "tools": true,
        "vision": false,
        "structured_output": true,
        "streaming": true
      },
      "input_modalities": ["text"],
      "output_modalities": ["text"],
      "context_window": 32768,
      "max_output_tokens": 8192,
      "runtime": {
        "backend": "llama.cpp",
        "device": "metal",
        "load_on_demand": true
      }
    }
  ]
}

لتجنيب العملاء جلب الفهرس كاملًا مرارًا، ينبغي للخدمة أن تعيد ترويسة ETag أو الحقل catalog_revision أو كليهما:

  • catalog_revision سلسلة معتمة تتغير كلما تغير الفهرس.
  • ينبغي للخدمة التي ترسل ETag أن ترد على If-None-Match المطابق بـ 304 Not Modified.

5.2 كائن النموذج

الحقل المعنى
id معرّف النموذج الثابت، ويُستخدم في كل طلب يسمّي نموذجًا.
object دائمًا "model".
display_name اسم مقروء للبشر. يستطيع المستخدم تغييره.
aliases قائمة اختيارية بأسماء بديلة. وهي للإعلام فقط.
owned_by مصدر النموذج. local للنماذج المثبَّتة على هذا الجهاز.
family عائلة النموذج، مثل qwen3.
revision بصمة محتوى النموذج، مثل sha256:8f27....
status حالة دورة الحياة (القسم 5.3).
capabilities رايات منطقية: chat وcompletion وembeddings وtools وvision وstructured_output وstreaming.
input_modalities, output_modalities أنواع المحتوى التي يقرؤها النموذج ويكتبها. وtext هو النمط الوحيد المعرَّف في الإصدار 1.0.
context_window الحد الأقصى لعدد رموز السياق.
max_output_tokens الحد الأقصى لعدد الرموز في استجابة واحدة.
runtime backend (مثل llama.cpp) وdevice (مثل metal) وload_on_demand.
error موجود عندما تكون status هي error. كائن مشكلة (القسم 9.3).

يجب أن يكون id النموذج ثابتًا. ويستطيع المستخدم تغيير اسم العرض والأسماء البديلة، ولذلك لا يجوز استخدامهما مفتاحًا أساسيًا.

5.3 دورة حياة النموذج

installed --> loading --> ready --> unloading --> installed
                 |
                 +-----> error
الحالة المعنى
installed النموذج موجود لكنه غير محمَّل.
loading تُخصَّص الذاكرة أو تُهيَّأ بيئة التشغيل.
ready يستطيع النموذج معالجة الطلبات فورًا.
unloading تُحرَّر الموارد.
error فشل التحميل. ينبغي أن يحمل كائن النموذج خطأً منظَّمًا.

طلب تحميل جديد ينقل النموذج من حالة error إلى loading من جديد.

عندما يسمّي طلب نموذجًا حالته installed وقيمة runtime.load_on_demand له true، تحمّله الخدمة ضمن الطلب. وإذا تعذّر استخدام النموذج فورًا ولم يكن يُحمَّل عند الطلب، ترد الخدمة بـ 409 مع model_not_ready. وإذا فشل التحميل فالخطأ هو model_load_failed.

5.4 عمليات النماذج

يعيد GET /lmsp/v1/models/{model_id} كائن نموذج واحدًا. والمعرّف المجهول يعطي 404 مع model_not_found.

نقطتا نهاية اختياريتان تتحكمان في التحميل صراحةً. وهما متاحتان عندما تكون القدرة model_management هي true، وتتطلبان النطاق models:manage (القسم 10.3):

نقطة النهاية السلوك
POST /lmsp/v1/models/{model_id}/load يحمّل النموذج مسبقًا. ويعيد كائن النموذج مع 202 Accepted عندما يبدأ التحميل، أو 200 عندما يكون النموذج ready أصلًا.
POST /lmsp/v1/models/{model_id}/unload يلغي تحميل النموذج. ويعيد كائن النموذج. وتكرار الطلب غير ضار.

كلتاهما تقبل Idempotency-Key (القسم 9.2).