breve
Ollama Uma API REST avançada é fornecida para permitir que os desenvolvedores interajam facilmente com grandes modelos de linguagem. Por meio da API do Ollama, os usuários podem enviar solicitações e receber respostas geradas pelo modelo, aplicadas a tarefas como processamento de linguagem natural, geração de texto etc. Neste documento, as operações básicas de geração de complementos e geração de diálogos são descritas em detalhes, e operações comuns, como criação de modelos, cópia de modelos e exclusão de modelos, também são explicadas.
ponto de partida ou ponto de chegada (em histórias etc.)
Answer Completion \ Dialogue Completion \ Create Model \ Copy Model \ Delete Model \ List Running Models \ List Local Models \ Display Model Information \ Pull Models \ Push Models \ Generate Embedding
I. Conclusão da resposta
POST /api/generate
Gera uma resposta a um determinado prompt usando o modelo especificado. Esse é um endpoint de streaming, portanto, haverá uma série de respostas. O objeto de resposta final incluirá estatísticas e outros dados da solicitação.
parâmetros
model
Nome do modelo: (Obrigatório) Nome do modeloprompt
Dica para gerar uma respostasuffix
Texto após a resposta do modeloimages
(Opcional): uma lista de imagens codificadas em base64 (para modelos multimodais, comollava
)
Parâmetros avançados (opcional):
format
Formato da resposta: Retorna o formato da resposta. O único valor aceito atualmente éjson
options
:: Outros parâmetros do modelo, comotemperature
eseed
et al. (e outros autores)system
Mensagens do sistematemplate
O modelo de prompt a ser usadocontext
:: Da revisão anterior de/generate
Os parâmetros contextuais retornados na solicitação podem ser usados para manter uma breve memória de diálogo dostream
Se definido comofalse
A resposta será retornada como um único objeto de resposta em vez de um fluxo de objetos.raw
Se definido comotrue
não haverá formatação do prompt. Se você especificar um prompt de modelo completo ao solicitar a API, poderá usar opcionalmente a opçãoraw
parâmetroskeep_alive
Tempo de permanência: controla o tempo que o modelo permanece na memória após uma solicitação (padrão):5m
)
Exemplo de solicitação (streaming)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'
Dica
Se você usar o curl
faça o download do comando curl para WindowsPara adicionar variáveis de ambiente, extraia o arquivo e, em seguida, localize o subarquivo bin no diretório em que o arquivo está localizado e copie o endereço do arquivo para adicionar as variáveis de ambiente.
Use o seguinte comando em uma janela de linha de comando (não no PowerShell, veja bem) para verificar se ele foi adicionado com êxito.
curl --help
O seguinte é exibido para indicar que a adição foi bem-sucedida.
Dica
Em uma janela de linha de comando do Windows, use o comando curl
Ao solicitar comandos, observe o uso de aspas duplas com escape. Os exemplos de comandos estão listados abaixo.
curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"
A exibição a seguir indica que a solicitação foi bem-sucedida.
Exemplo de resposta
Retorna um fluxo de objetos JSON:
{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}
A resposta final no fluxo também inclui dados adicionais sobre a geração:
- context: o código de diálogo usado para essa resposta, que pode ser enviado na próxima solicitação para manter o diálogo na memória
- total_duration: tempo gasto na geração da resposta (em nanossegundos)
- load_duration: tempo necessário para carregar o modelo (em nanossegundos)
- prompt_eval_count: número de tokens no prompt
- prompt_eval_duration: tempo necessário para avaliar o prompt (em nanossegundos)
- eval_count: número de tokens na resposta
- eval_duration: tempo necessário para gerar a resposta (nanossegundos)
- response: nulo se a resposta for de fluxo contínuo; caso contrário, conterá a resposta completa Para calcular a taxa de geração de resposta (número de tokens gerados por segundo, tokens/s), isto é
eval_count
/eval_duration
* 10^9.
Resposta 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
}
Jogo avançado
saída sem fluxo
comandante-em-chefe (militar) stream
definido como false
Você pode receber todas as respostas de uma só vez.
Exemplo de solicitação
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'
Exemplo de resposta
{
"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
(col.) reprovar (um aluno) format
definido como json
A saída estará no formato JSON. Observe, no entanto, que o prompt
O modelo é instruído a responder no formato JSON; caso contrário, o modelo poderá gerar um grande número de espaços.
Exemplo de solicitação
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'
Exemplo de resposta
{
"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á uma cadeia de caracteres contendo JSON semelhante ao seguinte:
{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}
A entrada contém imagens
Para adicionar um novo modelo a um modelo multimodal (por exemplo llava
talvez bakllava
Para enviar uma imagem, forneça uma versão codificada em base64 do arquivo images
Lista:
Exemplo de solicitação
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"
]
}'
Exemplo de resposta
{
"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 reproduzíveis
comandante-em-chefe (militar) seed
Defina um valor fixo para obter uma saída reproduzível:
Exemplo de solicitação
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'
Exemplo de resposta
{
"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. conclusão do diálogo
POST /api/chat
Gera a próxima mensagem no chat usando o modelo especificado. Esse também é um endpoint de streaming, portanto, haverá uma série de respostas. Se a mensagem "stream"
definido como false
o streaming pode ser desativado. O objeto de resposta final incluirá as estatísticas solicitadas e dados adicionais.
parâmetros
model
Nome do modelo: (Obrigatório) Nome do modelomessages
Mensagens de bate-papo, que podem ser usadas para manter uma memória do bate-papotools
O modelo suporta o uso de ferramentas. É necessário que astream
definido comofalse
message
O objeto tem os seguintes campos:
role
A função da mensagem, que pode sersystem
euser
eassistant
talveztool
content
Conteúdo da mensagemimages
(opcional): uma lista de imagens a serem incluídas na mensagem (para mensagens comollava
(Modelos multimodais como estes)tool_calls
(Opcional): lista de ferramentas que o modelo deseja usar
Parâmetros avançados (opcional):
format
Formato da resposta: Retorna o formato da resposta. Os únicos valores aceitos atualmente sãojson
options
Outros parâmetros do modelo, comotemperature
eseed
et al. (e outros autores)stream
: Se parafalse
A resposta será retornada como um único objeto de resposta em vez de um fluxo de objetos.keep_alive
Tempo de carregamento: controla o tempo que o modelo permanece carregado na memória após uma solicitação (padrão):5m
)
Exemplo de solicitação (streaming)
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'
Exemplo de resposta
Retorna um fluxo de objetos JSON:
{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}
Resposta 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
}
Jogo avançado
Configurações de parâmetros para saída sem fluxo, modo JSON, entrada multimodal, saída reproduzível e 回答API
de consistência.
Com a história
Envie mensagens de bate-papo com histórico de diálogo. É possível iniciar várias rodadas de diálogo ou de estímulos de cadeia de pensamento usando o mesmo método.
Exemplo de solicitação
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'
Exemplo de resposta
{
"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. criação de modelos
POST /api/create
geral recomendado modelfile
definido para o conteúdo do Modelfile, em vez de apenas definir o path
Criação de modelo remoto. A criação do modelo remoto também deve criar explicitamente todos os blobs de arquivo, campos (como o FROM
responder cantando ADAPTER
) e definir o valor para o caminho indicado na resposta.
parâmetros
name
Nome do modelo a ser criadomodelfile
(opcional): conteúdo do Modelfilestream
(opcional): se parafalse
A resposta será retornada como um único objeto de resposta, não como um fluxo de objetos.path
(Opcional): Caminho para o arquivo de modelo.
Exemplo de solicitação
curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'
Exemplo de resposta
Uma cadeia de objetos JSON. Observe que o objeto JSON final mostra "status": "success"
Solicitado a criar com sucesso.
{"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"}
Verificar se o Blob existe
HEAD /api/blobs/:digest
Certifique-se de que o arquivo blob para o campo FROM ou ADAPTER exista no servidor. Isso está verificando o seu servidor Ollama e não o Ollama.ai.
Parâmetros de consulta
digest
SHA256 digest do blob
Exemplo de solicitação
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Exemplo de resposta
Retorna "200 OK" se o blob existir ou "404 Not Found" se não existir.
Criando um Blob
POST /api/blobs/:digest
Cria um blob a partir de um arquivo no servidor. Retorna o caminho do arquivo do servidor.
Parâmetros de consulta
digest
SHA256: Resumo esperado do documento em SHA256
Exemplo de solicitação
curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Exemplo de resposta
Retorna 201 Created se o blob foi criado com êxito ou 400 Bad Request se o resumo usado não foi o esperado.
IV. modelos de replicação
POST /api/copy
Duplicar um modelo para duplicar um modelo existente usando outro nome.
Exemplo de solicitação
curl http://localhost:11434/api/copy -d '{
"source": "llama3.1",
"destination": "llama3-backup"
}'
Exemplo de resposta
Retorna "200 OK" se for bem-sucedido, ou "404 Not Found" se o modelo de origem não existir.
V. Exclusão de modelos
DELETE /api/delete
Excluir o modelo e seus dados.
parâmetros
name
Nome do modelo a ser excluído
Exemplo de solicitação
[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.1 TP3T20OllamaAPI. md#-4)curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'
Exemplo de resposta
Retorna "200 OK" se for bem-sucedido, ou "404 Not Found" se o modelo a ser excluído não existir.
VI. listagem de modelos operacionais
GET /api/ps
Lista os modelos atualmente carregados na memória.
Exemplo de solicitação
curl http://localhost:11434/api/ps
Exemplo de resposta
{
"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. listagem de modelos locais
GET /api/tags
Lista os modelos disponíveis localmente.
Exemplo de solicitação
curl http://localhost:11434/api/tags
Exemplo de resposta
{
"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. exibição de informações do modelo
POST /api/show
Exibe informações sobre o modelo, incluindo detalhes, arquivo de modelo, modelos, parâmetros, licenças e dicas do sistema.
parâmetros
name
Nome do modelo a ser exibidoverbose
(Opcional): se definido comotrue
e, em seguida, retorna os dados completos do campo Detailed Response (Resposta detalhada)
Exemplo de solicitação
curl http://localhost:11434/api/show -d '{
"name": "llama3.1"
}'
Exemplo de resposta
{
"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 extração
POST /api/pull
através de (uma lacuna) ollama
Modelo de download da biblioteca. Uma operação pull interrompida continuará o download a partir do ponto de interrupção, e várias chamadas compartilharão o mesmo progresso de download.
parâmetros
name
Nome do modelo a ser extraídoinsecure
(Opcional): permite conexões inseguras com bibliotecas. Recomenda-se usar essa opção somente quando estiver extraindo de suas próprias bibliotecas durante o desenvolvimento.stream
(opcional): se parafalse
A resposta será retornada como um único objeto de resposta, não como um fluxo de objetos.
Exemplo de solicitação
curl http://localhost:11434/api/pull -d '{
"name": "llama3.1"
}'
Exemplo de resposta
no caso de stream
Não especificado ou definido como true
e, em seguida, uma cadeia de objetos JSON é retornada:
O primeiro objeto é a lista:
{
"status": "pulling manifest"
}
Em seguida, há uma série de respostas de download. Até que o download seja concluído, ele pode não conter completed
chave. O número de arquivos a serem baixados depende do número de camadas especificadas na lista.
{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}
A resposta final após o download de todos os arquivos é:
{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}
no caso de stream
é definido como false, a resposta é um único objeto JSON:
{
"status": "success"
}
X. Modelo push
POST /api/push
Carregue o modelo no repositório de modelos. Primeiro, é necessário registrar o ollama.ai e adicionar uma chave pública.
parâmetros
name
Nome do modelo a ser enviado, no formato de<namespace>/<model>:<tag>
insecure
(Opcional): permitir conexões inseguras com as bibliotecas. Use essa opção somente quando estiver fazendo push para suas próprias bibliotecas durante o desenvolvimento.stream
(opcional): se parafalse
A resposta será retornada como um único objeto de resposta, não como um fluxo de objetos.
Exemplo de solicitação
curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'
Exemplo de resposta
no caso de stream
Não especificado ou definido como true
e, em seguida, uma cadeia de objetos JSON é retornada:
{ "status": "retrieving manifest" }
Em seguida, uma série de respostas de upload:
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}
Por fim, quando o upload estiver concluído:
{"status":"pushing manifest"}
{"status":"success"}
no caso de stream
definido como false
Se a resposta for um único objeto JSON, então a resposta será um único objeto JSON:
{ "status": "success" }
XI Geração de incorporações
POST /api/embed
Geração de embeddings a partir de modelos.
parâmetros
model
Nome do modelo a partir do qual a incorporação deve ser geradainput
Para gerar texto incorporado ou uma lista de textos
Parâmetros avançados:
truncate
Truncar o final de cada entrada para ajustar o comprimento do contexto. Isso não é um problema se for o caso defalse
e excede o comprimento do contexto, é retornado um erro. O valor padrão étrue
options
Outros parâmetros do modelo, comotemperature
eseed
et al. (e outros autores)keep_alive
Tempo de carregamento: controla o tempo que o modelo permanece carregado na memória após uma solicitação (padrão):5m
)
Exemplo de solicitação
curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'
Exemplo de resposta
{
"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}
Exemplo de solicitação (várias entradas)
curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'
Exemplo de resposta
{
"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
}
Tratamento de erros
A API da Ollama retorna códigos e mensagens de erro apropriados quando ocorre um erro. Os erros comuns incluem:
- 400 Bad Request: erro no formato da solicitação.
- 404 Not Found: o recurso solicitado não existe.
- 500 Internal Server Error: Erro interno do servidor.