Skip to content

API

Примечание: документация API Ollama перемещается на https://docs.ollama.com/api

Эндпоинты

Соглашения

Имена моделей

Имена моделей следуют формату model:tag, где у model может быть необязательное пространство имён, например example/model. Несколько примеров: orca-mini:3b-q8_0 и llama3:70b. Тег необязателен, и если он не указан, по умолчанию используется latest. Тег используется для идентификации конкретной версии.

Длительности

Все длительности возвращаются в наносекундах.

Потоковые ответы

Некоторые конечные точки возвращают ответы в виде потока JSON-объектов. Потоковую передачу можно отключить, передав {"stream": false} для этих конечных точек.

Генерация завершения

POST /api/generate

Сгенерировать ответ для заданного промпта с использованием указанной модели. Это потоковая конечная точка, поэтому будет возвращаться серия ответов. Финальный объект ответа будет содержать статистику и дополнительные данные из запроса.

Параметры

  • model: (обязательный) имя модели
  • prompt: промпт, для которого нужно сгенерировать ответ
  • suffix: текст, который будет добавлен после ответа модели
  • images: (необязательный) список изображений в кодировке base64 (для мультимодальных моделей, таких как llava)
  • think: (для моделей с режимом рассуждений) нужно ли модели обдумать ответ перед генерацией? Может быть логическим значением или уровнем рассуждений ("low", "medium", "high" или "max").

Дополнительные параметры (необязательные):

  • format: формат, в котором нужно вернуть ответ. Формат может быть json или JSON-схемой
  • options: дополнительные параметры модели, перечисленные в документации к Modelfile, например temperature
  • system: системное сообщение (переопределяет то, что задано в Modelfile)
  • template: шаблон промпта для использования (переопределяет то, что задано в Modelfile)
  • stream: если значение false, ответ будет возвращен как единый объект ответа, а не поток объектов
  • raw: если значение true, к промпту не будет применяться форматирование. Вы можете использовать параметр raw, если в запросе к API указываете полный шаблонизированный промпт
  • keep_alive: определяет, как долго модель будет оставаться загруженной в память после выполнения запроса (по умолчанию: 5m)
  • context (устарел): параметр контекста, возвращаемый предыдущим запросом к /generate, его можно использовать для сохранения краткой памяти диалога

Экспериментальные параметры генерации изображений (только для моделей генерации изображений):

WARNING

Эти параметры являются экспериментальными и могут измениться в будущих версиях.

  • width: ширина генерируемого изображения в пикселях
  • height: высота генерируемого изображения в пикселях
  • steps: количество шагов диффузии

Структурированные выводы

Структурированные выводы поддерживаются путём передачи JSON-схемы в параметре format. Модель сгенерирует ответ, соответствующий этой схеме. См. пример структурированных выводов ниже.

Режим JSON

Включите режим JSON, установив для параметра format значение json. При этом ответ будет структурирован как валидный JSON-объект. См. пример режима JSON ниже.

IMPORTANT

Важно указать модели в prompt использовать JSON. В противном случае модель может сгенерировать большое количество пробельных символов.

Примеры

Запрос на генерацию (с потоковой передачей)

Запрос
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: количество токенов в запросе
  • prompt_eval_duration: время в наносекундах, затраченное на оценку запроса
  • eval_count: количество токенов в ответе
  • eval_duration: время в наносекундах, затраченное на генерацию ответа
  • context: кодировка диалога, использованного в этом ответе, её можно передать в следующем запросе для сохранения памяти диалога
  • response: пустой, если ответ передавался потоком, если передача потоком не использовалась, здесь будет содержаться полный ответ

Чтобы рассчитать скорость генерации ответа в токенах в секунду (токен/с), разделите 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 для отключения шаблонизации. Также обратите внимание, что сырой режим не возвращает контекст.

Запрос
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

Сгенерируйте следующее сообщение в чате с использованием указанной модели. Это конечная точка с потоковой передачей, поэтому ответ будет представлять собой серию объектов. Потоковую передачу можно отключить, указав "stream": false. Конечный объект ответа будет содержать статистику и дополнительные данные из запроса.

Параметры

  • model: (обязательный) название модели
  • messages: сообщения чата, могут использоваться для хранения истории диалога
  • tools: список инструментов в формате JSON, которые модель может использовать, если эта функция поддерживается
  • think: (для моделей с функцией рассуждений) нужно ли модели обдумать ответ перед отправкой? Может быть логическим значением или уровнем рассуждений ("low", "medium", "high" или "max").

