codecamp

Ollama API 创建模型

POST /api/create 通过 API 创建模型,等价于 ollama create。可以基于现有模型定制,也可以从本地权重文件导入。

版本基线 v0.40.12,官方 docs.ollama.com/api/create。⚠️ 只能走本地服务,云端不提供此接口。

一、最小调用

curl http://localhost:11434/api/create -d '{
  "from": "gemma4",
  "model": "alpaca",
  "system": "You are Alpaca, a helpful AI assistant. You only answer with Emojis."
}'

返回:

{ "status": "success" }

二、请求字段

字段 类型 必填 说明
model string 是 要创建的模型名
from string 基于哪个现有模型创建
template string 提示词模板
renderer string 渲染器名称
parser string 解析器名称
files object 源文件名 → SHA-256 摘要的映射
draft_files object 草稿源文件映射
license string | string[] 许可证
system string 系统提示词
parameters object 键值对参数
messages object[] 消息历史
quantize string 导入时的量化等级(如 nvfp4)
draft_quantize string 草稿权重量化等级
requires string 该模型要求的最低 Ollama 版本
capabilities string[] 追加能力(不覆盖继承的)
stream boolean 默认 true,流式返回状态

files 的用法

导入本地权重时必须用这个字段——注意值是 SHA-256 摘要,不是路径:

{
  "model": "my-model",
  "files": {
    "model-Q4_K_M.gguf": "a1b2c3..."
  }
}

⚠️ 分片 GGUF 必须用原始分片文件名逐个列出(model-00001-of-00004.gguf 等),不能合并。

三、三种典型用法

基于现有模型加系统提示

curl http://localhost:11434/api/create -d '{
  "from": "qwen3",
  "model": "qwen3-zh",
  "system": "你是一名严谨的中文技术编辑,回答简洁准确,不使用营销语气。"
}'

固定参数(比如上下文长度)

curl http://localhost:11434/api/create -d '{
  "from": "gemma4",
  "model": "gemma4-32k",
  "parameters": { "num_ctx": 32768, "temperature": 0.3 }
}'

这个用法很实用:OpenAI 兼容层没有设置上下文的字段,通过创建一个带 num_ctx 的新模型名绕过限制。

追加能力标记

{
  "from": "nimble",
  "model": "nimble-decision",
  "capabilities": ["decision"]
}

capabilities 是追加语义——不会移除继承或推断出的能力。

四、流式状态

默认 stream: true,会返回进度更新(适合导入大文件时看进展):

{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"writing manifest successfully"}

不管流式与否,最终都会以 {"status": "success"} 结束。想一次性拿结果就设 "stream": false。

五、和 Modelfile 的关系

API 的字段大致对应 Modelfile 的指令:

Modelfile API 字段
FROM x from
SYSTEM "..." system
PARAMETER k v parameters
TEMPLATE "..." template
LICENSE "..." license

改复杂模型还是用 Modelfile 更清楚:

FROM ./model-Q4_K_M.gguf
PARAMETER temperature 0.3
PARAMETER num_ctx 8192
SYSTEM """你是一名严谨的技术文档翻译。"""

ollama create my-model -f ./Modelfile

API 更适合程序化、单参数调整的场景。

常见问题

现象 原因 处理
404 from 指定的模型不存在 ollama list 核对
创建成功但用不了 系统提示与模型格式冲突 检查 template_source
分片模型报错 files 里没用原始分片名 逐个列原始文件名
云端调用 404 云端不支持 create 只能用本地服务
上下文没生效 用了旧模型名调用 确认调用的是新建的 model 名

动手试

## ① 基于现有模型建一个固定参数的版本
curl -s http://localhost:11434/api/create -d '{
  "from": "gemma4",
  "model": "gemma4-16k",
  "parameters": { "num_ctx": 16384 }
}' 

## ② 确认创建成功
curl -s http://localhost:11434/api/tags | python -c "
import sys,json;print([m['name'] for m in json.load(sys.stdin)['models']])"

## ③ 用它发一次请求,看 ps 里的 context_length
curl -s http://localhost:11434/api/generate -d '{"model":"gemma4-16k","prompt":"hi","stream":false}' > /dev/null
curl -s http://localhost:11434/api/ps | python -c "
import sys,json;print([(m['name'],m['context_length']) for m in json.load(sys.stdin)['models']])"

第 3 步能看到 context_length 变成 16384,就说明参数真的生效了。

Ollama API 查看模型详情
Ollama API 复制模型
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Ollama Cloud

Ollama CLI 命令行参考

Ollama Modelfile 参考

Ollama 上下文长度

Ollama 导入自定义模型

Ollama 常见问题

Ollama 硬件支持

Ollama 故障排查

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }