注册 登录

清河洛

Ollama常用API

qingheluo2025-02-26清河洛110
在ollama的API请求中,指定的模型名称遵循example/model:tag格式,其中example表示一个可选的命名空间,tag表示用于标识特定版本的标签,如果没有提供默认为latest返回信息中如果有持续时间字段,该字段的单位均为纳秒所有请求默认以JSON对象的形式流式传输响应,可通过提供{"stream": false}来禁用流式传输其中DELETE和POST请求中,Content-Type请求头要设置为application/json,所有数据均以json格式传输GET请求/api/version 查看ollama版本/api/ps 查看已加载到内存中的模...

在ollama的API请求中,指定的模型名称遵循example/model:tag格式,其中example表示一个可选的命名空间,tag表示用于标识特定版本的标签,如果没有提供默认为latest

返回信息中如果有持续时间字段,该字段的单位均为纳秒

所有请求默认以JSON对象的形式流式传输响应,可通过提供{"stream": false}来禁用流式传输

其中DELETE和POST请求中,Content-Type请求头要设置为application/json,所有数据均以json格式传输

GET请求

/api/version 查看ollama版本

/api/ps 查看已加载到内存中的模型

/api/tags 列出本地可用的模型

HEAD请求

/api/blobs/:digest 创建本地模型时使用的二进制大文件是否在本地仍存在

digest :blob 的 SHA256 摘要

blob存在返回200 OK,不存在返回404 Not Found

DELETE请求

/api/delete 删除模型及其数据

model  指定要删除的模型

成功返回200 OK,模型不存在返回404 Not Found

POST请求

显示模型信息

/api/show 显示模型信息

model   指定模型
verbose 是否填充详细响应字段
    model_info["tokenizer.ggml.merges"]
    model_info["tokenizer.ggml.token_type"]
    model_info["tokenizer.ggml.tokens"]

创建模型

/api/copy 复制一个模型

从现有模型创建一个其他名称的模型
source     指定源模型
destination指定目标模型

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

/api/create 在本地创建模型

model       必须参数,要创建的模型名称
from        指定本地模型
files       dict,指定模型文件(GGUF格式)
    GGUF格式文件名为键,SHA256为值
    "files": {
        "./test.gguf": "sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"
      }
adapters    dict,指定LoRA适配器及blob的SHA256
template    模型的对话模板
license     模型许可证的字符串或字符串列表
system      模型的SYSTEM角色定义
parameters  用于模型的参数字典
messages    用于创建对话的MESSAGE列表
stream      如果false,则响应将以单个响应对象返回,而不是对象流
quantize    模型量化级别

模型推送及拉取

/api/pull 从ollama库中拉取一个模型

/api/push 将模型推送到模型库,需要先注册ollama.ai并添加公钥

model    模型的名称
insecure 允许不安全的库连接,仅在开发期间从自己的库中提取时使用
stream   如果 false ,则响应将以单个响应对象返回,而不是对象流

已取消的拉取将从上次停止的地方继续,多个调用将共享相同的下载进度

/api/blobs/:digest 推送一个二进制大文件到Ollama服务器

digest :blob 的 SHA256 摘要

大文件传输建议配合Content-Length头预声明尺寸,避免超时中断

对话聊天

/api/generate 单次对话

/api/chat 连续对话

generate  用于一次性文本生成,每次请求都是独立的,不会自动保留上下文
    适用于无状态的文本生成任务,例如摘要、翻译、代码生成、搜索引擎问答等

chat      用于多轮对话,可以管理对话的上下文。
    适用于有状态的聊天场景,能够保持上下文,提供更连贯的回答

两者很多参数都是公用的,常见的公用参数有

model      str,必需参数,要使用的模型名称
format     str,返回响应的格式,可以是 json 或 JSON 模式
    默认响应即为json格式
    显示设置{"format":"json"}将开启数据格式强制校验,确保响应体符合标准JSON语法
    JSON模式,强制指定字段名、数据类型,枚举值等
    "format": {
        "type": "object",
        "required": ["city", "temperature", "weather"],
        "properties": {
          "city": {"type": "string"},
          "temperature": {"type": "number"},
          "weather": {"type": "string", "enum": ["晴", "雨", "多云"]}
        }
      }
      properties指定每个字段的数据类型,可用的枚举值
      required  指定生成json中至少要包含的字段
        可能会有required中没有但properties中存在的字段
      常用的数据类型:boolean、string、number、integer、float
options    dict,Modelfile中的模型参数
stream     bool,如果 false ,则响应将作为单个响应对象返回,而不是对象流
keep_alive str,覆盖环境变量OLLAMA_KEEP_ALIVE,模型在请求后在内存中保持加载的时间

/api/generate专有的参数

prompt     str,生成响应的提示
    如果不提供prompt,模型将被加载到内存中
    如果不提供prompt,且keep_alive为0,将从内存中卸载一个模型
suffix     str,在模型生成的文本末尾追加固定内容
    不会影响模型生成逻辑
    附加内容不计入模型生成Token统计
    某些模型不支持该参数,实测deepseek-r1不支持
images     []str,一组base64编码的图片
    在一些支持图片识别的模型中使用
    {
        "model": "llava",
        "prompt":"请简单描述一下这两张图片的内容并将这两张图片融合成一张",
        "images": ["第1张图片的base64码","第2张图片的base64码"]
    }
system     str,Modelfile中的SYSTEM
template   str,Modelfile中的TEMPLATE
raw        bool,是否开启原始模式,开启后将跳过TEMPLATE对话模板的格式化
    当prompt中包含了自定义对话模版时可以开启
context    []int,用来保持对话记忆以保持后续请求的连贯性,从上一个请求返回的content参数获取
    当前该参数已废弃使用,但请求返回中仍然包含content参数

/api/chat专有的参数

messages    []dict,整个聊天记录,包含对话历史及当前提问
    每个聊天记录dict包含的字段
    role        角色,可用的有system、user、assistant、tool
    content     聊天内容
    images      []str,一组base64编码的图片
    tool_calls  str,json格式的想要使用的工具列表
    如果messages为空数组,模型将被加载到内存中
    如果messages为空数组,且keep_alive为0,将从内存中卸载一个模型
tools       模型支持的 JSON 工具列表

响应中的常见参数

当流式响应未完成时,返回字段
    model           使用的模型名称
    created_at      对话创建的时间
    response        响应内容,/api/generate返回
    messages        响应内容,/api/chat返回
    done            流式响应是否完成
当流式响应完成时,会追加以下字段
    total_duration  生成完整响应总耗时,包含下列时间
    load_duration   模型加载时间
    prompt_eval_count    提示中的令牌数量
    prompt_eval_duration 输入文本预处理(分词、向量化)花费的时间
    eval_count      响应中的令牌数量
    eval_duration   模型推理生成花费的时间
    context         对话编码,可以在下一个请求中发送以保持对话记忆

/api/generate:当流式响应完成时response为空

/api/chat:当流式响应完成时不包含messages字段

生成嵌入向量

/api/embed 从模型生成嵌入向量

嵌入向量是将非结构化数据(如文本)映射为低维连续数值向量的数学表示

在向量空间中,语义相近的内容距离更近,通过余弦相似度或欧氏距离可量化相关性

将文本转换为嵌入向量,使得计算机可以更高效地进行文本相似度计算、分类、搜索等任务

该API本质是单向语义映射工具,仅执行"输入文本→输出向量"的数学转换,并不会对模型本身产生任何影响

model       str,必需参数,要使用的模型名称
input       str或[]str,生成嵌入向量的文本或文本列表
truncate    bool,当上下文长度超过最大值时是否截取末尾
options     dict,Modelfile中的模型参数
keep_alive  str,模型在请求后在内存中保持加载的时间

返回的json中的embeddings字段表示生成的嵌入向量,该字段为[][]float



网址导航