Guía del usuario de la API de Ollama

breve

Ollama Se proporciona una potente API REST para que los desarrolladores puedan interactuar fácilmente con grandes modelos lingüísticos. A través de la API de Ollama, los usuarios pueden enviar peticiones y recibir respuestas generadas por el modelo, aplicadas a tareas como el procesamiento del lenguaje natural, la generación de textos, etc. En este artículo, se describen en detalle las operaciones básicas de generación de complementos y generación de diálogos, y también se explican operaciones comunes como la creación de modelos, la copia de modelos y la eliminación de modelos.

 

punto de partida o de llegada (en historias, etc.)

Completar respuesta \ Completar diálogo \ Crear modelo \ Copiar modelo \ Eliminar modelo \ Listar modelos en ejecución \ Listar modelos locales \ Mostrar información del modelo \ Extraer modelos \ Empujar modelos \ Generar incrustación

 

I. Completar la respuesta

POST /api/generate

Genera una respuesta a una solicitud dada utilizando el modelo especificado. Este es un endpoint de streaming, por lo que habrá una serie de respuestas. El objeto de respuesta final incluirá estadísticas y otros datos de la solicitud.

parámetros

  • model(Obligatorio) Nombre del modelo
  • promptConsejo para generar una respuesta
  • suffixTexto tras la respuesta del modelo
  • images: (Opcional) una lista de imágenes codificadas en base64 (para modelos multimodales como llava )

Parámetros avanzados (opcional):

  • format: Devuelve el formato de la respuesta. El único valor aceptado actualmente es json
  • optionsOtros parámetros del modelo, como temperatureyseed et al. (y otros autores)
  • system: Mensajes del sistema
  • templatePlantilla de aviso a utilizar
  • context:: De la anterior reseña de /generate Los parámetros contextuales devueltos en la solicitud pueden utilizarse para mantener una breve memoria de diálogo del
  • streamSi se establece en false La respuesta se devolverá como un único objeto de respuesta en lugar de como un flujo de objetos.
  • rawSi se establece en true no se formateará el mensaje. Si especifica una solicitud de plantilla completa al solicitar la API, puede utilizar opcionalmente la opción raw parámetros
  • keep_alive: Controla el tiempo que el modelo permanece en memoria tras una petición (por defecto:5m)

Ejemplo de solicitud (streaming)

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

Consejo

Si utiliza el curl descargue curl para WindowsPara añadir variables de entorno, extraiga el archivo, busque el subarchivo bin en el directorio donde se encuentra el archivo y copie la dirección del archivo para añadir las variables de entorno.

Utilice el siguiente comando en una ventana de línea de comandos (no en PowerShell) para comprobar si se ha añadido correctamente.

curl --help

Se muestra lo siguiente para indicar que la adición se ha realizado correctamente.

Ollama API 使用指南

Consejo

En una ventana de línea de comandos de Windows, utilice el comando curl Al solicitar comandos, tenga en cuenta el uso de comillas dobles escapadas. A continuación se ofrecen ejemplos de comandos.

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

La siguiente pantalla indica que la solicitud se ha realizado correctamente.

Ollama API 使用指南

Ejemplo de respuesta

El retorno es un flujo de objetos JSON:

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

La respuesta final del flujo también incluye datos adicionales sobre la generación:

  • contexto: el código de diálogo utilizado para esta respuesta, que puede enviarse en la siguiente solicitud para mantener el diálogo en memoria
  • duración_total: tiempo empleado en generar la respuesta (en nanosegundos)
  • duración_carga: tiempo necesario para cargar el modelo (en nanosegundos)
  • prompt_eval_count: número de tokens en el prompt
  • prompt_eval_duration: tiempo necesario para evaluar la solicitud (en nanosegundos)
  • eval_count: número de tokens en la respuesta
  • eval_duration: tiempo necesario para generar la respuesta (en nanosegundos)
  • response: null si la respuesta es streaming, si no, contendrá la respuesta completa Para calcular la tasa de generación de respuestas (número de tokens generados por segundo, tokens/s), es decireval_count / eval_duration * 10^9.

Respuesta final:

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

Juego avanzado

salida sin flujo

