Конвенции

Названия моделей

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

Продолжительность

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

Потоковая передача ответов

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

Создать выполнение

POST /api/generate

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

Параметры

  • model: (обязательно) название модели
  • prompt: приглашение сгенерировать ответ на
  • suffix: текст после ответа модели
  • images: (необязательно) список изображений в кодировке Base64 (для мультимодальных моделей, таких как llava)

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

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

JSON-режим

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

Важно

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

Примеры

Создать запрос (потоковая передача)

Запрос
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?"
}'
Ответ

Возвращается поток объектов 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.

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

Запрос (без потоковой передачи)

Запрос

При отключенной потоковой передаче ответ может быть получен в одном ответе.

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?",
  "stream": false
}'
Ответ

Если для параметра stream установлено значение false, ответом будет один объект 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
}

Запрос (с суффиксом)

Запрос
curl http://localhost:11434/api/generate -d '{
  "model": "codellama:code",
  "prompt": "def compute_gcd(a, b):",
  "suffix": "    return result",
  "options": {
    "temperature": 0
  },
  "stream": false
}'
Ответ
{
  "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
}

Запрос (режим JSON)

Важно

Если для формата задано значение json, на выходе всегда будет хорошо сформированный объект в формате JSON. Важно также указать модели, что она должна отвечать в формате JSON.

Запрос
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
}'
Ответ
{
  "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
}

Значением ответа будет строка, содержащая JSON, похожая на:

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

Запрос (с изображениями)

Чтобы отправить изображения в мультимодальные модели, такие как llava или bakllava, предоставьте список изображений в кодировке Base64:

Запрос

curl http://localhost:11434/api/generate -d '{
  "model": "llava",
  "prompt":"What is in this picture?",
  "stream": false,
  "images": ["iVBORw0KGgoAAAANSUhEUgAAAG0A....goAbYkAAAAAElFTkSuQmCC"]
}'

Ответ

{
  "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)

В некоторых случаях вы можете обойти систему шаблонов и предоставить полное приглашение. В этом случае вы можете использовать параметр raw, чтобы отключить шаблонизацию. Также обратите внимание, что необработанный режим не возвращает контекст.

Запрос
curl http://localhost:11434/api/generate -d '{
  "model": "mistral",
  "prompt": "[INST] why is the sky blue? [/INST]",
  "raw": true,
  "stream": false
}'

Запрос (воспроизводимые выходы)

Для получения воспроизводимых выходных данных установите начальное значение в seed:

Запрос
curl http://localhost:11434/api/generate -d '{
  "model": "mistral",
  "prompt": "Why is the sky blue?",
  "options": {
    "seed": 123
  }
}'
Ответ
{
  "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
}

Сгенерировать запрос (с опциями)

Если вы хотите задать пользовательские параметры для модели во время выполнения, а не в файле модели, вы можете сделать это с помощью параметра options. В этом примере задаются все доступные параметры, но вы можете задать любой из них по отдельности и опустить те, которые вы не хотите переопределять.

Запрос
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,
    "top_k": 20,
    "top_p": 0.9,
    "min_p": 0.0,
    "tfs_z": 0.5,
    "typical_p": 0.7,
    "repeat_last_n": 33,
    "temperature": 0.8,
    "repeat_penalty": 1.2,
    "presence_penalty": 1.5,
    "frequency_penalty": 1.0,
    "mirostat": 1,
    "mirostat_tau": 0.8,
    "mirostat_eta": 0.6,
    "penalize_newline": true,
    "stop": ["\n", "user:"],
    "numa": false,
    "num_ctx": 1024,
    "num_batch": 2,
    "num_gpu": 1,
    "main_gpu": 0,
    "low_vram": false,
    "vocab_only": false,
    "use_mmap": true,
    "use_mlock": false,
    "num_thread": 8
  }
}'
Ответ
{
  "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
}

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

Если будет выдано пустое приглашение, модель будет загружена в память.

Запрос
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2"
}'
Ответ

Возвращается один объект JSON:

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

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

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

Запрос
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "keep_alive": 0
}'
Ответ

Возвращается один объект 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: инструменты для использования в модели, если они поддерживаются. Требуется, чтобы для параметра stream было установлено значение false

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

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

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

  • format: формат, в котором будет возвращен ответ. В настоящее время единственным допустимым значением является json
  • options: дополнительные параметры модели, перечисленные в документации к Modelfile, такие как температура
  • stream: если значение равно false, то ответ будет возвращен в виде одного объекта response, а не потока объектов
  • keep_alive: определяет, как долго модель будет оставаться загруженной в память после запроса (по умолчанию: 5 месяцев).

Примеры

Запрос в чат (потоковая передача)

Запрос

Отправить сообщение в чате с потоковым ответом.

curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {
      "role": "user",
      "content": "why is the sky blue?"
    }
  ]
}'
Ответ

Возвращается поток объектов JSON:

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

Окончательный ответ:

{
  "model": "llama3.2",
  "created_at": "2023-08-04T19:22:45.499127Z",
  "done": true,
  "total_duration": 4883583458,
  "load_duration": 1334875,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 342546000,
  "eval_count": 282,
  "eval_duration": 4535599000
}

Запрос в чат (без потоковой передачи)

Запрос
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {
      "role": "user",
      "content": "why is the sky blue?"
    }
  ],
  "stream": false
}'
Ответ
{
  "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
}

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

Отправьте сообщение в чате с историей разговора. Вы можете использовать этот же подход для начала разговора, используя многократные подсказки или логическую цепочку.

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

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

Окончательный ответ:

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

Запрос в чат (с изображениями)

Запрос

Отправьте сообщение в чате с изображениями. Изображения должны быть представлены в виде массива, причем отдельные изображения должны быть закодированы в Base64.

curl http://localhost:11434/api/chat -d '{
  "model": "llava",
  "messages": [
    {
      "role": "user",
      "content": "what is in this image?",
      "images": ["iVBORw0KGgoAAAANSUhEUg.....z/f7mgoAbYkAAAAAElFTkSuQmCC"]
    }
  ]
}'
Ответ
{
  "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
}

Запрос в чат (воспроизводимые выходные данные)

Запрос
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {
      "role": "user",
      "content": "Hello!"
    }
  ],
  "options": {
    "seed": 101,
    "temperature": 0
  }
}'
Ответ
{
  "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
}

Запрос в чат (с инструментами)

Запрос
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"]
        }
      }
    }
  ]
}'
Ответ
{
  "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
}

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

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

Запрос
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": []
}'
Ответ
{
  "model": "llama3.2",
  "created_at":"2024-09-12T21:17:29.110811Z",
  "message": {
    "role": "assistant",
    "content": ""
  },
  "done_reason": "load",
  "done": true
}

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

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

Запрос
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [],
  "keep_alive": 0
}'
Ответ

Возвращается один объект JSON:

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

Создание модели

POST /api/create

Создать модель из Modelfile. Рекомендуется указать в Modelfile содержимое файла модели, а не просто указать путь. Это требование для удаленного создания. При удаленном создании модели также необходимо создать любые файловые объекты, такие поля, как FROM и ADAPTER, явно с помощью сервера с помощью создания Blob и значения пути, указанного в ответе.

Параметры

  • model: название модели для создания
  • modelfile (необязательно): содержимое файла модели Modelfile.
  • stream: (необязательно) если false, ответ будет возвращен как один объект ответа, а не как поток объектов
  • path (необязательно): путь к Modelfile.
  • quantize (необязательно): квантовать неквантованную модель (например, float16).

Типы квантования

TypeRecommended
q2_K  
q3_K_L  
q3_K_M  
q3_K_S  
q4_0  
q4_1  
q4_K_M *
q4_K_S  
q5_0  
q5_1  
q5_K_M  
q5_K_S  
q6_K  
q8_0 *

Примеры

Создать новую модель

Создать новую модель из файла модели Modelfile.

Запрос
curl http://localhost:11434/api/create -d '{
  "model": "mario",
  "modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'
Ответ

Возвращается поток объектов 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"}

Квантовать модель

Квантовать неквантованную модель.

Запрос
curl http://localhost:11434/api/create -d '{
  "model": "llama3.1:quantized",
  "modelfile": "FROM llama3.1:8b-instruct-fp16",
  "quantize": "q4_K_M"
}'
Ответ

Возвращается поток объектов JSON:

{"status":"quantizing F16 model to Q4_K_M"}
{"status":"creating new layer sha256:667b0c1932bc6ffc593ed1d03f895bf2dc8dc6df21db3042284a6f4416b06a29"}
{"status":"using existing layer sha256:11ce4ee3e170f6adebac9a991c22e22ab3f8530e154ee669954c4bc73061c258"}
{"status":"using existing layer sha256:0ba8f0e314b4264dfd19df045cde9d4c394a52474bf92ed6a3de22a4ca31a177"}
{"status":"using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb"}
{"status":"creating new layer sha256:455f34728c9b5dd3376378bfb809ee166c145b0b4c1f1a6feca069055066ef9a"}
{"status":"writing manifest"}
{"status":"success"}

Проверить, существует ли Blob (большой двоичный объект)

HEAD /api/blobs/:digest

Гарантирует, что blob, используемый для поля FROM или ADAPTER, существует на сервере. Это проверка вашего сервера Ollama, а не ollama.com.

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

  • digest: SHA256-дайджест blob

Примеры

Запрос
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Ответ

