Skip to content

واجهة برمجة التطبيقات (API)

ملاحظة: تنتقل وثائق واجهة برمجة التطبيقات (API) الخاصة بـ Ollama إلى https://docs.ollama.com/api

نقاط النهاية

الاتفاقيات

أسماء النماذج

تتبع أسماء النماذج التنسيق model:tag، حيث يمكن أن يحتوي حقل model على نطاق اختياري مثل example/model. بعض الأمثلة هي orca-mini:3b-q8_0 و llama3:70b. العلامة (tag) اختيارية، وإذا لم يتم توفيرها، فستكون قيمتها الافتراضية latest. تُستخدم العلامة لتحديد إصدار محدد.

المدد الزمنية

يتم إرجاع جميع المدد الزمنية بوحدة النانوثانية.

الاستجابات المتدفقة

تقوم بعض نقاط النهاية بتدفق الاستجابات ككائنات JSON. يمكن تعطيل التدفق عن طريق توفير {"stream": false} لهذه النقاط.

إنشاء إكمال

POST /api/generate

إنشاء استجابة لمطالبة معينة باستخدام نموذج محدد. هذه نقطة نهاية متدفقة، لذا ستكون هناك سلسلة من الاستجابات. سيتضمن كائن الاستجابة النهائي إحصائيات وبيانات إضافية من الطلب.

المعاملات

  • model: (مطلوب) اسم النموذج
  • prompt: المطالبة التي سيتم إنشاء استجابة لها
  • suffix: النص الذي يلي استجابة النموذج
  • images: (اختياري) قائمة بالصور المشفرة بتنسيق base64 (للنماذج متعددة الوسائط مثل llava)
  • think: (للنماذج التي تدعم التفكير) هل يجب على النموذج التفكير قبل الاستجابة؟ يمكن أن تكون قيمة منطقية (boolean) أو مستوى تفكير ("low"، "medium"، "high"، أو "max").

معاملات متقدمة (اختيارية):

  • format: التنسيق الذي سيتم إرجاع الاستجابة به. يمكن أن يكون التنسيق json أو مخطط JSON (JSON schema)
  • options: معاملات نموذج إضافية مذكورة في وثائق Modelfile مثل temperature
  • system: رسالة النظام (تتجاوز ما هو معرف في ملف Modelfile)
  • template: قالب المطالبة الذي سيتم استخدامه (تتجاوز ما هو معرف في ملف Modelfile)
  • stream: إذا كانت القيمة false، فسيتم إرجاع الاستجابة ككائن استجابة واحد، بدلاً من تدفق من الكائنات
  • raw: إذا كانت القيمة true، فلن يتم تطبيق أي تنسيق على المطالبة. يمكنك اختيار استخدام معامل raw إذا كنت تحدد مطالبة قالب كاملة في طلبك إلى واجهة برمجة التطبيقات (API)
  • keep_alive: يتحكم في المدة التي سيبقى فيها النموذج محملاً في الذاكرة بعد الطلب (الافتراضي: 5m)
  • context (مهمل): معامل السياق الذي يتم إرجاعه من طلب سابق إلى /generate، ويمكن استخدامه للحفاظ على ذاكرة محادثة قصيرة

معاملات توليد الصور التجريبية (للنماذج التي تولد الصور فقط):

WARNING

هذه المعاملات تجريبية وقد تتغير في الإصدارات المستقبلية.

  • width: عرض الصورة المولدة بالبكسل
  • height: ارتفاع الصورة المولدة بالبكسل
  • steps: عدد خطوات الانتشار (diffusion steps)

المخرجات المنظمة

يتم دعم المخرجات المنظمة عن طريق توفير مخطط JSON في معامل format. سيقوم النموذج بإنشاء استجابة تطابق المخطط. انظر إلى مثال المخرجات المنظمة أدناه.

وضع JSON

تفعيل وضع JSON عن طريق تعيين معامل format إلى json. سيؤدي هذا إلى هيكلة الاستجابة ككائن JSON صالح. انظر إلى مثال وضع JSON أدناه.

IMPORTANT

من المهم توجيه النموذج لاستخدام JSON في حقل prompt. وإلا، قد يقوم النموذج بتوليد كميات كبيرة من المسافات البيضاء.

الأمثلة

طلب إنشاء (متدفق)

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?"
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{
  "model": "llama3.2",
  "created_at": "2023-08-04T08:52:19.385406455-07:00",
  "response": "The",
  "done": false
}

تتضمن الاستجابة النهائية في التدفق بيانات إضافية حول عملية التوليد:

  • total_duration: الوقت المستغرق في إنشاء الاستجابة
  • load_duration: الوقت المستغرق بالنانوثانية في تحميل النموذج
  • prompt_eval_count: عدد الرموز (tokens) في المطالبة
  • prompt_eval_duration: الوقت المستغرق بالنانوثانية في تقييم المطالبة
  • eval_count: عدد الرموز (tokens) في الاستجابة
  • eval_duration: الوقت المستغرق بالنانوثانية في إنشاء الاستجابة
  • context: ترميز للمحادثة المستخدمة في هذه الاستجابة، ويمكن إرساله في الطلب التالي للحفاظ على ذاكرة المحادثة
  • response: فارغة إذا كانت الاستجابة متدفقة، وإذا لم تكن متدفقة، فستحتوي على الاستجابة الكاملة

لحساب سرعة إنشاء الاستجابة بالرموز في الثانية (token/s)، اقسم eval_count على eval_duration واضرب الناتج في 10^9.

json
{
  "model": "llama3.2",
  "created_at": "2023-08-04T19:22:45.499127Z",
  "response": "",
  "done": true,
  "context": [1, 2, 3],
  "total_duration": 10706818083,
  "load_duration": 6338219291,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 130079000,
  "eval_count": 259,
  "eval_duration": 4232710000
}

طلب (بدون تدفق)

الطلب

يمكن استلام الاستجابة في رد واحد عند إيقاف التدفق.

shell
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?",
  "stream": false
}'
الاستجابة

إذا تم تعيين stream إلى false، فستكون الاستجابة كائن JSON واحد:

json
{
  "model": "llama3.2",
  "created_at": "2023-08-04T19:22:45.499127Z",
  "response": "The sky is blue because it is the color of the sky.",
  "done": true,
  "context": [1, 2, 3],
  "total_duration": 5043500667,
  "load_duration": 5025959,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 325953000,
  "eval_count": 290,
  "eval_duration": 4709213000
}

طلب (مع لاحقة)

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "codellama:code",
  "prompt": "def compute_gcd(a, b):",
  "suffix": "    return result",
  "options": {
    "temperature": 0
  },
  "stream": false
}'
الاستجابة
json5
{
  "model": "codellama:code",
  "created_at": "2024-07-22T20:47:51.147561Z",
  "response": "\n  if a == 0:\n    return b\n  else:\n    return compute_gcd(b % a, a)\n\ndef compute_lcm(a, b):\n  result = (a * b) / compute_gcd(a, b)\n",
  "done": true,
  "done_reason": "stop",
  "context": [...],
  "total_duration": 1162761250,
  "load_duration": 6683708,
  "prompt_eval_count": 17,
  "prompt_eval_duration": 201222000,
  "eval_count": 63,
  "eval_duration": 953997000
}

طلب (مع مخرجات منظمة)

الطلب
shell
curl -X POST http://localhost:11434/api/generate -H "Content-Type: application/json" -d '{
  "model": "llama3.1:8b",
  "prompt": "Ollama is 22 years old and is busy saving the world. Respond using JSON",
  "stream": false,
  "format": {
    "type": "object",
    "properties": {
      "age": {
        "type": "integer"
      },
      "available": {
        "type": "boolean"
      }
    },
    "required": [
      "age",
      "available"
    ]
  }
}'
الاستجابة
json
{
  "model": "llama3.1:8b",
  "created_at": "2024-12-06T00:48:09.983619Z",
  "response": "{\n  \"age\": 22,\n  \"available\": true\n}",
  "done": true,
  "done_reason": "stop",
  "context": [1, 2, 3],
  "total_duration": 1075509083,
  "load_duration": 567678166,
  "prompt_eval_count": 28,
  "prompt_eval_duration": 236000000,
  "eval_count": 16,
  "eval_duration": 269000000
}

طلب (وضع JSON)

IMPORTANT

عند تعيين format إلى json، ستكون المخرجات دائماً كائن JSON صالح التنسيق. من المهم أيضاً توجيه النموذج للاستجابة بتنسيق JSON.

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "What color is the sky at different times of the day? Respond using JSON",
  "format": "json",
  "stream": false
}'
الاستجابة
json
{
  "model": "llama3.2",
  "created_at": "2023-11-09T21:07:55.186497Z",
  "response": "{\n\"morning\": {\n\"color\": \"blue\"\n},\n\"noon\": {\n\"color\": \"blue-gray\"\n},\n\"afternoon\": {\n\"color\": \"warm gray\"\n},\n\"evening\": {\n\"color\": \"orange\"\n}\n}\n",
  "done": true,
  "context": [1, 2, 3],
  "total_duration": 4648158584,
  "load_duration": 4071084,
  "prompt_eval_count": 36,
  "prompt_eval_duration": 439038000,
  "eval_count": 180,
  "eval_duration": 4196918000
}

ستكون قيمة response سلسلة نصية تحتوي على JSON مشابه لما يلي:

json
{
  "morning": {
    "color": "blue"
  },
  "noon": {
    "color": "blue-gray"
  },
  "afternoon": {
    "color": "warm gray"
  },
  "evening": {
    "color": "orange"
  }
}

طلب (مع صور)

لتقديم الصور إلى النماذج متعددة الوسائط مثل llava أو bakllava، قم بتوفير قائمة من images المشفرة بتنسيق base64:

الطلب

shell
curl http://localhost:11434/api/generate -d '{
  "model": "llava",
  "prompt":"What is in this picture?",
  "stream": false,
  "images": ["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"]
}'
الاستجابة
json
{
  "model": "llava",
  "created_at": "2023-11-03T15:36:02.583064Z",
  "response": "A happy cartoon character, which is cute and cheerful.",
  "done": true,
  "context": [1, 2, 3],
  "total_duration": 2938432250,
  "load_duration": 2559292,
  "prompt_eval_count": 1,
  "prompt_eval_duration": 2195557000,
  "eval_count": 44,
  "eval_duration": 736432000
}

طلب (الوضع الخام)

في بعض الحالات، قد ترغب في تجاوز نظام القوالب وتقديم مطالبة كاملة. في هذه الحالة، يمكنك استخدام معامل raw لتعطيل نظام القوالب. لاحظ أيضاً أن الوضع الخام لن يُرجع قيمة سياق (context).

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "mistral",
  "prompt": "[INST] why is the sky blue? [/INST]",
  "raw": true,
  "stream": false
}'

طلب (مخرجات قابلة للتكرار)

للحصول على مخرجات قابلة للتكرار، عيّن seed إلى رقم:

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "mistral",
  "prompt": "Why is the sky blue?",
  "options": {
    "seed": 123
  }
}'
الاستجابة
json
{
  "model": "mistral",
  "created_at": "2023-11-03T15:36:02.583064Z",
  "response": " The sky appears blue because of a phenomenon called Rayleigh scattering.",
  "done": true,
  "total_duration": 8493852375,
  "load_duration": 6589624375,
  "prompt_eval_count": 14,
  "prompt_eval_duration": 119039000,
  "eval_count": 110,
  "eval_duration": 1779061000
}

طلب إنشاء (مع معاملات)

