Ollama常用API
在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
- Ollama安装及命令
- 没有了