Объект message имеет следующие поля:

  • role: роль сообщения, может принимать значения system, user, assistant или tool
  • content: содержимое сообщения
  • thinking: (для моделей с функцией рассуждений) процесс рассуждений модели
  • images (необязательный): список изображений, которые нужно включить в сообщение (для мультимодальных моделей, таких как llava)
  • tool_calls (необязательный): список инструментов в формате JSON, которые модель хочет использовать
  • tool_name (необязательный): название выполненного инструмента, чтобы сообщить модели о результате его работы

Дополнительные параметры (необязательные):

  • format: формат, в котором нужно вернуть ответ. Возможные значения: json или JSON-схема.
  • options: дополнительные параметры модели, перечисленные в документации к [Modelfile](. /modelfile. mdx#valid-parameters-and-values), например temperature
  • stream: если установлено значение false, ответ будет возвращен в виде единого объекта, а не потока объектов
  • keep_alive: определяет, сколько времени модель будет оставаться загруженной в памяти после выполнения запроса (значение по умолчанию: 5m)

Вызов инструментов

Вызов инструментов поддерживается при передаче списка инструментов в параметре tools. Модель сгенерирует ответ, содержащий список вызовов инструментов. См. пример Запрос чата (потоковая передача с инструментами) ниже. Модели также могут объяснять результат вызова инструмента в ответе. См. пример Запрос чата (с историей, с инструментами) ниже. [Список моделей с поддержкой вызова инструментов](https://ollama. com/search? c=tool).

Структурированные выводы

Структурированные выводы поддерживаются при передаче 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
}

Запрос чата (с историей)

Отправка сообщения в чат с историей диалога. Этот же подход можно использовать для начала беседы с помощью многошагового промптинга или промптинга 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
{
  "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
}

Загрузка модели

Если массив messages пустой, модель будет загружена в память. ##### Запрос

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
}

Выгрузка модели

Если массив messages пустой и параметр keep_alive установлен в 0, модель будет выгружена из памяти. ##### Запрос

shell
curl http://localhost:11434/api/chat -d '{
  "model": "llama3. 2",
  "messages": [],
  "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, для каждого файла необходимо создать блоб, а затем указать имя файла и хэш SHA256, связанный с каждым блобом, в поле files.

Параметры

  • model: имя создаваемой модели
  • from: (необязательный) имя существующей модели, на основе которой будет создана новая
  • files: (необязательный) словарь, где ключи — имена файлов, а значения — хэши SHA256 соответствующих блобов, на основе которых создается модель
  • adapters: (необязательный) словарь, где ключи — имена файлов, а значения — хэши SHA256 блобов с адаптерами 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 необходимо указать имя файла GGUF, который вы хотите использовать, и его хэш SHA256. Перед вызовом этого API загрузите файл GGUF на сервер с помощью эндпоинта /api/blobs/:digest.

Запрос
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 предварительно загрузите все файлы на сервер с помощью эндпоинта /api/blobs/:digest. Файлы остаются в кэше до перезапуска сервера 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 (Binary Large Object), используемый при создании модели, существует на сервере. Эта проверка выполняется на вашем сервере Ollama, а не на ollama.com.

Параметры запроса

  • digest: SHA256-дайджест BLOB-объекта

Примеры

Запрос

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

Ответ

Возвращает 200 OK, если BLOB-объект существует, и 404 Not Found, если он отсутствует.

Отправить BLOB-объект

POST /api/blobs/:digest

Отправьте файл на сервер Ollama для создания «BLOB-объекта» (Binary Large Object).

Параметры запроса

  • digest: ожидаемый SHA256-дайджест файла

Примеры

Запрос

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

Ответ

Возвращает 201 Created, если BLOB-объект был успешно создан, и 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-объектов:

Первый объект является манифестом:

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" }

Генерация эмбеддингов

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
    }
  ]
}

Генерация эмбеддинга

Примечание: этот эндпоинт устарел и заменён на /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 при использовании моделей для генерации изображений. API автоматически определяет, когда используется модель для генерации изображений.

Полную документацию по API см. в разделе Генерацию завершения. Экспериментальные параметры генерации изображений (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
}