إذا كنت تريد تعيين معاملات مخصصة للنموذج في وقت التشغيل بدلاً من تعريفها في ملف Modelfile، يمكنك القيام بذلك باستخدام معامل options. يضبط هذا المثال جميع المعاملات المتاحة، ولكن يمكنك تعيين أي منها بشكل فردي وحذف المعاملات التي لا ترغب في تجاوزها.

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?",
  "stream": false,
  "options": {
    "num_keep": 5,
    "seed": 42,
    "num_predict": 100,
    "draft_num_predict": 4,
    "top_k": 20,
    "top_p": 0.9,
    "min_p": 0.0,
    "typical_p": 0.7,
    "repeat_last_n": 33,
    "temperature": 0.8,
    "repeat_penalty": 1.2,
    "presence_penalty": 1.5,
    "frequency_penalty": 1.0,
    "penalize_newline": true,
    "stop": ["\n", "user:"],
    "numa": false,
    "num_ctx": 1024,
    "num_batch": 2,
    "num_gpu": 1,
    "main_gpu": 0,
    "use_mmap": true,
    "num_thread": 8
  }
}'
الاستجابة
json
{
  "model": "llama3.2",
  "created_at": "2023-08-04T19:22:45.499127Z",
  "response": "The sky is blue because it is the color of the sky.",
  "done": true,
  "context": [1, 2, 3],
  "total_duration": 4935886791,
  "load_duration": 534986708,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 107345000,
  "eval_count": 237,
  "eval_duration": 4289432000
}

تحميل نموذج

إذا تم توفير مطالبة فارغة، فسيتم تحميل النموذج إلى الذاكرة.

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2"
}'
الاستجابة

يتم إرجاع كائن JSON واحد:

json
{
  "model": "llama3.2",
  "created_at": "2023-12-18T19:52:07.071755Z",
  "response": "",
  "done": true
}

إلغاء تحميل نموذج

إذا تم توفير مطالبة فارغة وتم تعيين معامل keep_alive إلى 0، فسيتم إلغاء تحميل النموذج من الذاكرة.

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "keep_alive": 0
}'
الاستجابة

يتم إرجاع كائن JSON واحد:

json
{
  "model": "llama3.2",
  "created_at": "2024-09-12T03:54:03.516566Z",
  "response": "",
  "done": true,
  "done_reason": "unload"
}

إنشاء إكمال محادثة

POST /api/chat

يُنشئ الرسالة التالية في محادثة باستخدام نموذج معين. هذه نقطة نهاية دفقية (streaming)، لذا ستكون هناك سلسلة من الاستجابات. يمكن تعطيل البث المتدفق باستخدام "stream": false. كائن الاستجابة النهائي سيتضمن إحصائيات وبيانات إضافية من الطلب.

المعاملات

  • model: (مطلوب) اسم النموذج
  • messages: رسائل المحادثة، يمكن استخدام هذا للحفاظ على ذاكرة المحادثة
  • tools: قائمة بالأدوات بتنسيق JSON لاستخدامها من قبل النموذج إذا كان مدعوماً
  • think: (للنماذج التي تدعم التفكير) هل يجب على النموذج التفكير قبل الرد؟ يمكن أن تكون قيمة منطقية (boolean) أو مستوى تفكير ("low", "medium", "high", أو "max"). كائن message يحتوي على الحقول التالية:
  • role: دور الرسالة، إما system أو user أو assistant أو tool
  • content: محتوى الرسالة
  • thinking: (للنماذج التي تدعم التفكير) عملية تفكير النموذج
  • images (اختياري): قائمة بالصور لتضمينها في الرسالة (للنماذج متعددة الوسائط مثل llava)
  • tool_calls (اختياري): قائمة بالأدوات بتنسيق JSON التي يرغب النموذج في استخدامها
  • tool_name (اختياري): إضافة اسم الأداة التي تم تنفيذها لإعلام النموذج بالنتيجة

المعاملات المتقدمة (اختياري):

  • format: التنسيق الذي سيتم إرجاع الاستجابة به. يمكن أن يكون التنسيق json أو مخطط JSON.
  • options: معاملات نموذج إضافية مذكورة في وثائق Modelfile مثل temperature
  • stream: إذا كانت القيمة false، سيتم إرجاع الاستجابة ككائن استجابة واحد، بدلاً من تدفق من الكائنات
  • keep_alive: يتحكم في المدة التي سيبقى فيها النموذج محملاً في الذاكرة بعد الطلب (الافتراضي: 5m)

استدعاء الأدوات

يتم دعم استدعاء الأدوات عن طريق توفير قائمة بالأدوات في معامل tools. سيقوم النموذج بتوليد استجابة تتضمن قائمة باستدعاءات الأدوات. راجع المثال طلب محادثة (بث متدفق مع أدوات) أدناه. يمكن للنماذج أيضاً شرح نتيجة استدعاء الأداة في الاستجابة. راجع المثال طلب محادثة (مع سجل محادثات، مع أدوات) أدناه. انظر النماذج التي تدعم إمكانيات استدعاء الأدوات.

المخرجات المنظمة

يتم دعم المخرجات المنظمة عن طريق توفير مخطط JSON في معامل format. سيقوم النموذج بتوليد استجابة تطابق المخطط. راجع المثال طلب محادثة (مخرجات منظمة) أدناه.

الأمثلة

طلب محادثة (بث متدفق)

الطلب

إرسال رسالة محادثة مع استجابة بث متدفق.

shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "why is the sky blue? "
    }
  ]
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{
  "model": "llama3. 2",
  "created_at": "2023-08-04T08:52:19. 385406455-07:00",
  "message": {
    "role": "assistant",
    "content": "The",
    "images": null
  },
  "done": false
}

الاستجابة النهائية:

json
{
  "model": "llama3. 2",
  "created_at": "2023-08-04T19:22:45. 499127Z",
  "message": {
    "role": "assistant",
    "content": ""
  },
  "done": true,
  "total_duration": 4883583458,
  "load_duration": 1334875,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 342546000,
  "eval_count": 282,
  "eval_duration": 4535599000
}

طلب محادثة (بث متدفق مع أدوات)

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "what is the weather in tokyo? "
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the weather in a given city",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "The city to get the weather for"
            }
          },
          "required": ["city"]
        }
      }
    }
  ],
  "stream": true
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{
  "model": "llama3. 2",
  "created_at": "2025-07-07T20:22:19. 184789Z",
  "message": {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "function": {
          "name": "get_weather",
          "arguments": {
            "city": "Tokyo"
          }
        }
      }
    ]
  },
  "done": false
}

