Руководство пользователя API Ollama

краткое содержание

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

 

начальная или конечная точка (в рассказах и т.д.)

Завершение ответа \ Завершение диалога \ Создание модели \ Копирование модели \ Удаление модели \ Список запущенных моделей \ Список локальных моделей \ Отображение информации о модели \ Вытаскивание моделей \ Выталкивание моделей \ Генерировать встраивание

 

I. Завершение ответа

POST /api/generate

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

параметры

  • model: (Обязательно) Название модели
  • prompt: Совет по созданию ответа
  • suffix: Текст после ответа модели
  • images: (Необязательно) список изображений в base64-кодировке (для мультимодальных моделей, таких как llava )

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

  • format: Возвращает формат ответа. В настоящее время принимается только одно значение json
  • options:: Другие параметры модели, такие как temperature, иseed и др. (и другие авторы)
  • system: Системные сообщения
  • template: Шаблон подсказки для использования
  • context:: Из предыдущего обзора /generate Контекстные параметры, возвращаемые в запросе, можно использовать для краткого диалогового запоминания
  • stream: Если установлено значение false Ответ будет возвращен в виде одного объекта ответа, а не потока объектов.
  • raw: Если установлено значение true то форматирование подсказки будет отсутствовать. Если при запросе API вы указываете подсказку с полным шаблоном, вы можете использовать опцию raw параметры
  • keep_alive: Определяет, как долго модель остается в памяти после запроса (по умолчанию:5m)

Пример запроса (потоковая передача)

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'

Наконечник

Если вы используете curl пожалуйста, загрузите curl для WindowsЧтобы добавить переменные окружения, распакуйте файл, затем найдите подфайл bin в каталоге, где находится файл, и скопируйте адрес файла для добавления переменных окружения.

Используйте следующую команду в окне командной строки (не PowerShell, заметьте), чтобы проверить, успешно ли она была добавлена.

curl --help

На экране появится сообщение об успешном добавлении.

Ollama API 使用指南

Наконечник

В окне командной строки Windows используйте команду curl При запросе команд обратите внимание на использование скрытых двойных кавычек. Примеры команд приведены ниже.

curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"

На следующем экране отображается информация об успешном выполнении запроса.

Ollama API 使用指南

Пример ответа

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

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}

Последний ответ в потоке также содержит дополнительные данные о генерации:

  • контекст: код диалога, используемый для данного ответа, который может быть отправлен в следующем запросе, чтобы сохранить диалог в памяти
  • total_duration: время, затраченное на генерацию ответа (в наносекундах)
  • load_duration: время, затраченное на загрузку модели (в наносекундах)
  • prompt_eval_count: количество лексем в подсказке
  • prompt_eval_duration: время, затраченное на оценку подсказки (в наносекундах).
  • eval_count: количество лексем в ответе
  • eval_duration: время, затраченное на генерацию ответа (в наносекундах)
  • response: null, если ответ потоковый, если нет, то здесь будет содержаться полный ответ Чтобы вычислить скорость генерации ответа (количество токенов, генерируемых в секунду, tokens/s), то естьeval_count / eval_duration * 10^9.

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

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:10.819603411Z",
"response":"",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":8655401792,
"load_duration":5924129727,
"prompt_eval_count":17,
"prompt_eval_duration":29196000,
"eval_count":118,
"eval_duration":2656329000
}

Продвинутая игра

непотоковый вывод

главнокомандующий (военный) stream установленный на falseВы можете получить все ответы сразу.

Пример запроса

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'

Пример ответа

{
"model":"llama3.1",
"created_at":"2024-08-08T07:13:34.418567351Z",
"response":"答案:叶子含有大量的叶绿素。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2902435095,
"load_duration":2605831520,
"prompt_eval_count":17,
"prompt_eval_duration":29322000,
"eval_count":13,
"eval_duration":266499000
}

Режим JSON

(coll.) провалить (студента) format установленный на json Выходные данные будут представлены в формате JSON. Обратите внимание, однако, на то, что prompt Модели предписано отвечать в формате JSON, иначе модель может сгенерировать большое количество пробелов.

Пример запроса

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'

Пример ответа

{
"model":"llama3.1",
"created_at":"2024-08-08T07:21:24.950883454Z",
"response":"{\n  \"颜色原因\": \"叶子中含有光合作用所需的叶绿素\",\n  \"作用\": \"进行光合作用吸收太阳能\"\n}",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":3492279981,
"load_duration":2610591203,
"prompt_eval_count":22,
"prompt_eval_duration":28804000,
"eval_count":40,
"eval_duration":851206000
}

response значение будет представлять собой строку, содержащую JSON, подобную следующей:

{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}

Вход содержит изображения

Чтобы добавить новую модель к мультимодальной модели (например. llava возможно bakllavaЧтобы отправить изображение, пожалуйста, предоставьте версию в base64-кодировке images Список:

Пример запроса

curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["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"
]
}'

Пример ответа

{
"model":"llava",
"created_at":"2024-08-08T07:33:55.481713465Z",
"response":" The image shows a cartoon of an animated character that resembles a cute pig with large eyes and a smiling face. It appears to be in motion, indicated by the lines extending from its arms and tail, giving it a dynamic feel as if it is waving or dancing. The style of the image is playful and simplistic, typical of line art or stickers. The character's design has been stylized with exaggerated features such as large ears and a smiling expression, which adds to its charm. ",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2960501550,
"load_duration":4566012,
"prompt_eval_count":1,
"prompt_eval_duration":758437000,
"eval_count":108,
"eval_duration":2148818000
}

воспроизводимая производительность

главнокомандующий (военный) seed Установите фиксированное значение, чтобы получить воспроизводимый результат:

Пример запроса

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'

Пример ответа

{
"model":"llama3.1",
"created_at":"2024-08-08T07:42:28.397780058Z",
"response":"答案:因为叶子中含有大量的氯离子。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":404791556,
"load_duration":18317351,
"prompt_eval_count":17,
"prompt_eval_duration":22453000,
"eval_count":16,
"eval_duration":321267000}

 

II. Завершение диалога

POST /api/chat

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

параметры

  • model: (Обязательно) Название модели
  • messages: Сообщения чата, которые можно использовать для сохранения воспоминаний о чате
  • tools: Модель поддерживает использование инструментов. Требуется, чтобы stream установленный на false

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

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

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

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

Пример запроса (потоковая передача)

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'

Пример ответа

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

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}

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

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:37.187621765Z",
"message":{
"role":"assistant",
"content":""
},
"done_reason":"stop",
"done":true,
"total_duration":5730533217,
"load_duration":5370535786,
"prompt_eval_count":17,
"prompt_eval_duration":29621000,
"eval_count":13,
"eval_duration":273810000
}

Продвинутая игра

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

С историей

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

Пример запроса

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'

Пример ответа

{
"model":"llama3.1",
"created_at":"2024-08-08T07:53:28.849517802Z",
"message":{
"role":"assistant",
"content":"这是一个更复杂的问题!\n\n叶绿素是一种称为黄素的色素,这些色素可以吸收光能。在日光下,绿色草叶中的叶绿素会吸收蓝光和红光,但反射出黄色和绿色的光,所以我们看到草看起来是绿色的。\n\n简单来说,叶绿素让草看起来是绿色的,因为它反射了我们的眼睛可以看到的绿光,而不反射我们看到的其他颜色。"
},
"done_reason":"stop",
"done":true,
"total_duration":5065572138,
"load_duration":2613559070,
"prompt_eval_count":48,
"prompt_eval_duration":37825000,
"eval_count":106,
"eval_duration":2266694000}

III. Создание моделей

POST /api/create

общие рекомендации modelfile установленный на содержимое файла Modelfile, вместо того, чтобы просто установить pathУдаленное создание модели. Удаленное создание модели также должно явно создавать все файловые блобы, поля (такие как FROM ответить пением ADAPTER) и установите значение на путь, указанный в ответе.

параметры

  • name: Имя создаваемой модели
  • modelfile(необязательно): содержимое файла Modelfile
  • stream(необязательно): если для falseОтвет будет возвращен в виде одного объекта ответа, а не потока объектов.
  • path(Необязательно): путь к файлу модели.

Пример запроса

curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'

Пример ответа

Строка объектов JSON. Обратите внимание, что конечный JSON-объект показывает "status": "success"Запрос на успешное создание.

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

Проверьте, существует ли блоб

HEAD /api/blobs/:digest

Убедитесь, что файл-блоб для поля FROM или ADAPTER существует на сервере. При этом проверяется ваш сервер Ollama, а не Ollama.ai.

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

  • digest: SHA256 дайджест блоба

Пример запроса

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

Пример ответа

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

Создание шара

POST /api/blobs/:digest

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

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

  • digest: Ожидаемое резюме документа в формате SHA256

Пример запроса

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

Пример ответа

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

 

IV. Модели репликации

POST /api/copy

Duplicate a model - дублирование существующей модели под другим именем.

Пример запроса

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

Пример ответа

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

 

V. Удаление моделей

DELETE /api/delete

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

параметры

  • name: Имя удаляемой модели

Пример запроса

