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, напримерtemperaturesystem: системное сообщение (переопределяет то, что задано в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илиtoolcontent: содержимое сообщенияthinking: (для моделей с функцией рассуждений) процесс рассуждений моделиimages(необязательный): список изображений, которые нужно включить в сообщение (для мультимодальных моделей, таких какllava)tool_calls(необязательный): список инструментов в формате JSON, которые модель хочет использоватьtool_name(необязательный): название выполненного инструмента, чтобы сообщить модели о результате его работы
Дополнительные параметры (необязательные):
format: формат, в котором нужно вернуть ответ. Возможные значения:jsonили JSON-схема.options: дополнительные параметры модели, перечисленные в документации к [Modelfile](. /modelfile. mdx#valid-parameters-and-values), напримерtemperaturestream: если установлено значение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 блобов с адаптерами LORAtemplate: (необязательный) шаблон запросов для модели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и длина контекста превышена. По умолчанию равенtrueoptions: дополнительные параметры модели, перечисленные в документации к Modelfile, напримерtemperaturekeep_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, напримерtemperaturekeep_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
}