Ollama API 推送模型

2026-10-29 19:01 更新

POST /api/push 把本地模型发布到 ollama.com,等价于 ollama push。

版本基线 v0.40.12,官方 docs.ollama.com/api/push。

一、调用

curl http://localhost:11434/api/push -d '{
  "model": "my-username/my-model"
}'

二、请求字段

字段 类型 必填 说明
model string 是 要发布的模型名,必须带用户名
insecure boolean 允许通过非安全连接发布
stream boolean 默认 true,流式返回进度

三、前置条件(缺一不可)

1. 模型名必须是 用户名/模型名

## 本地模型叫 mymodel,先改名
ollama cp mymodel myuser/mymodel
ollama push myuser/mymodel

用户名就是你在 ollama.com 注册时的那个——它会成为模型标识的一部分。

2. 公钥要添加到账号

到 ollama.com/settings/keys 点 Add Ollama Public Key,把本机公钥内容粘进去。

公钥位置:

系统 路径
macOS ~/.ollama/id_ed25519.pub
Linux /usr/share/ollama/.ollama/id_ed25519.pub
Windows C:\Users\<用户名>\.ollama\id_ed25519.pub

3. 已登录

ollama signin

四、流式响应

默认返回进度流:

{"status":"retrieving manifest"}
{"status":"pushing manifest"}
{"status":"pushing c6eb396dbd59","digest":"sha256:c6eb...","total":9608350245,"completed":1073741824}
{"status":"success"}

字段含义同 /api/pull:total 是当前层大小,completed 是已传字节。

五、Python 示例

import json, requests

def push(model):
    with requests.post("http://localhost:11434/api/push",
                       json={"model": model}, stream=True) as r:
        for line in r.iter_lines():
            if not line:
                continue
            c = json.loads(line)
            if "error" in c:
                raise RuntimeError(c["error"])
            if c.get("total"):
                pct = c["completed"] / c["total"] * 100
                print(f"\r{c['status']:<28} {pct:5.1f}%", end="")
            else:
                print(f"\r{c['status']:<28}", end="")
            if c.get("status") == "success":
                print("\n推送完成")
                break

push("myuser/mymodel")

六、推送之后

其他人可以这样用:

ollama run myuser/mymodel

模型会出现在你的 ollama.com 主页,可以设为公开或私有。

常见问题

现象 原因 处理
401 未登录或公钥未添加 ollama signin + 上传公钥
400 模型名没带用户名 ollama cp 改名后重试
404 本地没有该模型 ollama list 核对
推送中断 网络不稳 重新执行,已传的层会跳过
想更新已推的模型 直接重推即可 同名覆盖

七、和导入配合的完整流程

发布一个自定义模型通常走这条链:

## ① 导入本地权重
ollama create mymodel -f ./Modelfile

## ② 改名(带用户名)
ollama cp mymodel myuser/mymodel

## ③ 推送
ollama push myuser/mymodel

导入的细节见 8.1 Ollama 导入自定义模型。

动手试

## ① 检查公钥是否存在
ls -l ~/.ollama/id_ed25519.pub 2>/dev/null || echo "公钥不存在,需先登录"

## ② 检查登录状态
ollama signin

## ③ 推送(换成你的用户名)
ollama push myuser/mymodel
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号