comandante en jefe (militar) stream ajustado a falsepuede recibir todas las respuestas a la vez.

Ejemplo de solicitud

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

Ejemplo de respuesta

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

Modo JSON

(coll.) suspender (a un estudiante) format ajustado a json La salida estará en formato JSON. Tenga en cuenta, sin embargo, que el prompt El modelo tiene instrucciones de responder en formato JSON, de lo contrario el modelo puede generar un gran número de espacios.

Ejemplo de solicitud

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

Ejemplo de respuesta

{
"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 será una cadena que contiene JSON similar a la siguiente:

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

La entrada contiene imágenes

Para añadir un nuevo modelo a un modelo multimodal (por ejemplo llava tal vez bakllavaPara enviar una imagen, proporcione una versión codificada en base64 del archivo images Lista:

Ejemplo de solicitud

curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["iVBORw0KGgoAAAANSUhEUgAAAG0AAABmCAYAAADBPx+VAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA3VSURBVHgB7Z27r0zdG8fX743i1bi1ikMoFMQloXRpKFFIqI7LH4BEQ+NWIkjQuSWCRIEoULk0gsK1kCBI0IhrQVT7tz/7zZo888yz1r7MnDl7z5xvsjkzs2fP3uu71nNfa7lkAsm7d++Sffv2JbNmzUqcc8m0adOSzZs3Z+/XES4ZckAWJEGWPiCxjsQNLWmQsWjRIpMseaxcuTKpG/7HP27I8P79e7dq1ars/yL4/v27S0ejqwv+cUOGEGGpKHR37tzJCEpHV9tnT58+dXXCJDdECBE2Ojrqjh071hpNECjx4cMHVycM1Uhbv359B2F79+51586daxN/+pyRkRFXKyRDAqxEp4yMlDDzXG1NPnnyJKkThoK0VFd1ELZu3TrzXKxKfW7dMBQ6bcuWLW2v0VlHjx41z717927ba22U9APcw7Nnz1oGEPeL3m3p2mTAYYnFmMOMXybPPXv2bNIPpFZr1NHn4HMw0KRBjg9NuRw95s8PEcz/6DZELQd/09C9QGq5RsmSRybqkwHGjh07OsJSsYYm3ijPpyHzoiacg35MLdDSIS/O1yM778jOTwYUkKNHWUzUWaOsylE00MyI0fcnOwIdjvtNdW/HZwNLGg+sR1kMepSNJXmIwxBZiG8tDTpEZzKg0GItNsosY8USkxDhD0Rinuiko2gfL/RbiD2LZAjU9zKQJj8RDR0vJBR1/Phx9+PHj9Z7REF4nTZkxzX4LCXHrV271qXkBAPGfP/atWvu/PnzHe4C97F48eIsRLZ9+3a3f/9+87dwP1JxaF7/3r17ba+5l4EcaVo0lj3SBq5kGTJSQmLWMjgYNei2GPT1MuMqGTDEFHzeQSP2wi/jGnkmPJ/nhccs44jvDAxpVcxnq0F6eT8h4ni/iIWpR5lPyA6ETkNXoSukvpJAD3AsXLiwpZs49+fPn5ke4j10TqYvegSfn0OnafC+Tv9ooA/JPkgQysqQNBzagXY55nO/oa1F7qvIPWkRL12WRpMWUvpVDYmxAPehxWSe8ZEXL20sadYIozfmNch4QJPAfeJgW3rNsnzphBKNJM2KKODo1rVOMRYik5ETy3ix4qWNI81qAAirizgMIc+yhTytx0JWZuNI03qsrgWlGtwjoS9XwgUhWGyhUaRZZQNNIEwCiXD16tXcAHUs79co0vSD8rrJCIW98pzvxpAWyyo3HYwqS0+H0BjStClcZJT5coMm6D2LOF8TolGJtK9fvyZpyiC5ePFi9nc/oJU4eiEP0jVoAnHa9wyJycITMP78+eMeP37sXrx44d6+fdt6f82aNdkx1pg9e3Zb5W+RSRE+n+VjksQWifvVaTKFhn5O8my63K8Qabdv33b379/PiAP//vuvW7BggZszZ072/+TJk91YgkafPn166zXB1rQHFvouAWHq9z3SEevSUerqCn2/dDCeta2jxYbr69evk4MHDyY7d+7MjhMnTiTPnz9Pfv/+nfQT2ggpO2dMF8cghuoM7Ygj5iWCqRlGFml0QC/ftGmTmzt3rmsaKDsgBSPh0/8yPeLLBihLkOKJc0jp8H8vUzcxIA1k6QJ/c78tWEyj5P3o4u9+jywNPdJi5rAH9x0KHcl4Hg570eQp3+vHXGyrmEeigzQsQsjavXt38ujRo44LQuDDhw+TW7duRS1HGgMxhNXHgflaNTOsHyKvHK5Ijo2jbFjJBQK9YwFd6RVMzfgRBmEfP37suBBm/p49e1qjEP2mwTViNRo0VJWH1deMXcNK08uUjVUu7s/zRaL+oLNxz1bpANco4npUgX4G2eFbpDFyQoQxojBCpEGSytmOH8qrH5Q9vuzD6ofQylkCUmh8DBAr+q8JCyVNtWQIidKQE9wNtLSQnS4jDSsxNHogzFuQBw4cyM61UKVsjfr3ooBkPSqqQHesUPWVtzi9/vQi1T+rJj7WiTz4Pt/l3LxUkr5P2VYZaZ4URpsE+st/dujQoaBBYokbrz/8TJNQYLSonrPS9kUaSkPeZyj1AWSj+d+VBoy1pIWVNed8P0Ll/ee5HdGRhrHhR5GGN0r4LGZBaj8oFDJitBTJzIZgFcmU0Y8ytWMZMzJOaXUSrUs5RxKnrxmbb5YXO9VGUhtpXldhEUogFr3IzIsvlpmdosVcGVGXFWp2oU9kLFL3dEkSz6NHEY1sjSRdIuDFWEhd8KxFqsRi1uM/nz9/zpxnwlESONdg6dKlbsaMGS4EHFHtjFIDHwKOo46l4TxSuxgDzi+rE2jg+BaFruOX4HXa0Nnf1lwAPufZeF8/r6zD97WK2qFnGjBxTw5qNGPxT+5T/r7/7RawFC3j4vTp09koCxkeHjqbHJqArmH5UrFKKksnxrK7FuRIs8STfBZv+luugXZ2pR/pP9Ois4z+TiMzUUkUjD0iEi1fzX8GmXyuxUBRcaUfykV0YZnlJGKQpOiGB76x5GeWkWWJc3mOrK6S7xdND+W5N6XyaRgtWJFe13GkaZnKOsYqGdOVVVbGupsyA/l7emTLHi7vwTdirNEt0qxnzAvBFcnQF16xh/TMpUuXHDowhlA9vQVraQhkudRdzOnK+04ZSP3DUhVSP61YsaLtd/ks7ZgtPcXqPqEafHkdqa84X6aCeL7YWlv6edGFHb+ZFICPlljHhg0bKuk0CSvVznWsotRu433alNdFrqG45ejoaPCaUkWERpLXjzFL2Rpllp7PJU2a/v7Ab8N05/9t27Z16KUqoFGsxnI9EosS2niSYg9SpU6B4JgTrvVW1flt1sT+0ADIJU2maXzcUTraGCRaL1Wp9rUMk16PMom8QhruxzvZIegJjFU7LLCePfS8uaQdPny4jTTL0dbee5mYokQsXTIWNY46kuMbnt8Kmec+LGWtOVIl9cT1rCB0V8WqkjAsRwta93TbwNYoGKsUSChN44lgBNCoHLHzquYKrU6qZ8lolCIN0Rh6cP0Q3U6I6IXILYOQI513hJaSKAorFpuHXJNfVlpRtmYBk1Su1obZr5dnKAO+L10Hrj3WZW+E3qh6IszE37F6EB+68mGpvKm4eb9bFrlzrok7fvr0Kfv727dvWRmdVTJHw0qiiCUSZ6wCK+7XL/AcsgNyL74DQQ730sv78Su7+t/A36MdY0sW5o40ahslXr58aZ5HtZB8GH64m9EmMZ7FpYw4T6QnrZfgenrhFxaSiSGXtPnz57e9TkNZLvTjeqhr734CNtrK41L40sUQckmj1lGKQ0rC37x544r8eNXRpnVE3ZZY7zXo8NomiO0ZUCj2uHz58rbXoZ6gc0uA+F6ZeKS/jhRDUq8MKrTho9fEkihMmhxtBI1DxKFY9XLpVcSkfoi8JGnToZO5sU5aiDQIW716ddt7ZLYtMQlhECdBGXZZMWldY5BHm5xgAroWj4C0hbYkSc/jBmggIrXJWlZM6pSETsEPGqZOndr2uuuR5rF169a2HoHPdurUKZM4CO1WTPqaDaAd+GFGKdIQkxAn9RuEWcTRyN2KSUgiSgF5aWzPTeA/lN5rZubMmR2bE4SIC4nJoltgAV/dVefZm72AtctUCJU2CMJ327hxY9t7EHbkyJFseq+EJSY16RPo3Dkq1kkr7+q0bNmyDuLQcZBEPYmHVdOBiJyIlrRDq41YPWfXOxUysi5fvtyaj+2BpcnsUV/oSoEMOk2CQGlr4ckhBwaetBhjCwH0ZHtJROPJkyc7UjcYLDjmrH7ADTEBXFfOYmB0k9oYBOjJ8b4aOYSe7QkKcYhFlq3QYLQhSidNmtS2RATwy8YOM3EQJsUjKiaWZ+vZToUQgzhkHXudb/PW5YMHD9yZM2faPsMwoc7RciYJXbGuBqJ1UIGKKLv915jsvgtJxCZDubdXr165mzdvtr1Hz5LONA8jrUwKPqsmVesKa49S3Q4WxmRPUEYdTjgiUcfUwLx589ySJUva3oMkP6IYddq6HMS4o55xBJBUeRjzfa4Zdeg56QZ43LhxoyPo7Lf1kNt7oO8wWAbNwaYjIv5lhyS7kRf96dvm5Jah8vfvX3flyhX35cuX6HfzFHOToS1H4BenCaHvO8pr8iDuwoUL7tevX+b5ZdbBair0xkFIlFDlW4ZknEClsp/TzXyAKVOmmHWFVSbDNw1l1+4f90U6IY/q4V27dpnE9bJ+v87QEydjqx/UamVVPRG+mwkNTYN+9tjkwzEx+atCm/X9WvWtDtAb68Wy9LXa1UmvCDDIpPkyOQ5ZwSzJ4jMrvFcr0rSjOUh+GcT4LSg5ugkW1Io0/SCDQBojh0hPlaJdah+tkVYrnTZowP8iq1F1TgMBBauufyB33x1v+NWFYmT5KmppgHC+NkAgbmRkpD3yn9QIseXymoTQFGQmIOKTxiZIWpvAatenVqRVXf2nTrAWMsPnKrMZHz6bJq5jvce6QK8J1cQNgKxlJapMPdZSR64/UivS9NztpkVEdKcrs5alhhWP9NeqlfWopzhZScI6QxseegZRGeg5a8C3Re1Mfl1ScP36ddcUaMuv24iOJtz7sbUjTS4qBvKmstYJoUauiuD3k5qhyr7QdUHMeCgLa1Ear9NquemdXgmum4fvJ6w1lqsuDhNrg1qSpleJK7K3TF0Q2jSd94uSZ60kK1e3qyVpQK6PVWXp2/FC3mp6jBhKKOiY2h3gtUV64TWM6wDETRPLDfSakXmH3w8g9Jlug8ZtTt4kVF0kLUYYmCCtD/DrQ5YhMGbA9L3ucdjh0y8kOHW5gU/VEEmJTcL4Pz/f7mgoAbYkAAAAAElFTkSuQmCC"
]
}'

Ejemplo de respuesta

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

resultados reproducibles

comandante en jefe (militar) seed Establezca un valor fijo para obtener una salida reproducible:

Ejemplo de solicitud

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

Ejemplo de respuesta

{
"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. Finalización del diálogo

POST /api/chat

Genera el siguiente mensaje en el chat utilizando el modelo especificado. Este es también un endpoint de streaming, por lo que habrá una serie de respuestas. Si el "stream" ajustado a falsese puede desactivar el streaming. El objeto de respuesta final incluirá las estadísticas solicitadas y datos adicionales.

parámetros

  • model(Obligatorio) Nombre del modelo
  • messages: Mensajes de chat, que pueden utilizarse para guardar un recuerdo de la charla
  • toolsEl modelo admite el uso de herramientas. Se requiere que el stream ajustado a false

message El objeto tiene los siguientes campos:

  • roleEl papel del mensaje, que puede ser systemyuseryassistant tal vez tool
  • contentContenido del mensaje
  • images(opcional): una lista de imágenes que se incluirán en el mensaje (para mensajes como llava (Modelos multimodales como éstos)
  • tool_calls(Opcional): lista de herramientas que el modelo desea utilizar

Parámetros avanzados (opcional):

  • format: Devuelve el formato de la respuesta. El único valor aceptado actualmente es json
  • optionsOtros parámetros del modelo, como temperatureyseed et al. (y otros autores)
  • streamSi para falseLa respuesta se devolverá como un único objeto de respuesta en lugar de como un flujo de objetos.
  • keep_alive: Controla el tiempo que el modelo permanece cargado en memoria tras una solicitud (por defecto:5m)

Ejemplo de solicitud (streaming)

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

Ejemplo de respuesta

Devuelve un flujo de objetos JSON:

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

Respuesta final:

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

Juego avanzado

Configuración de parámetros para salida sin flujo, modo JSON, entrada multimodal, salida reproducible y 回答API de coherencia.

Con la historia

Enviar mensajes de chat con historial de diálogo. Se pueden iniciar varias rondas de diálogo o cadenas de pensamiento con el mismo método.

Ejemplo de solicitud

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

Ejemplo de respuesta

{
"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. Creación de modelos

POST /api/create

recomendaciones generales modelfile con el contenido del archivo de modelo, en lugar de establecer simplemente el parámetro pathCreación remota de modelos. La creación de modelos remotos también debe crear explícitamente todos los blobs de archivos, campos (como el campo FROM responder cantando ADAPTER) y establecer el valor en la ruta indicada en la respuesta.

parámetros

  • nameNombre del modelo a crear
  • modelfile(opcional): contenido del archivo de modelo
  • stream(opcional): si para falseLa respuesta se devolverá como un único objeto de respuesta, no como un flujo de objetos.
  • path(Opcional): Ruta al archivo de modelo.

Ejemplo de solicitud

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

Ejemplo de respuesta

Una cadena de objetos JSON. Observe que el objeto JSON final muestra "status": "success"Se ha creado correctamente.

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

Comprobar si el Blob existe

HEAD /api/blobs/:digest

Asegúrese de que el archivo blob para el campo FROM o ADAPTER existe en el servidor. Esto está comprobando su servidor Ollama y no Ollama.ai.

Parámetros de consulta

  • digestResumen SHA256 del blob

Ejemplo de solicitud

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

Ejemplo de respuesta

Devuelve "200 OK" si el blob existe, o "404 Not Found" en caso contrario.

Creación de un Blob

POST /api/blobs/:digest

Crea un blob a partir de un archivo del servidor. Devuelve la ruta del archivo del servidor.

Parámetros de consulta

  • digestResumen SHA256 previsto del documento

Ejemplo de solicitud

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

Ejemplo de respuesta

Devuelve 201 Created si el blob se ha creado correctamente, o 400 Bad Request si el resumen utilizado no es el esperado.

 

IV. Modelos de réplica

POST /api/copy

Duplicar un modelo, utilizando otro nombre para duplicar un modelo existente.

Ejemplo de solicitud

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

Ejemplo de respuesta

Devuelve "200 OK" si tiene éxito, o "404 Not Found" si el modelo de origen no existe.

 

V. Supresión de modelos

DELETE /api/delete

Elimina el modelo y sus datos.

parámetros

  • nameNombre del modelo que debe suprimirse

Ejemplo de solicitud

[](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"
}'

Ejemplo de respuesta

Devuelve "200 OK" si tiene éxito, o "404 Not Found" si el modelo a borrar no existe.

 

VI. Listado de modelos operativos

GET /api/ps

Lista los modelos actualmente cargados en memoria.

Ejemplo de solicitud

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

Ejemplo de respuesta

{
"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. Listado de modelos locales

GET /api/tags

Enumera los modelos disponibles localmente.

Ejemplo de solicitud

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

Ejemplo de respuesta

{
"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. Visualización de la información del modelo

POST /api/show

Muestra información sobre el modelo, incluidos detalles, archivo de modelo, plantillas, parámetros, licencias y sugerencias del sistema.

parámetros

  • nameNombre del modelo a mostrar
  • verbose(Opcional): Si se establece en truey, a continuación, devuelve los datos completos del campo Respuesta detallada

Ejemplo de solicitud

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

Ejemplo de respuesta

{
"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. Modelos de extracción

POST /api/pull

a través de (un hueco) ollama Modelo de descarga de bibliotecas. Una operación pull interrumpida continuará la descarga desde el punto de interrupción, y múltiples llamadas compartirán el mismo progreso de descarga.

parámetros

  • nameNombre del modelo a extraer
  • insecure(Opcional): permite conexiones inseguras a bibliotecas. Se recomienda utilizar esta opción sólo cuando se extrae de sus propias bibliotecas durante el desarrollo.
  • stream(opcional): si para falseLa respuesta se devolverá como un único objeto de respuesta, no como un flujo de objetos.

Ejemplo de solicitud

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

Ejemplo de respuesta

en caso de que stream No especificado o ajustado a truese devuelve una cadena de objetos JSON:

El primer objeto es la lista:

{
"status": "pulling manifest"
}

Luego hay una serie de respuestas de descarga. Hasta que se complete la descarga, no puede contener completed clave. El número de ficheros a descargar depende del número de capas especificadas en la lista.

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

La respuesta final una vez descargados todos los archivos es:

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

en caso de que stream es falso, la respuesta es un único objeto JSON:

{
"status": "success"
}

 

X. Modelo de empuje

POST /api/push

Sube el modelo al repositorio de modelos. Primero tienes que registrar ollama.ai y añadir una clave pública.

parámetros

  • name: el nombre del modelo que se va a empujar, en el formato de <namespace>/<model>:<tag>
  • insecure(Opcional): Permitir conexiones inseguras a las bibliotecas. Utilice esta opción sólo cuando empuje a sus propias bibliotecas durante el desarrollo.
  • stream(opcional): si para falseLa respuesta se devolverá como un único objeto de respuesta, no como un flujo de objetos.

Ejemplo de solicitud

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

Ejemplo de respuesta

en caso de que stream No especificado o ajustado a truese devuelve una cadena de objetos JSON:

{ "status": "retrieving manifest" }

A continuación, una serie de respuestas de carga:

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

Por último, cuando se haya completado la carga:

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

en caso de que stream ajustado a falseSi la respuesta es un único objeto JSON, entonces la respuesta es un único objeto JSON:

{ "status": "success" }

 

XI. Generación de incrustaciones

POST /api/embed

Generación de incrustaciones a partir de modelos.

parámetros

  • modelNombre del modelo a partir del cual se generará la incrustación
  • inputPara generar texto incrustado o una lista de texto

Parámetros avanzados:

  • truncateTrunca el final de cada entrada para ajustarlo a la longitud del contexto. Esto no es un problema si es el caso de false y excede la longitud del contexto, se devuelve un error. El valor por defecto es true
  • optionsOtros parámetros del modelo, como temperatureyseed et al. (y otros autores)
  • keep_alive: Controla el tiempo que el modelo permanece cargado en memoria tras una solicitud (por defecto:5m)

Ejemplo de solicitud

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

Ejemplo de respuesta

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

Ejemplo de solicitud (varias entradas)

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

Ejemplo de respuesta

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

 

tratamiento de errores

La API de Ollama devuelve códigos de error y mensajes apropiados cuando se produce un error. Los errores más comunes son:

  • 400 Bad Request: error de formato de la petición.
  • 404 No encontrado: El recurso solicitado no existe.
  • 500 Internal Server Error: Error interno del servidor.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...