الاستجابة النهائية:

json
{
  "model": "llama3. 2",
  "created_at": "2025-07-07T20:22:19. 19314Z",
  "message": {
    "role": "assistant",
    "content": ""
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 182242375,
  "load_duration": 41295167,
  "prompt_eval_count": 169,
  "prompt_eval_duration": 24573166,
  "eval_count": 15,
  "eval_duration": 115959084
}

طلب محادثة (بدون بث متدفق)

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "why is the sky blue? "
    }
  ],
  "stream": false
}'
الاستجابة
json
{
  "model": "llama3. 2",
  "created_at": "2023-12-12T14:13:43. 416799Z",
  "message": {
    "role": "assistant",
    "content": "Hello! How are you today? "
  },
  "done": true,
  "total_duration": 5191566416,
  "load_duration": 2154458,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 383809000,
  "eval_count": 298,
  "eval_duration": 4799921000
}

طلب محادثة (بدون بث متدفق، مع أدوات)

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "what is the weather in tokyo? "
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the weather in a given city",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "The city to get the weather for"
            }
          },
          "required": ["city"]
        }
      }
    }
  ],
  "stream": false
}'
الاستجابة
json
{
  "model": "llama3. 2",
  "created_at": "2025-07-07T20:32:53. 844124Z",
  "message": {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "function": {
          "name": "get_weather",
          "arguments": {
            "city": "Tokyo"
          }
        }
      }
    ]
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 3244883583,
  "load_duration": 2969184542,
  "prompt_eval_count": 169,
  "prompt_eval_duration": 141656333,
  "eval_count": 18,
  "eval_duration": 133293625
}

طلب محادثة (مخرجات منظمة)

الطلب
shell
curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
  "model": "llama3. 1",
  "messages": [{"role": "user", "content": "Ollama is 22 years old and busy saving the world. Return a JSON object with the age and availability. "}],
  "stream": false,
  "format": {
    "type": "object",
    "properties": {
      "age": {
        "type": "integer"
      },
      "available": {
        "type": "boolean"
      }
    },
    "required": [
      "age",
      "available"
    ]
  },
  "options": {
    "temperature": 0
  }
}'
الاستجابة
json
{
  "model": "llama3. 1",
  "created_at": "2024-12-06T00:46:58. 265747Z",
  "message": {
    "role": "assistant",
    "content": "{\"age\": 22, \"available\": false}"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 2254970291,
  "load_duration": 574751416,
  "prompt_eval_count": 34,
  "prompt_eval_duration": 1502000000,
  "eval_count": 12,
  "eval_duration": 175000000
}

طلب محادثة (مع سجل المحادثات)

إرسال رسالة محادثة مع سجل محادثات. يمكنك استخدام نفس النهج لبدء المحادثة باستخدام الاستفهام متعدد اللقطات (multi-shot) أو الاستفهام عبر سلسلة التفكير (chain-of-thought).

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "why is the sky blue? "
    },
    {
      "role": "assistant",
      "content": "due to rayleigh scattering. "
    },
    {
      "role": "user",
      "content": "how is that different than mie scattering? "
    }
  ]
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{
  "model": "llama3. 2",
  "created_at": "2023-08-04T08:52:19. 385406455-07:00",
  "message": {
    "role": "assistant",
    "content": "The"
  },
  "done": false
}

الاستجابة النهائية:

json
{
  "model": "llama3. 2",
  "created_at": "2023-08-04T19:22:45. 499127Z",
  "done": true,
  "total_duration": 8113331500,
  "load_duration": 6396458,
  "prompt_eval_count": 61,
  "prompt_eval_duration": 398801000,
  "eval_count": 468,
  "eval_duration": 7701267000
}

طلب محادثة (مع سجل محادثات، مع أدوات)

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "what is the weather in Toronto? "
    },
    // الرسالة من النموذج المضافة إلى سجل المحادثات
    {
      "role": "assistant",
      "content": "",
      "tool_calls": [
        {
          "function": {
            "name": "get_weather",
            "arguments": {
              "city": "Toronto"
            }
          }
        }
      ]
    },
    // نتيجة استدعاء الأداة المضافة إلى سجل المحادثات
    {
      "role": "tool",
      "content": "11 degrees celsius",
      "tool_name": "get_weather"
    }
  ],
  "stream": false,
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the weather in a given city",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "The city to get the weather for"
            }
          },
          "required": ["city"]
        }
      }
    }
  ]
}'
الاستجابة
json
{
  "model": "llama3. 2",
  "created_at": "2025-07-07T20:43:37. 688511Z",
  "message": {
    "role": "assistant",
    "content": "The current temperature in Toronto is 11°C. "
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 890771750,
  "load_duration": 707634750,
  "prompt_eval_count": 94,
  "prompt_eval_duration": 91703208,
  "eval_count": 11,
  "eval_duration": 90282125
}

طلب محادثة (مع صور)

الطلب

إرسال رسالة محادثة مع صور. يجب توفير الصور كمصفوفة، مع ترميز كل صورة بشكل منفصل بتنسيق Base64.

shell
curl http://localhost:11434/api/chat -d '{
  "model": "llava",
  "messages": [
    {
      "role": "user",
      "content": "what is in this image?
json
",
      "images": ["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"]
    }
  ]
}'
الاستجابة
json
{
  "model": "llava",
  "created_at": "2023-12-13T22:42:50. 203334Z",
  "message": {
    "role": "assistant",
    "content": " The image features a cute, little pig with an angry facial expression. It's wearing a heart on its shirt and is waving in the air. This scene appears to be part of a drawing or sketching project. ",
    "images": null
  },
  "done": true,
  "total_duration": 1668506709,
  "load_duration": 1986209,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 359682000,
  "eval_count": 83,
  "eval_duration": 1303285000
}

طلب محادثة (مخرجات قابلة للتكرار)

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "Hello! "
    }
  ],
  "options": {
    "seed": 101,
    "temperature": 0
  }
}'
الاستجابة
json
{
  "model": "llama3. 2",
  "created_at": "2023-12-12T14:13:43. 416799Z",
  "message": {
    "role": "assistant",
    "content": "Hello! How are you today? "
  },
  "done": true,
  "total_duration": 5191566416,
  "load_duration": 2154458,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 383809000,
  "eval_count": 298,
  "eval_duration": 4799921000
}

طلب محادثة (مع الأدوات)

الطلب
shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [
    {
      "role": "user",
      "content": "What is the weather today in Paris? "
    }
  ],
  "stream": false,
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_current_weather",
        "description": "Get the current weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The location to get the weather for, e. g. San Francisco, CA"
            },
            "format": {
              "type": "string",
              "description": "The format to return the weather in, e. g. 'celsius' or 'fahrenheit'",
              "enum": ["celsius", "fahrenheit"]
            }
          },
          "required": ["location", "format"]
        }
      }
    }
  ]
}'
الاستجابة
json
{
  "model": "llama3. 2",
  "created_at": "2024-07-22T20:33:28. 123648Z",
  "message": {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "function": {
          "name": "get_current_weather",
          "arguments": {
            "format": "celsius",
            "location": "Paris, FR"
          }
        }
      }
    ]
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 885095291,
  "load_duration": 3753500,
  "prompt_eval_count": 122,
  "prompt_eval_duration": 328493000,
  "eval_count": 33,
  "eval_duration": 552222000
}

تحميل نموذج

إذا كانت مصفوفة الرسائل فارغة، سيتم تحميل النموذج في الذاكرة. ##### الطلب

shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": []
}'
الاستجابة
json
{
  "model": "llama3. 2",
  "created_at": "2024-09-12T21:17:29. 110811Z",
  "message": {
    "role": "assistant",
    "content": ""
  },
  "done_reason": "load",
  "done": true
}

إلغاء تحميل نموذج

إذا كانت مصفوفة الرسائل فارغة وتم تعيين المعامل keep_alive إلى 0، سيتم إلغاء تحميل النموذج من الذاكرة. ##### الاستجابة

يتم إرجاع كائن JSON واحد:

json
{
  "model": "llama3. 2",
  "created_at": "2024-09-12T21:33:17. 547535Z",
  "message": {
    "role": "assistant",
    "content": ""
  },
  "done_reason": "unload",
  "done": true
}

إنشاء نموذج

POST /api/create

إنشاء نموذج من:

  • نموذج آخر؛
  • دليل safetensors؛ أو
  • ملف GGUF.

إذا كنت تقوم بإنشاء نموذج من دليل safetensors أو من ملف GGUF، فيجب عليك إنشاء blob لكل ملف، ثم استخدام اسم الملف وتجزئة SHA256 المرتبطة بكل blob في الحقل files.

المعاملات

  • model: اسم النموذج المراد إنشاؤه
  • from: (اختياري) اسم نموذج موجود لإنشاء النموذج الجديد منه
  • files: (اختياري) قاموس بأسماء الملفات إلى تجزئات SHA256 لكائنات blob لإنشاء النموذج منها
  • adapters: (اختياري) قاموس بأسماء الملفات إلى تجزئات SHA256 لكائنات blob الخاصة بمحولات LORA
  • template: (اختياري) قالب الموجه للنموذج
  • renderer: (اختياري) اسم أداة العرض للنموذج
  • parser: (اختياري) اسم المحلل للنموذج
  • license: (اختياري) سلسلة نصية أو قائمة سلاسل نصية تحتوي على الرخصة أو الرخص الخاصة بالنموذج
  • system: (اختياري) سلسلة نصية تحتوي على الموجه النظامي للنموذج
  • parameters: (اختياري) قاموس بالمعاملات الخاصة بالنموذج (راجع Modelfile لمعرفة قائمة بالمعاملات)
  • messages: (اختياري) قائمة بكائنات الرسائل المستخدمة لإنشاء محادثة
  • stream: (اختياري) إذا كانت القيمة false، فسيتم إرجاع الاستجابة ككائن استجابة واحد، بدلاً من تدفق من الكائنات
  • quantize (اختياري): تكميم نموذج غير مُكمَّم (مثلًا float16)

أنواع التكميم

النوعموصى به
q4_K_M*
q4_K_S
q8_0*

أمثلة

إنشاء نموذج جديد

إنشاء نموذج جديد من نموذج موجود.

الطلب
shell
curl http://localhost:11434/api/create -d '{
  "model": "mario",
  "from": "llama3.2",
  "system": "You are Mario from Super Mario Bros."
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"using already created layer sha256:22f7f8ef5f4c791c1b03d7eb414399294764d7cc82c7e94aa81a1feb80a983a2"}
{"status":"using already created layer sha256:8c17c2ebb0ea011be9981cc3922db8ca8fa61e828c5d3f44cb6ae342bf80460b"}
{"status":"using already created layer sha256:7c23fb36d80141c4ab8cdbb61ee4790102ebd2bf7aeff414453177d4f2110e5d"}
{"status":"using already created layer sha256:2e0493f67d0c8c9c68a8aeacdf6a38a2151cb3c4c1d42accf296e19810527988"}
{"status":"using already created layer sha256:2759286baa875dc22de5394b4a925701b1896a7e3f8e53275c36f75a877a82c9"}
{"status":"writing layer sha256:df30045fe90f0d750db82a058109cecd6d4de9c90a3d75b19c09e5f64580bb42"}
{"status":"writing layer sha256:f18a68eb09bf925bb1b669490407c1b1251c5db98dc4d3d81f3088498ea55690"}
{"status":"writing manifest"}
{"status":"success"}

تكميم نموذج

تكميم نموذج غير مُكمَّم.

الطلب
shell
curl http://localhost:11434/api/create -d '{
  "model": "llama3.2:quantized",
  "from": "llama3.2:3b-instruct-fp16",
  "quantize": "q4_K_M"
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{"status":"quantizing F16 model to Q4_K_M","digest":"0","total":6433687776,"completed":12302}
{"status":"quantizing F16 model to Q4_K_M","digest":"0","total":6433687776,"completed":6433687552}
{"status":"verifying conversion"}
{"status":"creating new layer sha256:fb7f4f211b89c6c4928ff4ddb73db9f9c0cfca3e000c3e40d6cf27ddc6ca72eb"}
{"status":"using existing layer sha256:966de95ca8a62200913e3f8bfbf84c8494536f1b94b49166851e76644e966396"}
{"status":"using existing layer sha256:fcc5a6bec9daf9b561a68827b67ab6088e1dba9d1fa2a50d7bbcc8384e0a265d"}
{"status":"using existing layer sha256:a70ff7e570d97baaf4e62ac6e6ad9975e04caa6d900d3742d37698494479e0cd"}
{"status":"using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb"}
{"status":"writing manifest"}
{"status":"success"}

إنشاء نموذج من ملف GGUF

إنشاء نموذج من ملف GGUF. يجب ملء المعامل files باسم الملف وتجزئة SHA256 لملف GGUF الذي ترغب في استخدامه. استخدم /api/blobs/:digest لدفع ملف GGUF إلى الخادم قبل استدعاء API هذه.

الطلب
shell
curl http://localhost:11434/api/create -d '{
  "model": "my-gguf-model",
  "files": {
    "test.gguf": "sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"
  }
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

json
{"status":"parsing GGUF"}
{"status":"using existing layer sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"}
{"status":"writing manifest"}
{"status":"success"}

إنشاء نموذج من دليل Safetensors

يجب أن يتضمن المعامل files قاموسًا بالملفات الخاصة بنموذج safetensors، والذي يحتوي على أسماء الملفات وتجزئة SHA256 لكل ملف. استخدم /api/blobs/:digest لدفع كل ملف إلى الخادم أولاً قبل استدعاء API هذه. ستبقى الملفات في ذاكرة التخزين المؤقت حتى يتم إعادة تشغيل خادم Ollama.

الطلب
shell
curl http://localhost:11434/api/create -d '{
  "model": "fred",
  "files": {
    "config.json": "sha256:dd3443e529fb2290423a0c65c2d633e67b419d273f170259e27297219828e389",
    "generation_config.json": "sha256:88effbb63300dbbc7390143fbbdd9d9fa50587b37e8bfd16c8c90d4970a74a36",
    "special_tokens_map.json": "sha256:b7455f0e8f00539108837bfa586c4fbf424e31f8717819a6798be74bef813d05",
    "tokenizer.json": "sha256:bbc1904d35169c542dffbe1f7589a5994ec7426d9e5b609d07bab876f32e97ab",
    "tokenizer_config.json": "sha256:24e8a6dc2547164b7002e3125f10b415105644fcf02bf9ad8b674c87b1eaaed6",
    "model.safetensors": "sha256:1ff795ff6a07e6a68085d206fb84417da2f083f68391c2843cd2b8ac6df8538f"
  }
}'
الاستجابة

يتم إرجاع تدفق من كائنات JSON:

shell
{"status":"converting model"}
{"status":"creating new layer sha256:05ca5b813af4a53d2c2922933936e398958855c44ee534858fcfd830940618b6"}
{"status":"using autodetected template llama3-instruct"}
{"status":"using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb"}
{"status":"writing manifest"}
{"status":"success"}

التحقق من وجود كائن ثنائي كبير (Blob)

shell
HEAD /api/blobs/:digest

يتأكد من وجود كائن الملف الثنائي الكبير (Blob) المستخدم لإنشاء نموذج على الخادم. هذا الفحص يتم على خادم Ollama الخاص بك وليس على ollama.com.

معلمات الاستعلام

  • digest: التجزئة SHA256 للكائن الثنائي الكبير (Blob)

أمثلة

الطلب

shell
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

الاستجابة

يُرجع 200 OK إذا كان الكائن الثنائي الكبير موجودًا، و 404 Not Found إذا لم يكن موجودًا.

دفع كائن ثنائي كبير (Blob)

POST /api/blobs/:digest

ارفع ملفًا إلى خادم Ollama لإنشاء "كائن ثنائي كبير" (Blob).

معلمات الاستعلام

  • digest: التجزئة SHA256 المتوقعة للملف

أمثلة

الطلب

shell
curl -T model.gguf -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

الاستجابة

يُرجع 201 Created إذا تم إنشاء الكائن الثنائي الكبير بنجاح، و 400 Bad Request إذا كانت التجزئة المستخدمة غير متوقعة.

قائمة النماذج المحلية

GET /api/tags

يعرض النماذج المتوفرة محليًا.

أمثلة

الطلب

shell
curl http://localhost:11434/api/tags

الاستجابة

سيتم إرجاع كائن JSON واحد.

json
{
  "models": [
    {
      "name": "deepseek-r1:latest",
      "model": "deepseek-r1:latest",
      "modified_at": "2025-05-10T08:06:48.639712648-07:00",
      "size": 4683075271,
      "digest": "0a8c266910232fd3291e71e5ba1e058cc5af9d411192cf88b6d30e92b6e73163",
      "details": {
        "parent_model": "",
        "format": "gguf",
        "family": "qwen2",
        "families": ["qwen2"],
        "parameter_size": "7.6B",
        "quantization_level": "Q4_K_M"
      }
    },
    {
      "name": "llama3.2:latest",
      "model": "llama3.2:latest",
      "modified_at": "2025-05-04T17:37:44.706015396-07:00",
      "size": 2019393189,
      "digest": "a80c4f17acd55265feec403c7aef86be0c25983ab279d83f3bcd3abbcb5b8b72",
      "details": {
        "parent_model": "",
        "format": "gguf",
        "family": "llama",
        "families": ["llama"],
        "parameter_size": "3.2B",
        "quantization_level": "Q4_K_M"
      }
    }
  ]
}

عرض معلومات النموذج

POST /api/show

يعرض معلومات عن النموذج بما في ذلك التفاصيل وملف النموذج (Modelfile) والقالب والمعلمات والترخيص وموجه النظام.

المعلمات

  • model: اسم النموذج المراد عرضه
  • verbose: (اختياري) إذا تم تعيينه إلى true، فإنه يُرجع البيانات الكاملة لحقول الاستجابة المفصلة

أمثلة

