Ollama API 创建模型
2026-10-29 19:01 更新
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,就说明参数真的生效了。
以上内容是否对您有帮助:

TRAE-AI编程


更多建议: