辣妈之野望 3 — Ollama的API调用详细解释

API列表

  • 生成完成
  • 生成聊天完成
  • 创建模型
  • 列出本地模型
  • 显示模型信息
  • 复制模型
  • 删除模型
  • 拉取模型
  • 推送模型
  • 生成嵌入
  • 列出正在运行的模型
  • 版本
辣妈之野望 3 -- Ollama的API调用详细解释

公约

型号名称

模型名称遵循以下model:tag格式:其中model可以有一个可选的命名空间,例如example/model。一些示例是orca-mini:3b-q4_1llama3:70b。标签是可选的,如果未提供,则默认为latest。标签用于标识特定版本。

持续时间

所有持续时间均以纳秒为单位返回。

流式响应

{"stream": false}某些端点将响应流式传输为 JSON 对象。可以通过提供这些端点来禁用流式传输。

生成完成

POST /api/generate

使用提供的模型针对给定的提示生成响应。这是一个流式端点,因此会有一系列响应。最终的响应对象将包括来自请求的统计信息和其他数据。

参数

  • model:(必填)模型名称
  • prompt:生成响应的提示
  • suffix:模型响应后的文本
  • images:(可选)base64编码图像列表(用于多模态模型,例如llava

高级参数(可选):

  • format:返回响应的格式。格式可以是jsonJSON 模式
  • options: Modelfile文档中列出的其他模型参数,例如temperature
  • system:系统消息(覆盖 中定义的内容Modelfile
  • template:要使用的提示模板(覆盖 中定义的内容Modelfile
  • stream:如果false响应将作为单个响应对象返回,而不是对象流
  • raw:如果true提示不应用任何格式。raw如果您在向 API 发出的请求中指定了完整的模板提示,则可以选择使用该参数
  • keep_alive:控制模型在请求后保持加载到内存中的时间(默认值5m:)
  • context(已弃用):从上一次请求返回的上下文参数/generate,可用于保存简短的对话记忆

结构化输出

通过在参数中提供 JSON 架构,支持结构化输出format。模型将生成与架构匹配的响应。请参阅下面的结构化输出示例。

JSON 模式

format通过将参数设置为 来启用 JSON 模式json。这会将响应构造为有效的 JSON 对象。请参阅下面的 JSON 模式示例

重要的

指示模型在 中使用 JSON 非常重要prompt。否则,模型可能会生成大量空白。

正式代码示例

本示例确定可运行。

注意点:

  1. 需要本地pip install ollama (我们直接用了Ollama的库来调用)
  2. 确保你有一个本地(或者局域网)可以访问的Ollama服务器,并且安装了你需要的大模型。 还没有这个的,可以学习 辣妈之野望 1 — 部署你个人的Ollama大模型框架辣妈之野望 6 — 用open webui体验Ollama本地大模型框架
from ollama import Client

client = Client(
  # 你的自己的Ollama服务器地址
  host='http://192.168.3.16:11434',
  # 实际情况这个设置无非没啥作用
  headers={'Content-type': 'application/json'}
)

# 实际的调用接口,指定模型用deepseek-r 7b的,问题就是【为什么天空是蓝色的】
stream = client.chat(
    model='deepseek-r1',
    messages=[{'role': 'user', 'content': '为什么天空是蓝色的?'}],
    stream=True,
)

# 从返回的流式记录中抽取message中的content字段内容
# 这个和上文中的直接dump到json输出更先进了一步
for chunk in stream:
  print(chunk['message']['content'], end='', flush=True)

更多技术资讯下载: 2img.ai

相关配图由微信小程序【字形绘梦】免费生成

辣妈之野望 3 -- Ollama的API调用详细解释

示例

生成请求(流式传输)

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”, “prompt”: “Why is the sky blue?”}’

回复

返回 JSON 对象流:

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T08:52:19.385406455-07:00”,

“response”: “The”,

“done”: false

}

流中的最终响应还包括有关生成的其他数据:

  • total_duration:生成响应所花费的时间
  • load_duration:加载模型所花费的时间(以纳秒为单位)
  • prompt_eval_count:提示中的标记数
  • prompt_eval_duration:执行提示所花费的时间(以纳秒为单位)
  • eval_count:响应中的标记数
  • eval_duration:生成响应所用的时间(以纳秒为单位)
  • context:此响应中使用的对话编码,可在下一个请求中发送以保留对话记忆
  • response:如果响应是流式传输的,则为空;如果响应不是流式传输的,则将包含完整响应

要计算每秒生成令牌数 (token/s) 的响应速度,请除以eval_count/ eval_duration* 10^9

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T19:22:45.499127Z”,

“response”: “”,

“done”: true,

“context”: [1, 2, 3],

“total_duration”: 10706818083,

“load_duration”: 6338219291,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 130079000,

“eval_count”: 259,

“eval_duration”: 4232710000

}

请求(无流媒体)

要求

当流媒体关闭时,一次回复即可收到响应。

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”, “prompt”: “Why is the sky blue?”, “stream”: false}’

回复

如果stream设置为false,响应将是单个 JSON 对象:

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T19:22:45.499127Z”,

“response”: “The sky is blue because it is the color of the sky.”,

“done”: true,

“context”: [1, 2, 3],

“total_duration”: 5043500667,

“load_duration”: 5025959,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 325953000,

“eval_count”: 290,

“eval_duration”: 4709213000

}

请求(带后缀)

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “codellama:code”, “prompt”: “def compute_gcd(a, b):”, “suffix”: ” return result”, “options”: { “temperature”: 0 }, “stream”: false}’

回复

{

“model”: “codellama:code”,

“created_at”: “2024-07-22T20:47:51.147561Z”,

“response”: “\n if a == 0:\n return b\n else:\n return compute_gcd(b % a, a)\n\ndef compute_lcm(a, b):\n result = (a * b) / compute_gcd(a, b)\n”,

“done”: true,

“done_reason”: “stop”,

“context”: […],

“total_duration”: 1162761250,

“load_duration”: 6683708,

“prompt_eval_count”: 17,

“prompt_eval_duration”: 201222000,

“eval_count”: 63,

“eval_duration”: 953997000

}

请求(结构化输出)

要求

curl -X POST http://localhost:11434/api/generate -H “Content-Type: application/json” -d ‘{ “model”: “llama3.1:8b”, “prompt”: “Ollama is 22 years old and is busy saving the world. Respond using JSON”, “stream”: false, “format”: { “type”: “object”, “properties”: { “age”: { “type”: “integer” }, “available”: { “type”: “boolean” } }, “required”: [ “age”, “available” ] }}’

回复

{

“model”: “llama3.1:8b”,

“created_at”: “2024-12-06T00:48:09.983619Z”,

“response”: “{\n \”age\”: 22,\n \”available\”: true\n}”,

“done”: true,

“done_reason”: “stop”,

“context”: [1, 2, 3],

“total_duration”: 1075509083,

“load_duration”: 567678166,

“prompt_eval_count”: 28,

“prompt_eval_duration”: 236000000,

“eval_count”: 16,

“eval_duration”: 269000000

}

请求(JSON 模式)

重要的

format设置为 时json,输出将始终是格式正确的 JSON 对象。指示模型以 JSON 格式响应也很重要。

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”, “prompt”: “What color is the sky at different times of the day? Respond using JSON”, “format”: “json”, “stream”: false}’

回复

{

“model”: “llama3.2”,

“created_at”: “2023-11-09T21:07:55.186497Z”,

“response”: “{\n\”morning\”: {\n\”color\”: \”blue\”\n},\n\”noon\”: {\n\”color\”: \”blue-gray\”\n},\n\”afternoon\”: {\n\”color\”: \”warm gray\”\n},\n\”evening\”: {\n\”color\”: \”orange\”\n}\n}\n”,

“done”: true,

“context”: [1, 2, 3],

“total_duration”: 4648158584,

“load_duration”: 4071084,

“prompt_eval_count”: 36,

“prompt_eval_duration”: 439038000,

“eval_count”: 180,

“eval_duration”: 4196918000

}

的值response将是一个包含类似以下内容的 JSON 的字符串:

{

“morning”: {

“color”: “blue”

},

“noon”: {

“color”: “blue-gray”

},

“afternoon”: {

“color”: “warm gray”

},

“evening”: {

“color”: “orange”

}

}

请求(带图片)

要将图像提交到多模式模型(如llavabakllava),请提供 base64 编码的 列表images

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “llava”, “prompt”:”What is in this picture?”, “stream”: false, “images”: [“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”]}’

回复

