Ollama API 删除模型
2026-10-29 19:01 更新
DELETE /api/delete 删除本地模型,等价于 ollama rm。
版本基线 v0.40.12,官方
docs.ollama.com/api/delete。⚠️ 只能走本地服务。
一、调用
注意是 DELETE 方法,不是 POST:
curl -X DELETE http://localhost:11434/api/delete -d '{
"model": "gemma4"
}'
成功返回 HTTP 200,无响应体。
二、请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 要删除的模型名 |
就这一个字段。
三、Python 示例
import requests
def delete_model(name):
r = requests.delete("http://localhost:11434/api/delete", json={"model": name})
if r.status_code == 200:
print(f"已删除 {name}")
else:
print(f"失败 {r.status_code}: {r.text}")
delete_model("gemma4-backup")
四、删除的边界
| 情况 | 结果 |
|---|---|
删除一个被 cp 复制出来的名字 |
只删这个别名,其他别名仍可用 |
| 删除最后一个指向某内容的别名 | 底层权重文件被真正回收 |
| 模型正在加载/使用中 | 会先卸载再删除 |
| 删除不存在的模型 | 返回 404 |
第二行是关键:多个名字共享同一份权重时,删到最后一个才释放磁盘。这是它在实现上带引用计数的结果。
五、批量清理思路
import requests
API = "http://localhost:11434"
models = requests.get(f"{API}/api/tags").json()["models"]
## 策略:删除所有 30 天未修改的模型
from datetime import datetime, timedelta, timezone
cutoff = datetime.now(timezone.utc) - timedelta(days=30)
for m in models:
mt = datetime.fromisoformat(m["modified_at"])
if mt < cutoff:
print(f"删除 {m['name']}({m['modified_at']},{m['size']/1e9:.1f} GB)")
requests.delete(f"{API}/api/delete", json={"model": m["name"]})
⚠️ 跑这类脚本前先打印清单确认。删除是不可逆的,重新拉取要重新下载几十 GB。
六、更安全的做法
想批量清理时,先用交互命令确认:
## 列出并按大小排序,人工挑选
ollama list
或者用 API 只做「候选清单」不执行:
## 只打印不删除
for m in models:
if m["size"] > 10e9:
print(f"大模型候选: {m['name']} {m['size']/1e9:.1f} GB")
常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 405 Method Not Allowed | 用了 POST | 改 -X DELETE |
| 404 | 模型不存在 | ollama list 核对 |
| 删完磁盘没释放 | 还有其他别名指向同一内容 | 把别名都删掉 |
| 云端模型删不掉 | 云端模型不在本地 | 无需删除 |
动手试
## ① 先看有哪些
ollama list
## ② 删一个备份
curl -X DELETE http://localhost:11434/api/delete -d '{"model":"gemma4-backup"}'
## ③ 确认已消失
curl -s http://localhost:11434/api/tags | python -c "
import sys,json;print([m['name'] for m in json.load(sys.stdin)['models']])"以上内容是否对您有帮助:

TRAE-AI编程


更多建议: