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
modelNome do modelo: (Obrigatório) Nome do modelopromptDica para gerar uma respostasuffixTexto após a resposta do modeloimages(Opcional): uma lista de imagens codificadas em base64 (para modelos multimodais, comollava)
Parâmetros avançados (opcional):
formatFormato da resposta: Retorna o formato da resposta. O único valor aceito atualmente éjsonoptions:: Outros parâmetros do modelo, comotemperatureeseedet al. (e outros autores)systemMensagens do sistematemplateO modelo de prompt a ser usadocontext:: Da revisão anterior de/generateOs parâmetros contextuais retornados na solicitação podem ser usados para manter uma breve memória de diálogo dostreamSe definido comofalseA resposta será retornada como um único objeto de resposta em vez de um fluxo de objetos.rawSe definido comotruenão haverá formatação do prompt. Se você especificar um prompt de modelo completo ao solicitar a API, poderá usar opcionalmente a opçãorawparâmetroskeep_aliveTempo 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 falseVocê 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 bakllavaPara 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": ["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"
]
}'
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 falseo streaming pode ser desativado. O objeto de resposta final incluirá as estatísticas solicitadas e dados adicionais.
parâmetros
modelNome do modelo: (Obrigatório) Nome do modelomessagesMensagens de bate-papo, que podem ser usadas para manter uma memória do bate-papotoolsO modelo suporta o uso de ferramentas. É necessário que astreamdefinido comofalse
message O objeto tem os seguintes campos:
roleA função da mensagem, que pode sersystemeusereassistanttalveztoolcontentConteú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):
formatFormato da resposta: Retorna o formato da resposta. Os únicos valores aceitos atualmente sãojsonoptionsOutros parâmetros do modelo, comotemperatureeseedet al. (e outros autores)stream: Se parafalseA resposta será retornada como um único objeto de resposta em vez de um fluxo de objetos.keep_aliveTempo 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 pathCriaçã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
nameNome do modelo a ser criadomodelfile(opcional): conteúdo do Modelfilestream(opcional): se parafalseA 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
digestSHA256 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
digestSHA256: 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
nameNome do modelo a ser excluído
Exemplo de solicitação
[](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"
}'
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
nameNome do modelo a ser exibidoverbose(Opcional): se definido comotruee, 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
nameNome 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 parafalseA 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 truee, 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
nameNome 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 parafalseA 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 truee, 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 falseSe 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
modelNome do modelo a partir do qual a incorporação deve ser geradainputPara gerar texto incorporado ou uma lista de textos
Parâmetros avançados:
truncateTruncar o final de cada entrada para ajustar o comprimento do contexto. Isso não é um problema se for o caso defalsee excede o comprimento do contexto, é retornado um erro. O valor padrão étrueoptionsOutros parâmetros do modelo, comotemperatureeseedet al. (e outros autores)keep_aliveTempo 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.

