Возврат 200 OK, если blob существует, 404 Not Found, если нет.

Создать Blob

POST /api/blobs/:digest

Создать blob из файла на сервере. Возвращает путь файла сервера.

Query Parameters

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

Примеры

Запрос
curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Ответ

Возврат 201 Created, если blob  был успешно создан, 400 Bad Request, если используемый дайджест не ожидается.

Список локальных моделей

GET /api/tags

Список моделей, доступных на местном уровне.

Примеры

Запрос

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

Ответ

Будет возвращен один объект JSON.

{
  "models": [
    {
      "name": "codellama:13b",
      "modified_at": "2023-11-04T14:56:49.277302595-07:00",
      "size": 7365960935,
      "digest": "9f438cb9cd581fc025612d27f7c1a6669ff83a8bb0ed86c94fcf4c5440555697",
      "details": {
        "format": "gguf",
        "family": "llama",
        "families": null,
        "parameter_size": "13B",
        "quantization_level": "Q4_0"
      }
    },
    {
      "name": "llama3:latest",
      "modified_at": "2023-12-07T09:32:18.757212583-08:00",
      "size": 3825819519,
      "digest": "fe938a131f40e6f6d40083c9f0f430a515233eb2edaa6d72eb85c50d64f2300e",
      "details": {
        "format": "gguf",
        "family": "llama",
        "families": null,
        "parameter_size": "7B",
        "quantization_level": "Q4_0"
      }
    }
  ]
}

Показать информацию о модели

POST /api/show

Отображение информации о модели, включая сведения, файл модели, шаблон, параметры, лицензию и системное приглашение.

Параметры

  • model: название модели, которую нужно показать
  • verbose: (необязательно), если установлено значение true, возвращает полные данные для полей подробного ответа.

Примеры

Запрос

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

Ответ

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

Копирование модели

POST /api/copy

Скопировать модель. Создает модель с другим именем из существующей модели.

Примеры

Запрос

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

Ответ

Возвращает 200 OK в случае успеха или 404 Not Found, если исходная модель не существует.

Удалить модель

DELETE /api/delete

Удалить модель и ее данные.

Параметры

  • model: название модели, которую нужно удалить

Примеры

Запрос

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, ответ будет возвращен как один объект ответа, а не как поток объектов

Примеры

Запрос

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

Ответ

Если stream не указан или для него установлено значение true, возвращается поток объектов JSON:

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

{
  "status": "pulling manifest"
}

Затем следует серия ответов на загрузку. До тех пор, пока загрузка не будет завершена, готовый ключ не может быть включен. Количество загружаемых файлов зависит от количества слоев, указанных в манифесте.

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

После того, как все файлы загружены, окончательные ответы:

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

если для параметра stream задано значение false, то ответом будет один объект JSON:

{
  "status": "success"
}

Выложить модель

POST /api/push

Загрузить модель в библиотеку моделей. Для этого необходимо зарегистрироваться на сайте ollama.ai и сначала добавить открытый ключ.

Параметры

  • model: название модели, которую нужно вставить, в виде <пространство имен>/<модель>:<тег>
  • insecure: (необязательно) разрешить небезопасные подключения к библиотеке. Используйте это только в том случае, если вы подключаетесь к своей библиотеке во время разработки.
  • stream: (необязательно) если значение равно false, то ответ будет возвращен в виде одного объекта ответа, а не потока объектов

Примеры

Запрос

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

Ответ

Если параметр stream не указан или установлено значение true, возвращается поток объектов JSON:

{ "status": "retrieving manifest" }

и затем:

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

Затем следует серия ответов на загрузку:

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

Наконец, когда загрузка будет завершена:

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

Если для параметра stream задано значение false, то ответом будет один объект JSON:

{ "status": "success" }

Генерировать встраивания

POST /api/embed

Создание встраиваний на основе модели

Параметры

  • model: название модели, из которой будут создаваться встраивание
  • input: текст или список текстов для создания встраиваний для

Advanced parameters:

  • truncate: обрезает конец каждого входного сигнала, чтобы он соответствовал длине контекста. Возвращает ошибку, если значение false и длина контекста превышены. По умолчанию используется значение true
  • options: дополнительные параметры модели, перечисленные в документации к Modelfile, такие как температура
  • keep_alive: определяет, как долго модель будет оставаться загруженной в память после запроса (по умолчанию: 5 минут).

Примеры

Запрос

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

Ответ

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

Запрос (множественный ввод)

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

Ответ

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

Список моделей, которые в данный момент загружены в память.

Примеры

Запрос

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

Ответ

Будет возвращен один объект 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, такие как температура
  • Keep_alive: контролирует, как долго модель будет оставаться загруженной в память после запроса (по умолчанию: 5 м)

Примеры

Запрос

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

Ответ

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