[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.%20Ollama%20API%20%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md#%E7%A4%BA%E4%BE%8B%E8%AF%B7%E6%B1%82-4)

curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'

Пример ответа

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

 

VI. Перечень операционных моделей

GET /api/ps

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

Пример запроса

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

Пример ответа

{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"size":6654289920,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"expires_at":"2024-08-08T14:06:52.883023476+08:00",
"size_vram":6654289920
}
]
}

 

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

GET /api/tags

Перечисляет модели, доступные на местном рынке.

Пример запроса

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

Пример ответа

{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"modified_at":"2024-08-07T17:54:22.533937636+08:00",
"size":4661230977,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
}
}
]
}

 

VIII. Отображение информации о модели

POST /api/show

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

параметры

  • name: Название отображаемой модели
  • verbose(Необязательно): если установлено значение trueзатем возвращает полные данные для поля "Подробный ответ".

Пример запроса

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

Пример ответа

{
"license":"...",
"modelfile":"...",
"parameters":"...",
"template":"...",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"model_info":{
"general.architecture":"llama",
"general.basename":"Meta-Llama-3.1",
"general.file_type":2,
"general.finetune":"Instruct",
"general.languages":["en","de","fr","it","pt","hi","es","th"],
"general.license":"llama3.1",
"general.parameter_count":8030261312,
"general.quantization_version":2,
"general.size_label":"8B",
"general.tags":["facebook","meta","pytorch","llama","llama-3","text-generation"],
"general.type":"model",
"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":131072,
"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":null,
"tokenizer.ggml.model":"gpt2",
"tokenizer.ggml.pre":"llama-bpe",
"tokenizer.ggml.token_type":null,
"tokenizer.ggml.tokens":null
},
"modified_at":"2024-08-07T17:54:22.533937636+08:00"
}

 

IX. Модели для вытягивания

POST /api/pull

через (щель) ollama Модель загрузки библиотеки. Прерванная операция извлечения продолжит загрузку с точки останова, и несколько вызовов будут иметь общий прогресс загрузки.

параметры

  • name: Название модели для извлечения
  • insecure(Необязательно): разрешает небезопасные соединения с библиотеками. Рекомендуется использовать эту опцию только при использовании собственных библиотек во время разработки.
  • stream(необязательно): если для falseОтвет будет возвращен в виде одного объекта ответа, а не потока объектов.

Пример запроса

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

Пример ответа

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

Первый объект - это список:

{
"status": "pulling manifest"
}

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

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

 

X. Модель толчка

POST /api/push

Загрузите модель в репозиторий моделей. Сначала вам нужно зарегистрировать ollama.ai и добавить открытый ключ.

параметры

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

Пример запроса

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

Пример ответа

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

{ "status": "retrieving manifest" }

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

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

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

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

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

{ "status": "success" }

 

XI. Создание эмбрионов

POST /api/embed

Генерация вкраплений из моделей.

параметры

  • model: Имя модели, на основе которой должно быть создано вложение.
  • input: Для создания встроенного текста или списка текстов

Дополнительные параметры:

  • truncate: Усекайте конец каждого ввода, чтобы подогнать его под длину контекста. Это не проблема, если речь идет о false и превышает длину контекста, возвращается ошибка. Значение по умолчанию true
  • options: Другие параметры модели, такие как temperature, иseed и др. (и другие авторы)
  • keep_alive: Определяет, как долго модель остается загруженной в память после запроса (по умолчанию:5m)

Пример запроса

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'

Пример ответа

{
"model":"llama3.1",
"embeddings":[[
-0.008059342,-0.013182715,0.019781841,0.012018124,-0.024847334,
-0.0031902494,-0.02714767,0.015282277,0.060032737,...
]],
"total_duration":3041671009,
"load_duration":2864335471,
"prompt_eval_count":7}

Пример запроса (несколько входов)

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'

Пример ответа

{
"model":"llama3.1",
"embeddings":[[
-0.008471201,-0.013031566,0.019300476,0.011618419,-0.025197424,
-0.0024164673,-0.02669075,0.015766116,0.059984162,...
],[
-0.012765694,-0.012822924,0.015915949,0.006415892,-0.02327763,
0.004859615,-0.017922137,0.019488193,0.05638235,...
]],
"total_duration":195481419,
"load_duration":1318886,
"prompt_eval_count":14
}

 

обработка ошибок

При возникновении ошибки API Ollama возвращает соответствующие коды ошибок и сообщения. К распространенным ошибкам относятся:

  • 400 Bad Request: ошибка формата запроса.
  • 404 Not Found: запрашиваемый ресурс не существует.
  • 500 Внутренняя ошибка сервера: Внутренняя ошибка сервера.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...