OllamaのModelfileを使えば、既存のLLMモデルに自分だけのシステムプロンプトやパラメータ設定を組み込んだカスタムモデルを数秒で作れます。
たとえば「Linuxコマンドに特化した日本語アシスタント」や「創造的な文章を書くライター」など、用途に合わせたAIを手元で動かせるのがModelfileの強みです。
本記事では実際に ollama 0.30.8 環境でModelfileを書き、qwen2.5:0.5b ベースのカスタムモデルを作成・実行した結果を載せています。
この記事のポイント
- Modelfileは
FROM・SYSTEM・PARAMETERの3行から始められる ollama create カスタム名 -f Modelfileでモデルがすぐ作れる(ベースモデルのレイヤーを再利用するため数秒で完了)- SYSTEMプロンプトでAIの「役割」を定義し、PARAMETERで生成の「クセ」を調整できる
ollama show --modelfile モデル名でModelfileの現在の状態をいつでも確認できる- 実際に作成したカスタムモデルがLinuxの質問に日本語で正しく答えることを確認済み
目次
- Modelfileとは何か
- 前提環境の確認
- Modelfileの基本構文
- 最初のModelfileを書く
- ollama createでカスタムモデルを作る
- SYSTEMプロンプトで人格を設定する
- PARAMETERで生成パラメータを調整する
- 作成したモデルを確認・管理する
- よくあるエラーと解決策
- まとめ
Modelfileとは何か
ModelfileはOllamaが読み込む設定ファイルで、「どのモデルを土台にして、どういう振る舞いをさせるか」を定義します。DockerのDockerfileに似た構造で、数行書くだけでカスタムモデルが作れます。

Modelfileでできることは主に3つです:
FROM:ベースになるモデルを指定する(既にダウンロード済みのモデルならどれでも使える)SYSTEM:AIの役割・性格・制約をシステムプロンプトとして埋め込むPARAMETER:temperatureやnum_ctxなど生成の挙動を細かく制御する
「毎回 ollama run に長いシステムプロンプトを渡している」という場合は、Modelfileに組み込んでしまうと管理が楽になります。
前提環境の確認
Modelfileを使うにはOllamaがインストール済みであることが前提です。バージョンを確認しましょう。
ollama version is 0.30.8
$ ollama list
NAME ID SIZE MODIFIED
qwen2.5:0.5b a8b0c5157701 397 MB 11 hours ago
llama3.2:1b baf6a787fdff 1.3 GB 11 hours ago
gemma3:1b 8648f39daa8f 815 MB 35 hours ago
本記事は ollama 0.30.8(2026年6月15日実測)で動作確認しています。ダウンロード済みのモデルが1つ以上あれば、すぐにModelfileを試せます。
Ollamaがインストールされていない場合
Ollamaのインストール手順は OllamaをUbuntuにインストールする方法 を参照してください。最小モデルなら ollama pull qwen2.5:0.5b(397MB)で手軽に試せます。
Modelfileの基本構文
Modelfileは大文字のキーワードで始まる命令を並べたテキストファイルです。最小構成は FROM 1行だけです。
FROM qwen2.5:0.5b
# AIの役割を定義(省略可)
SYSTEM “””あなたはLinuxのエキスパートです。”””
# 生成パラメータ(省略可)
PARAMETER temperature 0.7
PARAMETER num_ctx 2048
主なキーワードをまとめると:
| キーワード | 役割 | 必須 |
|---|---|---|
FROM |
ベースモデルを指定(ローカルモデル名またはSHA256ハッシュ) | 必須 |
SYSTEM |
システムプロンプト(AIの役割・性格・制約) | 任意 |
PARAMETER |
生成パラメータ(temperature・top_k・num_ctx など) | 任意 |
TEMPLATE |
チャットテンプレート(モデルのプロンプト形式を上書き) | 任意 |
ADAPTER |
LoRAアダプターのパスを指定 | 任意 |
LICENSE |
モデルのライセンス情報 | 任意 |
最初のModelfileを書く
では実際に書いてみましょう。nano や vim など好きなエディタでファイルを作成します。ファイル名は Modelfile が慣例ですが、どんな名前でも構いません。
$ nano Modelfile
以下の内容を書き込みます。ここでは「Linuxに詳しい日本語アシスタント」を例にしています。
SYSTEM “””あなたはLinuxのエキスパートアシスタントです。
初心者でも分かりやすい言葉でUbuntuやLinuxコマンドについて説明します。
回答は簡潔にまとめ、必要に応じてコマンド例も示します。”””
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 2048
FROM qwen2.5:0.5b はローカルにダウンロード済みのモデル名をそのまま使います。ollama list で表示されるモデル名なら何でも指定できます。
ollama createでカスタムモデルを作る
Modelfileを書いたら、ollama create コマンドでカスタムモデルをビルドします。
gathering model components
using existing layer sha256:c5396e06af294bd101b30dce59131a76d2b773e76950acc870eda801d3ab0515
using existing layer sha256:eb4402837c7829a690fa845de4d7f3fd842c2adee476d5341da8a46ea9255175
using existing layer sha256:832dd9e00a68dd83b3c3fb9f5588dad7dcf337a0db50f7d9483f310cd292e92e
creating new layer sha256:9bdd96b45cac27bb2121284ab1b4f5d77fcb1b1bb7e2750fcd02e6ecc8a10492
creating new layer sha256:f6d8d7bb5299810c6e8d76e1f9223559ff832f61d1c167cf8ee4be127c314cde
writing manifest
success
実際の出力を見ると、ベースモデル側の3レイヤーは「using existing layer」、SYSTEMプロンプトとPARAMETER設定の分だけが「creating new layer」として新規作成されているのが分かります。重いモデル本体は再利用されるので追加ダウンロードはなく、ビルドは数秒で完了します。

作成されたことを確認します:
NAME ID SIZE MODIFIED
linux-expert:latest 09539a589e19 397 MB Less than a second ago
qwen2.5:0.5b a8b0c5157701 397 MB 11 hours ago
llama3.2:1b baf6a787fdff 1.3 GB 11 hours ago
linux-expert:latest がリストに追加されました。サイズは 397 MB でベースモデルと同じです。SYSTEMプロンプトなどの設定はメタデータとして保存されるため、ほぼ容量を増やさずにカスタマイズできます。
SYSTEMプロンプトで人格を設定する
作成したカスタムモデルを実際に動かしてみましょう。SYSTEMプロンプトで定義した役割通りに動くか確認します。
`ls -la` は `ls` クラスで、ファイルやディレクトリの情報表示をする命令です。
– `-l`: ファイルまたはディレクトリの情報が表示されます。
– `-a`: ファイルとディレクトリを同時に表示します。
SYSTEMプロンプトで指定したとおり、日本語で簡潔に答えが返ってきました。今回のベースは qwen2.5:0.5b という494Mパラメータの小型モデルなので説明の精度は完璧ではありませんが、「Linuxを日本語で説明する」という役割はきちんと守られているのが分かります。より正確な回答が欲しい場合は、後述のとおり temperature を下げたり、7B以上のモデルをベースにします。
SYSTEMプロンプトの書き方のコツ
SYSTEMプロンプトは """(トリプルクオート) で囲むことで複数行書けます。実際に効果があったパターンをいくつか示します。
SYSTEM “””あなたはLinuxサーバーの管理者です。
セキュリティを重視した回答をします。
コマンドは必ず sudo の必要性と副作用を説明します。”””
# パターン2: 言語制約型
SYSTEM “””You are a helpful assistant. Always respond in Japanese.
Keep responses concise and include code examples when relevant.”””
# パターン3: 出力形式型
SYSTEM “””あなたはコードレビュアーです。
問題点を箇条書きで指摘し、改善例を必ずコードで示してください。”””
PARAMETERで生成パラメータを調整する
PARAMETERではAIの生成挙動を数値で制御します。最もよく使うのは temperature です。

特に重要なパラメータを絞って説明します:
temperature(創造性と一貫性のバランス)
temperature は生成の「ランダム性」を制御します。低い値(0.1〜0.4)ほど一貫した回答に、高い値(0.8〜1.5)ほど多様で創造的な回答になります。
PARAMETER temperature 0.3
# 汎用チャット: 中程度
PARAMETER temperature 0.7
# 創作・物語生成: 高い temperature(多様性重視)
PARAMETER temperature 1.2
num_ctx(コンテキストウィンドウ)
num_ctx は一度に処理できるトークン数(入力+出力の合計)です。デフォルトの2048で多くの会話は十分ですが、長文の翻訳や大きなコードファイルを扱う場合は4096〜8192に増やします。ただし大きくするほどRAMを消費します。
FROM llama3.2:1b
SYSTEM “””あなたはPythonのコードレビュアーです。
コードの問題点を指摘し、改善案をコードで示してください。”””
PARAMETER temperature 0.3
PARAMETER num_ctx 4096
PARAMETER repeat_penalty 1.1
$ ollama create code-reviewer -f Modelfile.codetask
success
作成したモデルを確認・管理する
作成したカスタムモデルの設定を後から確認・変更する方法を説明します。
Modelfileの内容を確認する
ollama show --modelfile を使うと、カスタムモデルのModelfileを丸ごと出力できます。設定の確認や、別モデルのテンプレートにするときに便利です。
# Modelfile generated by “ollama show”
# To build a new Modelfile based on this, replace FROM with:
# FROM linux-expert:latest
FROM /path/to/.ollama/models/blobs/sha256-c5396e06af294bd…
TEMPLATE “””{{- if .Messages }}…
SYSTEM あなたはLinuxのエキスパートアシスタントです。
初心者でも分かりやすい言葉でLinuxコマンドについて説明します。
PARAMETER num_ctx 2048
PARAMETER temperature 0.7
PARAMETER top_k 40
PARAMETER top_p 0.9

モデルのスペックを確認する
ollama show --verbose でモデルの詳細スペックを確認できます。実際に作成した linux-expert:latest の情報です:
Model
architecture qwen2
parameters 494.03M
context length 32768
embedding length 896
quantization Q4_K_M
Capabilities
completion
tools
Parameters
num_ctx 2048
temperature 0.7
top_k 40
top_p 0.9

モデルのコンテキスト長は元のモデル(32768トークン)ですが、Modelfileで PARAMETER num_ctx 2048 と指定することで使用する長さを制限しています。メモリが少ない環境では小さい値に設定するとよいでしょう。
カスタムモデルを更新・削除する
Modelfileを編集して同じ名前で ollama create を実行すれば、上書き更新されます。削除は ollama rm です。
$ ollama create linux-expert -f Modelfile
success
# 不要になったカスタムモデルの削除
$ ollama rm linux-expert
deleted ‘linux-expert’
注意
ollama rm で削除できるのはカスタムモデルの設定だけです。ベースモデル(qwen2.5:0.5b など)は ollama list に残ります。ベースモデルも削除したい場合は ollama rm qwen2.5:0.5b のようにベースモデル名も指定してください。
よくあるエラーと解決策
Error: model not found
FROM に指定したモデルがローカルにない場合に出るエラーです。
Error: model “llama3.3:latest” not found, try pulling it first
# 解決策: 先にベースモデルをダウンロードする
$ ollama pull llama3.2:1b
$ ollama create my-model -f Modelfile
SYSTEMプロンプトが反映されない
モデルによってはSYSTEMプロンプトを無視する場合があります。小型モデル(0.5B〜1B)では顕著です。解決策は2つ:
temperatureを低めに設定する(0.3〜0.5)と、プロンプトに従いやすくなる- より大きいモデル(7B以上)をベースにする
メモリ不足でモデルが起動しない
num_ctx を小さくすることでRAM使用量を減らせます。
PARAMETER num_ctx 512
PARAMETER num_predict 256
まとめ
OllamaのModelfileを使うと、ローカルLLMを自分だけのAIアシスタントにカスタマイズできます。
FROMでベースモデルを指定し、ollama createでカスタムモデルをビルドするSYSTEMプロンプトでAIの役割・性格・言語を固定できる(毎回指示する手間が省ける)PARAMETER temperatureで一貫性と創造性のバランスを調整する- ビルドはベースモデルのレイヤーを再利用するため数秒で完了し、追加ストレージもほぼ不要
ollama show --modelfileでいつでも現在の設定を確認できる
Modelfileで作ったカスタムモデルは、Open WebUIなどのGUIフロントエンドでも選択して使えます。「チャット形式で使いたい」という方は ローカルLLMをGUIで使う方法(Open WebUI) も参考にしてください。
本格的にカスタムモデルを常時動かすなら、自宅サーバーやVPSにOllamaを常駐させるのがおすすめです。


コメント