الطلب

shell
curl http://localhost:11434/api/show -d '{
  "model": "llava"
}'

الاستجابة

json5
{
  modelfile: '# Modelfile generated by "ollama show"\n# To build a new Modelfile based on this one, replace the FROM line with:\n# FROM llava:latest\n\nFROM /Users/matt/.ollama/models/blobs/sha256:200765e1283640ffbd013184bf496e261032fa75b99498a9613be4e94d63ad52\nTEMPLATE """{{ .System }}\nUSER: {{ .Prompt }}\nASSISTANT: """\nPARAMETER num_ctx 4096\nPARAMETER stop "\u003c/s\u003e"\nPARAMETER stop "USER:"\nPARAMETER stop "ASSISTANT:"',
  parameters: 'num_keep                       24\nstop                           "<|start_header_id|>"\nstop                           "<|end_header_id|>"\nstop                           "<|eot_id|>"',
  template: "{{ if .System }}<|start_header_id|>system<|end_header_id|>\n\n{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>\n\n{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>\n\n{{ .Response }}<|eot_id|>",
  details: {
    parent_model: "",
    format: "gguf",
    family: "llama",
    families: ["llama"],
    parameter_size: "8.0B",
    quantization_level: "Q4_0",
  },
  model_info: {
    "general.architecture": "llama",
    "general.file_type": 2,
    "general.parameter_count": 8030261248,
    "general.quantization_version": 2,
    "llama.attention.head_count": 32,
    "llama.attention.head_count_kv": 8,
    "llama.attention.layer_norm_rms_epsilon": 0.00001,
    "llama.block_count": 32,
    "llama.context_length": 8192,
    "llama.embedding_length": 4096,
    "llama.feed_forward_length": 14336,
    "llama.rope.dimension_count": 128,
    "llama.rope.freq_base": 500000,
    "llama.vocab_size": 128256,
    "tokenizer.ggml.bos_token_id": 128000,
    "tokenizer.ggml.eos_token_id": 128009,
    "tokenizer.ggml.merges": [], // populates if `verbose=true`
    "tokenizer.ggml.model": "gpt2",
    "tokenizer.ggml.pre": "llama-bpe",
    "tokenizer.ggml.token_type": [], // populates if `verbose=true`
    "tokenizer.ggml.tokens": [], // populates if `verbose=true`
  },
  capabilities: ["completion", "vision"],
}

نسخ نموذج

POST /api/copy

ينسخ نموذجًا. ينشئ نموذجًا باسم مختلف من نموذج موجود.

أمثلة

الطلب

shell
curl http://localhost:11434/api/copy -d '{
  "source": "llama3.2",
  "destination": "llama3-backup"
}'

الاستجابة

يُرجع 200 OK في حال النجاح، أو 404 Not Found إذا لم يكن النموذج المصدر موجودًا.

حذف نموذج

DELETE /api/delete

يحذف نموذجًا وجميع بياناته.

المعلمات

  • model: اسم النموذج المراد حذفه

أمثلة

الطلب

shell
curl -X DELETE http://localhost:11434/api/delete -d '{
  "model": "llama3:13b"
}'

الاستجابة

يُرجع 200 OK في حال النجاح، أو 404 Not Found إذا كان النموذج المراد حذفه غير موجود.

سحب نموذج

POST /api/pull

يقوم بتنزيل نموذج من مكتبة ollama. يتم استئناف عمليات السحب الملغاة من النقطة التي توقفت فيها، وستشارك الاستدعاءات المتعددة نفس تقدم التنزيل.

المعلمات

  • model: اسم النموذج المراد سحبه
  • insecure: (اختياري) يسمح باتصالات غير آمنة بالمكتبة. استخدم هذا الخيار فقط إذا كنت تسحب من مكتبتك الخاصة أثناء التطوير.
  • stream: (اختياري) إذا تم تعيينه إلى false، فسيتم إرجاع الاستجابة ككائن استجابة واحد بدلاً من تدفق من الكائنات

أمثلة

الطلب

shell
curl http://localhost:11434/api/pull -d '{
  "model": "llama3.2"
}'

الاستجابة

إذا لم يتم تحديد stream، أو تم تعيينه إلى true، فسيتم إرجاع تدفق من كائنات JSON:

الكائن الأول هو البيان (manifest):

json
{
  "status": "pulling manifest"
}

ثم توجد سلسلة من استجابات التنزيل. حتى يكتمل أي جزء من التنزيل، قد لا يتم تضمين مفتاح completed. يعتمد عدد الملفات المراد تنزيلها على عدد الطبقات المحددة في البيان.

json
{
  "status": "pulling digestname",
  "digest": "digestname",
  "total": 2142590208,
  "completed": 241970
}

بعد تنزيل جميع الملفات، تكون الاستجابات النهائية كما يلي:

json
{
    "status": "verifying sha256 digest"
}
{
    "status": "writing manifest"
}
{
    "status": "removing any unused layers"
}
{
    "status": "success"
}

إذا تم تعيين stream إلى false، فإن الاستجابة تكون كائن JSON واحد:

json
{
  "status": "success"
}

دفع نموذج

POST /api/push

ارفع نموذجًا إلى مكتبة نماذج. يتطلب التسجيل في ollama.ai وإضافة مفتاح عام أولاً.

المعلمات

  • model: اسم النموذج المراد دفعه بالشكل <namespace>/<model>:<tag>
  • insecure: (اختياري) يسمح باتصالات غير آمنة بالمكتبة. استخدم هذا الخيار فقط إذا كنت تدفع إلى مكتبتك الخاصة أثناء التطوير.
  • stream: (اختياري) إذا تم تعيينه إلى false، فسيتم إرجاع الاستجابة ككائن استجابة واحد بدلاً من تدفق من الكائنات

أمثلة

الطلب

shell
curl http://localhost:11434/api/push -d '{
  "model": "mattw/pygmalion:latest"
}'

الاستجابة

إذا لم يتم تحديد stream، أو تم تعيينه إلى true، فسيتم إرجاع تدفق من كائنات JSON:

json
{ "status": "retrieving manifest" }

ثم:

json
{
  "status": "starting upload",
  "digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
  "total": 1928429856
}

ثم توجد سلسلة من استجابات الرفع:

json
{
  "status": "starting upload",
  "digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
  "total": 1928429856
}

أخيرًا، عند اكتمال الرفع:

json
{"status":"pushing manifest"}
{"status":"success"}

إذا تم تعيين stream إلى false، فإن الاستجابة تكون كائن JSON واحد:

json
{ "status": "success" }

إنشاء التضمينات (Embeddings)

POST /api/embed

إنشاء التضمينات من نموذج

المعلمات

  • model: اسم النموذج الذي سيتم إنشاء التضمينات منه
  • input: نص أو قائمة نصوص لإنشاء التضمينات لها

معلمات متقدمة:

  • truncate: يقطع نهاية كل إدخال ليتناسب مع طول السياق. يُرجع خطأ إذا كان false وتم تجاوز طول السياق. القيمة الافتراضية هي true
  • options: معلمات نموذج إضافية مذكورة في وثائق Modelfile مثل temperature
  • keep_alive: يتحكم في مدة بقاء النموذج محملاً في الذاكرة بعد الطلب (الافتراضي: 5m)
  • dimensions: عدد الأبعاد للتضمين

أمثلة

الطلب

shell
curl http://localhost:11434/api/embed -d '{
  "model": "all-minilm",
  "input": "Why is the sky blue?"
}'

الاستجابة

json
{
  "model": "all-minilm",
  "embeddings": [
    [
      0.010071029, -0.0017594862, 0.05007221, 0.04692972, 0.054916814,
      0.008599704, 0.105441414, -0.025878139, 0.12958129, 0.031952348
    ]
  ],
  "total_duration": 14143917,
  "load_duration": 1019500,
  "prompt_eval_count": 8
}

طلب (إدخال متعدد)

shell
curl http://localhost:11434/api/embed -d '{
  "model": "all-minilm",
  "input": ["Why is the sky blue?", "Why is the grass green?"]
}'

الاستجابة

json
{
  "model": "all-minilm",
  "embeddings": [
    [
      0.010071029, -0.0017594862, 0.05007221, 0.04692972, 0.054916814,
      0.008599704, 0.105441414, -0.025878139, 0.12958129, 0.031952348
    ],
    [
      -0.0098027075, 0.06042469, 0.025257962, -0.006364387, 0.07272725,
      0.017194884, 0.09032035, -0.051705178, 0.09951512, 0.09072481
    ]
  ]
}

قائمة النماذج قيد التشغيل

GET /api/ps

يعرض النماذج المحملة حاليًا في الذاكرة.

أمثلة

الطلب

shell
curl http://localhost:11434/api/ps

الاستجابة

سيتم إرجاع كائن JSON واحد.

json
{
  "models": [
    {
      "name": "mistral:latest",
      "model": "mistral:latest",
      "size": 5137025024,
      "digest": "2ae6f6dd7a3dd734790bbbf58b8909a606e0e7e97e94b7604e0aa7ae4490e6d8",
      "details": {
        "parent_model": "",
        "format": "gguf",
        "family": "llama",
        "families": ["llama"],
        "parameter_size": "7.2B",
        "quantization_level": "Q4_0"
      },
      "expires_at": "2024-06-04T14:38:31.83753-07:00",
      "size_vram": 5137025024
    }
  ]
}

إنشاء تضمين (Embedding)

ملاحظة: تم استبدال هذه النقطة النهائية بـ /api/embed

POST /api/embeddings

إنشاء التضمينات من نموذج

المعلمات

  • model: اسم النموذج الذي سيتم إنشاء التضمينات منه
  • prompt: النص الذي سيتم إنشاء التضمينات له

معلمات متقدمة:

  • options: معلمات نموذج إضافية مذكورة في وثائق Modelfile مثل temperature
  • keep_alive: يتحكم في مدة بقاء النموذج محملاً في الذاكرة بعد الطلب (الافتراضي: 5m)

أمثلة

الطلب

shell
curl http://localhost:11434/api/embeddings -d '{
  "model": "all-minilm",
  "prompt": "Here is an article about llamas..."
}'

الاستجابة

json
{
  "embedding": [
    0.5670403838157654, 0.009260174818336964, 0.23178744316101074,
    -0.2916173040866852, -0.8924556970596313, 0.8785552978515625,
    -0.34576427936553955, 0.5742510557174683, -0.04222835972905159,
    -0.137906014919281
  ]
}

الإصدار

GET /api/version

استرداد إصدار Ollama

أمثلة

الطلب

shell
curl http://localhost:11434/api/version

الاستجابة

json
{
  "version": "0.5.1"
}

الميزات التجريبية

إنشاء الصور (تجريبي)

WARNING

إنشاء الصور ميزة تجريبية وقد تتغير في الإصدارات المستقبلية.

يتم دعم إنشاء الصور الآن من خلال نقطة /api/generate القياسية عند استخدام نماذج إنشاء الصور. تكتشف الواجهة البرمجية تلقائيًا عند استخدام نموذج إنشاء صور.

راجع قسم إنشاء إكمال للحصول على وثائق الواجهة البرمجية الكاملة. يتم توثيق معلمات إنشاء الصور التجريبية (width، height، steps) هناك.

مثال

الطلب
shell
curl http://localhost:11434/api/generate -d '{
  "model": "x/z-image-turbo",
  "prompt": "a sunset over mountains",
  "width": 1024,
  "height": 768
}'
الاستجابة (تدفق)

تحديثات التقدم أثناء الإنشاء:

json
{
  "model": "x/z-image-turbo",
  "created_at": "2024-01-15T10:30:00.000000Z",
  "completed": 5,
  "total": 20,
  "done": false
}
الاستجابة النهائية
json
{
  "model": "x/z-image-turbo",
  "created_at": "2024-01-15T10:30:15.000000Z",
  "image": "iVBORw0KGgoAAAANSUhEUg...",
  "done": true,
  "done_reason": "stop",
  "total_duration": 15000000000,
  "load_duration": 2000000000
}