{

“model”: “llava”,

“created_at”: “2023-11-03T15:36:02.583064Z”,

“response”: “A happy cartoon character, which is cute and cheerful.”,

“done”: true,

“context”: [1, 2, 3],

“total_duration”: 2938432250,

“load_duration”: 2559292,

“prompt_eval_count”: 1,

“prompt_eval_duration”: 2195557000,

“eval_count”: 44,

“eval_duration”: 736432000

}

请求(原始模式)

在某些情况下,您可能希望绕过模板系统并提供完整提示。在这种情况下,您可以使用raw参数来禁用模板。另请注意,原始模式不会返回上下文。

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “mistral”, “prompt”: “[INST] why is the sky blue? [/INST]”, “raw”: true, “stream”: false}’

请求(可重现的输出)

对于可重现的输出,设置seed为一个数字:

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “mistral”, “prompt”: “Why is the sky blue?”, “options”: { “seed”: 123 }}’

回复

{

“model”: “mistral”,

“created_at”: “2023-11-03T15:36:02.583064Z”,

“response”: ” The sky appears blue because of a phenomenon called Rayleigh scattering.”,

“done”: true,

“total_duration”: 8493852375,

“load_duration”: 6589624375,

“prompt_eval_count”: 14,

“prompt_eval_duration”: 119039000,

“eval_count”: 110,

“eval_duration”: 1779061000

}

生成请求(带选项)

如果您想在运行时而不是在 Modelfile 中为模型设置自定义选项,则可以使用options参数进行设置。此示例设置了所有可用选项,但您可以单独设置其中任何一个选项,并忽略您不想覆盖的选项。

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”, “prompt”: “Why is the sky blue?”, “stream”: false, “options”: { “num_keep”: 5, “seed”: 42, “num_predict”: 100, “top_k”: 20, “top_p”: 0.9, “min_p”: 0.0, “typical_p”: 0.7, “repeat_last_n”: 33, “temperature”: 0.8, “repeat_penalty”: 1.2, “presence_penalty”: 1.5, “frequency_penalty”: 1.0, “mirostat”: 1, “mirostat_tau”: 0.8, “mirostat_eta”: 0.6, “penalize_newline”: true, “stop”: [“\n”, “user:”], “numa”: false, “num_ctx”: 1024, “num_batch”: 2, “num_gpu”: 1, “main_gpu”: 0, “low_vram”: false, “vocab_only”: false, “use_mmap”: true, “use_mlock”: false, “num_thread”: 8 }}’

回复

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T19:22:45.499127Z”,

“response”: “The sky is blue because it is the color of the sky.”,

“done”: true,

“context”: [1, 2, 3],

“total_duration”: 4935886791,

“load_duration”: 534986708,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 107345000,

“eval_count”: 237,

“eval_duration”: 4289432000

}

加载模型

如果提供空的提示,模型将被加载到内存中。

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”}’

回复

返回单个 JSON 对象:

{

“model”: “llama3.2”,

“created_at”: “2023-12-18T19:52:07.071755Z”,

“response”: “”,

“done”: true

}

卸载模型

如果提供空提示并将keep_alive参数设置为0,则模型将从内存中卸载。

要求

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”, “keep_alive”: 0}’

回复

返回单个 JSON 对象:

{

“model”: “llama3.2”,

“created_at”: “2024-09-12T03:54:03.516566Z”,

“response”: “”,

“done”: true,

“done_reason”: “unload”

}

生成聊天完成

POST /api/chat

使用提供的模型生成聊天中的下一条消息。这是一个流式端点,因此会有一系列响应。可以使用 禁用流式传输"stream": false。最终响应对象将包括来自请求的统计信息和其他数据。

参数

  • model:(必填)模型名称
  • messages:聊天消息,可用于保存聊天记忆
  • tools:如果支持,则以 JSON 格式列出模型要使用的工具

message对象具有以下字段:

  • role:消息的角色,可以是systemuserassistanttool
  • content:消息内容
  • images(可选):要包含在消息中的图像列表(用于多模式模型,例如llava
  • tool_calls(可选):模型想要使用的 JSON 格式的工具列表

高级参数(可选):

  • format:返回响应的格式。格式可以是jsonJSON 模式。
  • options: Modelfile文档中列出的其他模型参数,例如temperature
  • stream:如果false响应将作为单个响应对象返回,而不是对象流
  • keep_alive:控制模型在请求后保持加载到内存中的时间(默认值5m:)

结构化输出

通过在参数中提供 JSON 架构来支持结构化输出format。模型将生成与架构匹配的响应。请参阅下面的聊天请求(结构化输出)示例。

示例

聊天请求(流媒体)

要求

发送带有流式响应的聊天消息。

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: [ { “role”: “user”, “content”: “why is the sky blue?” } ]}’

