目次

Ollama API 入門:curl で /api/chat と /api/generate を呼び出す

Ollama はバックグラウンドで HTTP API を提供し、デフォルトのアドレスは http://localhost:11434 です。CLI、Open WebUI、各種ライブラリは、この API を通じてモデルと通信します。

/api/chat:会話

curl http://localhost:11434/api/chat -d '{
  "model": "qwen3:8b",
  "messages": [
    { "role": "system", "content": "日本語で回答してください。" },
    { "role": "user", "content": "空が青いのはなぜですか?2文で説明してください。" }
  ],
  "stream": false
}'

応答の形式は次のとおりです。これは qwen3:0.6b に hi を送った実際の応答です(Ollama 0.40):

{
  "model": "qwen3:0.6b",
  "created_at": "2026-10-12T14:04:31.457272357Z",
  "message": {
    "role": "assistant",
    "content": "Hello! How can I assist you today? 😊 If you have any questions or need help, feel free to ask!",
    "thinking": "Okay, the user just said \"hi\" and I need to respond. ..."
  },
  "done": true,
  "done_reason": "stop",
  "total_duration": 10507470186,
  "load_duration": 26072287,
  "prompt_eval_count": 11,
  "prompt_eval_duration": 274566000,
  "eval_count": 112,
  "eval_duration": 10179865000
}
  • message.content:モデルの回答です。
  • message.thinking:推論モデルの思考過程です。Qwen3 はデフォルトで思考します。不要な場合はリクエストに "think": false を加えます。
  • done_reason:stop は正常終了、length は長さの上限に達して切り詰められたことを表します。
  • 時間フィールドの単位はすべてナノ秒です(10507470186 ≈ 10.5 秒)。eval_count ÷ eval_duration で、1 秒あたりに生成されたトークン数を計算できます。

複数ターンの会話

API 自体は以前の会話を記憶しません。会話を続けるには、履歴のメッセージをすべて含める必要があります。

{
  "model": "qwen3:8b",
  "messages": [
    { "role": "user", "content": "私の名前は小明です" },
    { "role": "assistant", "content": "こんにちは、小明さん!" },
    { "role": "user", "content": "私の名前は何ですか?" }
  ]
}

role には system、user、assistant、tool(ツールの結果。 ツール呼び出しを参照)を指定できます。

/api/generate:単発のテキスト生成

会話形式が必要ない場合は、/api/generate を使えます。

curl http://localhost:11434/api/generate -d '{
  "model": "qwen3:8b",
  "prompt": "次の文を英語に翻訳してください:今日はとてもいい天気です",
  "stream": false
}'

回答は response フィールドに含まれます。通常は /api/chat を優先して使うことをおすすめします。

ストリーミング応答

stream のデフォルトは true です。モデルが短いテキストを生成するたびに JSON が 1 行返され、最後の行では done が true になります。

curl http://localhost:11434/api/chat -d '{
  "model": "qwen3:8b",
  "messages": [{ "role": "user", "content": "1 から 5 まで数えてください" }]
}'
{"message":{"role":"assistant","content":"1"},"done":false}
{"message":{"role":"assistant","content":"、2"},"done":false}
...
{"message":{"role":"assistant","content":""},"done":true,"eval_count":12}

ストリーミングを使うとユーザーはすぐに回答を確認できるため、ほとんどのチャットインターフェースで使われています。

options:パラメーターの調整

{
  "model": "qwen3:8b",
  "messages": [{ "role": "user", "content": "キャッチコピーを 1 つ書いてください" }],
  "options": {
    "temperature": 0.9,
    "num_ctx": 8192,
    "num_predict": 100,
    "seed": 42
  },
  "stream": false
}

使用できるパラメーターは Modelfile の PARAMETER と同じです。Modelfile のチュートリアルを参照してください。

keep_alive:モデルの常駐を制御する

{ "model": "qwen3:8b", "keep_alive": "1h" }
  • model のみを送信し、メッセージを送らない場合は、モデルを事前に読み込めます。
  • "keep_alive": 0 にすると、回答後すぐにアンロードされます。
  • "keep_alive": -1 にすると、アンロードされません。

画像入力

視覚モデルには、メッセージに base64 エンコードした画像を追加できます。

IMG=$(base64 -w0 photo.jpg)   # macOS では base64 -i photo.jpg を使用
curl http://localhost:11434/api/chat -d "{
  \"model\": \"gemma3\",
  \"messages\": [{
    \"role\": \"user\",
    \"content\": \"この画像を説明してください\",
    \"images\": [\"$IMG\"]
  }],
  \"stream\": false
}"

思考モード

思考に対応したモデルでは、think で制御できます。

{
  "model": "qwen3:8b",
  "messages": [{ "role": "user", "content": "strawberry には r がいくつありますか?" }],
  "think": true,
  "stream": false
}

思考内容は message.thinking、最終回答は message.content に含まれます。think に false を指定することもできます。一部のモデルでは "low"、"medium"、"high" などのレベルもサポートされています。

その他のよく使うエンドポイント

メソッドとパス用途
GET /api/tagsダウンロード済みモデルの一覧(ollama list と同じ)
GET /api/ps読み込み済みモデルの一覧
POST /api/showモデル情報
POST /api/pullモデルのダウンロード
DELETE /api/deleteモデルの削除
POST /api/embedテキスト埋め込みの生成。テキスト埋め込みと RAGを参照してください。
GET /api/versionOllama のバージョン
curl http://localhost:11434/api/tags
curl http://localhost:11434/api/show -d '{"model": "qwen3:8b"}'

OpenAI 互換 API

Ollama は /v1 に OpenAI API 互換のエンドポイントも提供します。

エンドポイント説明
/v1/chat/completions会話
/v1/completionsテキスト補完
/v1/embeddings埋め込み
/v1/modelsモデル一覧
/v1/responsesResponses API
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3:8b",
    "messages": [{ "role": "user", "content": "こんにちは" }]
  }'

OpenAI 向けに書かれた多くのプログラムやツールは、base URL を http://localhost:11434/v1 に変更し、API key に任意の値を設定するだけで、ローカルモデルを使えます。Python の例は次のセクションを参照してください。

更新日 2026年10月12日