Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

Guia do usuário da API da Ollama

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 modelo
  • promptDica para gerar uma resposta
  • suffixTexto após a resposta do modelo
  • images(Opcional): uma lista de imagens codificadas em base64 (para modelos multimodais, como llava )

Parâmetros avançados (opcional):

  • formatFormato da resposta: Retorna o formato da resposta. O único valor aceito atualmente é json
  • options:: Outros parâmetros do modelo, como temperatureeseed et al. (e outros autores)
  • systemMensagens do sistema
  • templateO modelo de prompt a ser usado
  • context:: 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 do
  • streamSe definido como false A resposta será retornada como um único objeto de resposta em vez de um fluxo de objetos.
  • rawSe definido como true não haverá formatação do prompt. Se você especificar um prompt de modelo completo ao solicitar a API, poderá usar opcionalmente a opção raw parâmetros
  • keep_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.

Guia do usuário da API da Ollama-1

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.

Guia do usuário da API da Ollama-2

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 modelo
  • messagesMensagens de bate-papo, que podem ser usadas para manter uma memória do bate-papo
  • toolsO modelo suporta o uso de ferramentas. É necessário que a stream definido como false

message O objeto tem os seguintes campos:

  • roleA função da mensagem, que pode ser systemeusereassistant talvez tool
  • contentConteúdo da mensagem
  • images(opcional): uma lista de imagens a serem incluídas na mensagem (para mensagens como llava (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ão json
  • optionsOutros parâmetros do modelo, como temperatureeseed et al. (e outros autores)
  • stream: Se para falseA 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 criado
  • modelfile(opcional): conteúdo do Modelfile
  • stream(opcional): se para falseA 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.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

  • nameNome do modelo a ser exibido
  • verbose(Opcional): se definido como truee, 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ído
  • insecure(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 para falseA 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 para falseA 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 gerada
  • inputPara 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 de false e excede o comprimento do contexto, é retornado um erro. O valor padrão é true
  • optionsOutros parâmetros do modelo, como temperatureeseed et 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.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Guia do usuário da API da Ollama
pt_BRPortuguês do Brasil