回复

返回 JSON 对象流:

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T08:52:19.385406455-07:00”,

“message”: {

“role”: “assistant”,

“content”: “The”,

“images”: null

},

“done”: false

}

最终回应:

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T19:22:45.499127Z”,

“done”: true,

“total_duration”: 4883583458,

“load_duration”: 1334875,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 342546000,

“eval_count”: 282,

“eval_duration”: 4535599000

}

聊天请求(无流媒体)

要求

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: [ { “role”: “user”, “content”: “why is the sky blue?” } ], “stream”: false}’

回复

{

“model”: “llama3.2”,

“created_at”: “2023-12-12T14:13:43.416799Z”,

“message”: {

“role”: “assistant”,

“content”: “Hello! How are you today?”

},

“done”: true,

“total_duration”: 5191566416,

“load_duration”: 2154458,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 383809000,

“eval_count”: 298,

“eval_duration”: 4799921000

}

聊天请求(结构化输出)

要求

curl -X POST http://localhost:11434/api/chat -H “Content-Type: application/json” -d ‘{ “model”: “llama3.1”, “messages”: [{“role”: “user”, “content”: “Ollama is 22 years old and busy saving the world. Return a JSON object with the age and availability.”}], “stream”: false, “format”: { “type”: “object”, “properties”: { “age”: { “type”: “integer” }, “available”: { “type”: “boolean” } }, “required”: [ “age”, “available” ] }, “options”: { “temperature”: 0 }}’

回复

{

“model”: “llama3.1”,

“created_at”: “2024-12-06T00:46:58.265747Z”,

“message”: { “role”: “assistant”, “content”: “{\”age\”: 22, \”available\”: false}” },

“done_reason”: “stop”,

“done”: true,

“total_duration”: 2254970291,

“load_duration”: 574751416,

“prompt_eval_count”: 34,

“prompt_eval_duration”: 1502000000,

“eval_count”: 12,

“eval_duration”: 175000000

}

聊天请求(带历史记录)

发送带有对话历史记录的聊天消息。您可以使用相同的方法通过多重提示或思路链提示来开始对话。

要求

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: [ { “role”: “user”, “content”: “why is the sky blue?” }, { “role”: “assistant”, “content”: “due to rayleigh scattering.” }, { “role”: “user”, “content”: “how is that different than mie scattering?” } ]}’

回复

返回 JSON 对象流:

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T08:52:19.385406455-07:00”,

“message”: {

“role”: “assistant”,

“content”: “The”

},

“done”: false

}

最终回应:

{

“model”: “llama3.2”,

“created_at”: “2023-08-04T19:22:45.499127Z”,

“done”: true,

“total_duration”: 8113331500,

“load_duration”: 6396458,

“prompt_eval_count”: 61,

“prompt_eval_duration”: 398801000,

“eval_count”: 468,

“eval_duration”: 7701267000

}

聊天请求(带图片)

要求

发送带有图片的聊天消息。图片应以数组形式提供,其中各个图片均采用 Base64 编码。

curl http://localhost:11434/api/chat -d ‘{ “model”: “llava”, “messages”: [ { “role”: “user”, “content”: “what is in this image?”, “images”: [“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”] } ]}’

回复

{

“model”: “llava”,

“created_at”: “2023-12-13T22:42:50.203334Z”,

“message”: {

“role”: “assistant”,

“content”: ” The image features a cute, little pig with an angry facial expression. It’s wearing a heart on its shirt and is waving in the air. This scene appears to be part of a drawing or sketching project.”,

“images”: null

},

“done”: true,

“total_duration”: 1668506709,

“load_duration”: 1986209,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 359682000,

“eval_count”: 83,

“eval_duration”: 1303285000

}

聊天请求(可重现的输出)

要求

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: [ { “role”: “user”, “content”: “Hello!” } ], “options”: { “seed”: 101, “temperature”: 0 }}’

回复

{

“model”: “llama3.2”,

“created_at”: “2023-12-12T14:13:43.416799Z”,

“message”: {

“role”: “assistant”,

“content”: “Hello! How are you today?”

},

“done”: true,

“total_duration”: 5191566416,

“load_duration”: 2154458,

“prompt_eval_count”: 26,

“prompt_eval_duration”: 383809000,

“eval_count”: 298,

“eval_duration”: 4799921000

}

聊天请求(带工具)

要求

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: [ { “role”: “user”, “content”: “What is the weather today in Paris?” } ], “stream”: false, “tools”: [ { “type”: “function”, “function”: { “name”: “get_current_weather”, “description”: “Get the current weather for a location”, “parameters”: { “type”: “object”, “properties”: { “location”: { “type”: “string”, “description”: “The location to get the weather for, e.g. San Francisco, CA” }, “format”: { “type”: “string”, “description”: “The format to return the weather in, e.g. ‘celsius’ or ‘fahrenheit'”, “enum”: [“celsius”, “fahrenheit”] } }, “required”: [“location”, “format”] } } } ]}’

回复

{

“model”: “llama3.2”,

“created_at”: “2024-07-22T20:33:28.123648Z”,

“message”: {

“role”: “assistant”,

“content”: “”,

“tool_calls”: [

{

“function”: {

“name”: “get_current_weather”,

“arguments”: {

“format”: “celsius”,

“location”: “Paris, FR”

}

}

}

]

},

“done_reason”: “stop”,

“done”: true,

“total_duration”: 885095291,

“load_duration”: 3753500,

“prompt_eval_count”: 122,

“prompt_eval_duration”: 328493000,

“eval_count”: 33,

“eval_duration”: 552222000

}

加载模型

如果消息数组为空,模型将被加载到内存中。

要求

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: []}’

回复

{

“model”: “llama3.2”,

“created_at”:”2024-09-12T21:17:29.110811Z”,

“message”: {

“role”: “assistant”,

“content”: “”

},

“done_reason”: “load”,

“done”: true

}

卸载模型

如果消息数组为空且keep_alive参数设置为0,则模型将从内存中卸载。

要求

curl http://localhost:11434/api/chat -d ‘{ “model”: “llama3.2”, “messages”: [], “keep_alive”: 0}’

回复

返回单个 JSON 对象:

{

“model”: “llama3.2”,

“created_at”:”2024-09-12T21:33:17.547535Z”,

“message”: {

“role”: “assistant”,

“content”: “”

},

“done_reason”: “unload”,

“done”: true

}

创建模型

POST /api/create

从以下位置创建模型:

  • 另一个模型;
  • safetensors 目录;或
  • GGUF 文件。

如果您从 safetensors 目录或 GGUF 文件创建模型,则必须为每个文件创建一个 blobfiles ,然后使用与字段中的每个 blob 关联的文件名和 SHA256 摘要。

参数

  • model:要创建的模型的名称
  • from:(可选)用于创建新模型的现有模型的名称
  • files:(可选)文件名字典,用于创建模型的 SHA256 摘要
  • adapters:(可选)LORA 适配器的文件名字典,用于 SHA256 摘要
  • template:(可选)模型的提示模板
  • license:(可选)包含模型许可证的字符串或字符串列表
  • system:(可选)包含模型的系统提示的字符串
  • parameters:(可选)模型参数词典(请参阅Modelfile了解参数列表)
  • messages:(可选)用于创建对话的消息对象列表
  • stream:(可选)如果false响应将作为单个响应对象而不是对象流返回
  • quantize(可选):量化非量化(例如 float16)模型

量化类型

表格 还在加载中,请等待加载完成后再尝试复制

示例

创建新模型

从现有模型创建新模型。

要求

curl http://localhost:11434/api/create -d ‘{ “model”: “mario”, “from”: “llama3.2”, “system”: “You are Mario from Super Mario Bros.”}’

回复

返回 JSON 对象流:

{“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”}

量化模型

量化非量化模型。

要求

curl http://localhost:11434/api/create -d ‘{ “model”: “llama3.1:quantized”, “from”: “llama3.1:8b-instruct-fp16”, “quantize”: “q4_K_M”}’

回复

返回 JSON 对象流:

{“status”:”quantizing F16 model to Q4_K_M”}

{“status”:”creating new layer sha256:667b0c1932bc6ffc593ed1d03f895bf2dc8dc6df21db3042284a6f4416b06a29″}

{“status”:”using existing layer sha256:11ce4ee3e170f6adebac9a991c22e22ab3f8530e154ee669954c4bc73061c258″}

{“status”:”using existing layer sha256:0ba8f0e314b4264dfd19df045cde9d4c394a52474bf92ed6a3de22a4ca31a177″}

{“status”:”using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb”}

{“status”:”creating new layer sha256:455f34728c9b5dd3376378bfb809ee166c145b0b4c1f1a6feca069055066ef9a”}

{“status”:”writing manifest”}

{“status”:”success”}

从 GGUF 创建模型

从 GGUF 文件创建模型。files参数应填写您要使用的 GGUF 文件的文件名和 SHA256 摘要。在调用此 API 之前,请使用/api/blobs/:digest将 GGUF 文件推送到服务器。

要求

curl http://localhost:11434/api/create -d ‘{ “model”: “my-gguf-model”, “files”: { “test.gguf”: “sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3” }}’

回复

返回 JSON 对象流:

{“status”:”parsing GGUF”}

{“status”:”using existing layer sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3″}

{“status”:”writing manifest”}

{“status”:”success”}

从 Safetensors 目录创建模型

files参数应包含 safetensors 模型的文件字典,其中包含每个文件的文件名和 SHA256 摘要。在调用此 API 之前,先使用/api/blobs/:digest将每个文件推送到服务器。文件将保留在缓存中,直到 Ollama 服务器重新启动。

要求

curl http://localhost:11434/api/create -d ‘{ “model”: “fred”, “files”: { “config.json”: “sha256:dd3443e529fb2290423a0c65c2d633e67b419d273f170259e27297219828e389”, “generation_config.json”: “sha256:88effbb63300dbbc7390143fbbdd9d9fa50587b37e8bfd16c8c90d4970a74a36”, “special_tokens_map.json”: “sha256:b7455f0e8f00539108837bfa586c4fbf424e31f8717819a6798be74bef813d05”, “tokenizer.json”: “sha256:bbc1904d35169c542dffbe1f7589a5994ec7426d9e5b609d07bab876f32e97ab”, “tokenizer_config.json”: “sha256:24e8a6dc2547164b7002e3125f10b415105644fcf02bf9ad8b674c87b1eaaed6”, “model.safetensors”: “sha256:1ff795ff6a07e6a68085d206fb84417da2f083f68391c2843cd2b8ac6df8538f” }}’

回复

返回 JSON 对象流:

{“status”:”converting model”}

{“status”:”creating new layer sha256:05ca5b813af4a53d2c2922933936e398958855c44ee534858fcfd830940618b6″}

{“status”:”using autodetected template llama3-instruct”}

{“status”:”using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb”}

{“status”:”writing manifest”}

{“status”:”success”}

检查 Blob 是否存在

HEAD /api/blobs/:digest

确保用于创建模型的文件 blob(二进制大对象)存在于服务器上。这将检查您的 Ollama 服务器,而不是 ollama.com。

查询参数

  • digest:blob 的 SHA256 摘要

示例

要求

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

回复

如果 Blob 存在则返回 200 OK,如果不存在则返回 404 Not Found。

推送 Blob

POST /api/blobs/:digest

将文件推送到 Ollama 服务器以创建“blob”(二进制大对象)。

查询参数

  • digest:文件的预期 SHA256 摘要

示例

要求

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

回复

如果 Blob 成功创建,则返回 201 Created;如果使用的摘要不符合预期,则返回 400 Bad Request。

列出本地模型

GET /api/tags

列出本地可用的型号。

示例

要求

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

回复

将返回单个 JSON 对象。

{

“models”: [

{

“name”: “codellama:13b”,

“modified_at”: “2023-11-04T14:56:49.277302595-07:00”,

“size”: 7365960935,

“digest”: “9f438cb9cd581fc025612d27f7c1a6669ff83a8bb0ed86c94fcf4c5440555697”,

“details”: {

“format”: “gguf”,

“family”: “llama”,

“families”: null,

“parameter_size”: “13B”,

“quantization_level”: “Q4_0”

}

},

{

“name”: “llama3:latest”,

“modified_at”: “2023-12-07T09:32:18.757212583-08:00”,

“size”: 3825819519,

“digest”: “fe938a131f40e6f6d40083c9f0f430a515233eb2edaa6d72eb85c50d64f2300e”,

“details”: {

“format”: “gguf”,

“family”: “llama”,

“families”: null,

“parameter_size”: “7B”,

“quantization_level”: “Q4_0”

}

}

]

}

显示模型信息

POST /api/show

显示有关模型的信息,包括详细信息、模型文件、模板、参数、许可证、系统提示。

参数

  • model:要显示的模型名称
  • verbose:(可选)如果设置为true,则返回详细响应字段的完整数据

示例

要求

curl http://localhost:11434/api/show -d ‘{ “model”: “llama3.2”}’

回复

{

“modelfile”: “# Modelfile generated by \”ollama show\”\n# To build a new Modelfile based on this one, replace the FROM line with:\n# FROM llava:latest\n\nFROM /Users/matt/.ollama/models/blobs/sha256:200765e1283640ffbd013184bf496e261032fa75b99498a9613be4e94d63ad52\nTEMPLATE \”\”\”{{ .System }}\nUSER: {{ .Prompt }}\nASSISTANT: \”\”\”\nPARAMETER num_ctx 4096\nPARAMETER stop \”\u003c/s\u003e\”\nPARAMETER stop \”USER:\”\nPARAMETER stop \”ASSISTANT:\””,

“parameters”: “num_keep 24\nstop \”<|start_header_id|>\”\nstop \”<|end_header_id|>\”\nstop \”<|eot_id|>\””,

“template”: “{{ if .System }}<|start_header_id|>system<|end_header_id|>\n\n{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>\n\n{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>\n\n{{ .Response }}<|eot_id|>”,

“details”: {

“parent_model”: “”,

“format”: “gguf”,

“family”: “llama”,

“families”: [

“llama”

],

“parameter_size”: “8.0B”,

“quantization_level”: “Q4_0”

},

“model_info”: {

“general.architecture”: “llama”,

“general.file_type”: 2,

“general.parameter_count”: 8030261248,

“general.quantization_version”: 2,

“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”: 8192,

“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”: [], // populates if verbose=true“tokenizer.ggml.model”: “gpt2”,

“tokenizer.ggml.pre”: “llama-bpe”,

“tokenizer.ggml.token_type”: [], // populates if verbose=true“tokenizer.ggml.tokens”: [] // populates if verbose=true

}

}

复制模型

POST /api/copy

复制模型。从现有模型创建具有其他名称的模型。

示例

要求

curl http://localhost:11434/api/copy -d ‘{ “source”: “llama3.2”, “destination”: “llama3-backup”}’

回复

如果成功则返回 200 OK,如果源模型不存在则返回 404 Not Found。

删除模型

DELETE /api/delete

删除模型及其数据。

参数

  • model:要删除的模型名称

示例

要求

curl -X DELETE http://localhost:11434/api/delete -d ‘{ “model”: “llama3:13b”}’

回复

如果成功则返回 200 OK,如果要删除的模型不存在则返回 404 Not Found。

拉取模型

POST /api/pull

从 ollama 库下载模型。取消的拉取将从中断处恢复,并且多个调用将共享相同的下载进度。

参数

  • model:要拉取的模型的名称
  • insecure:(可选)允许不安全的库连接。仅当您在开发过程中从自己的库中提取时才使用此功能。
  • stream:(可选)如果false响应将作为单个响应对象而不是对象流返回

示例

要求

curl http://localhost:11434/api/pull -d ‘{ “model”: “llama3.2”}’

回复

如果stream未指定或设置为true,则返回 JSON 对象流:

第一个对象是清单:

{

“status”: “pulling manifest”

}

接下来是一系列的下载响应。在任何下载完成之前,密钥completed都不能被包含。要下载的文件数量取决于清单中指定的层数。

{

“status”: “downloading digestname”,

“digest”: “digestname”,

“total”: 2142590208,

“completed”: 241970

}

所有文件下载完成后,最终的响应为:

{

“status”: “verifying sha256 digest”

}

{

“status”: “writing manifest”

}

{

“status”: “removing any unused layers”

}

{

“status”: “success”

}

如果stream设置为 false,则响应就是单个 JSON 对象:

{

“status”: “success”

}

推送模型

POST /api/push

将模型上传到模型库。需要先注册ollama.ai并添加公钥。

参数

  • model:要推送的模型的名称,格式为<namespace>/<model>:<tag>
  • insecure:(可选)允许与库建立不安全的连接。仅当您在开发期间向库推送信息时才使用此选项。
  • stream:(可选)如果false响应将作为单个响应对象而不是对象流返回

示例

要求

curl http://localhost:11434/api/push -d ‘{ “model”: “mattw/pygmalion:latest”}’

回复

如果stream未指定或设置为true,则返回 JSON 对象流:

{ “status”: “retrieving manifest” }

进而:

{

“status”: “starting upload”,

“digest”: “sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab”,

“total”: 1928429856

}

然后是一系列的上传响应:

{

“status”: “starting upload”,

“digest”: “sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab”,

“total”: 1928429856

}

最后,当上传完成时:

{“status”:”pushing manifest”}

{“status”:”success”}

如果stream设置为false,则响应就是单个 JSON 对象:

{ “status”: “success” }

生成嵌入

POST /api/embed

从模型生成嵌入

参数

  • model:生成嵌入的模型名称
  • input:要生成嵌入的文本或文本列表

高级参数:

  • truncate:截断每个输入的末尾以适应上下文长度。如果false超出上下文长度,则返回错误。默认为true
  • options: Modelfile文档中列出的其他模型参数,例如temperature
  • keep_alive:控制模型在请求后保持加载到内存中的时间(默认值5m:)

示例

要求

curl http://localhost:11434/api/embed -d ‘{ “model”: “all-minilm”, “input”: “Why is the sky blue?”}’

回复

{

“model”: “all-minilm”,

“embeddings”: [[

0.010071029, -0.0017594862, 0.05007221, 0.04692972, 0.054916814,

0.008599704, 0.105441414, -0.025878139, 0.12958129, 0.031952348

]],

“total_duration”: 14143917,

“load_duration”: 1019500,

“prompt_eval_count”: 8

}

请求(可多输入)

curl http://localhost:11434/api/embed -d ‘{ “model”: “all-minilm”, “input”: [“Why is the sky blue?”, “Why is the grass green?”]}’

回复

{

“model”: “all-minilm”,

“embeddings”: [[

0.010071029, -0.0017594862, 0.05007221, 0.04692972, 0.054916814,

0.008599704, 0.105441414, -0.025878139, 0.12958129, 0.031952348

],[

-0.0098027075, 0.06042469, 0.025257962, -0.006364387, 0.07272725,

0.017194884, 0.09032035, -0.051705178, 0.09951512, 0.09072481

]]

}

列出正在运行的模型

GET /api/ps

列出当前加载到内存中的模型。

示例

要求

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

回复

将返回单个 JSON 对象。

{

“models”: [

{

“name”: “mistral:latest”,

“model”: “mistral:latest”,

“size”: 5137025024,

“digest”: “2ae6f6dd7a3dd734790bbbf58b8909a606e0e7e97e94b7604e0aa7ae4490e6d8”,

“details”: {

“parent_model”: “”,

“format”: “gguf”,

“family”: “llama”,

“families”: [

“llama”

],

“parameter_size”: “7.2B”,

“quantization_level”: “Q4_0”

},

“expires_at”: “2024-06-04T14:38:31.83753-07:00”,

“size_vram”: 5137025024

}

]

}

生成嵌入

注意:此端点已被取代/api/embed

POST /api/embeddings

从模型生成嵌入

参数

  • model:生成嵌入的模型名称
  • prompt:要生成嵌入的文本

高级参数:

  • options: Modelfile文档中列出的其他模型参数,例如temperature
  • keep_alive:控制模型在请求后保持加载到内存中的时间(默认值5m:)

示例

要求

curl http://localhost:11434/api/embeddings -d ‘{ “model”: “all-minilm”, “prompt”: “Here is an article about llamas…”}’

回复

{

“embedding”: [

0.5670403838157654, 0.009260174818336964, 0.23178744316101074, -0.2916173040866852, -0.8924556970596313,

0.8785552978515625, -0.34576427936553955, 0.5742510557174683, -0.04222835972905159, -0.137906014919281

]

}

版本

GET /api/version

检索 Ollama 版本

示例

要求

curl http://localhost:11434/api/version

回复

{

“version”: “0.5.1”

}

RA/SD 衍生者AI训练营。发布者:稻草人,转载请注明出处:https://www.shxcj.com/archives/9129

(0)
上一篇 5天前
下一篇 3天前

相关推荐

发表回复

登录后才能评论
本文授权以下站点有原版访问授权 https://www.shxcj.com https://www.2img.ai https://www.2video.cn