~/tools / ローカルLLMをサーバーで動かす / Ollama API Request Builder

Ollama API Request Builder — /api/chat への curl リクエストを作る

フォームに入力して、Ollama の /api/chat エンドポイントへのリクエストを作ります。モデル、システムメッセージとユーザーメッセージ、format と JSON Schema による構造化出力、ツール定義、思考(thinking)、ストリーミング、temperature や num_ctx などのオプション、ストップシーケンス、keep_alive を指定できます。そのまま実行できる curl コマンドと JSON ボディが得られます。すべてのフィールドは公式の Ollama API リファレンスに載っているものです。入力した内容はブラウザの外に出ません。

オプション、ストップシーケンス、keep_alive

空の欄は送信されないため、モデルの設定がそのまま使われます。

curl コマンド

Ollama に接続できるマシンのターミナルで実行します。

curl http://localhost:11434/api/chat -d '{
  "model": "qwen3:4b",
  "messages": [
    {
      "role": "user",
      "content": "Tell me about Canada."
    }
  ],
  "format": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string"
      },
      "capital": {
        "type": "string"
      },
      "languages": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "required": [
      "name",
      "capital",
      "languages"
    ]
  },
  "options": {
    "temperature": 0
  },
  "stream": false
}'

JSON ボディ

{
  "model": "qwen3:4b",
  "messages": [
    {
      "role": "user",
      "content": "Tell me about Canada."
    }
  ],
  "format": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string"
      },
      "capital": {
        "type": "string"
      },
      "languages": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "required": [
      "name",
      "capital",
      "languages"
    ]
  },
  "options": {
    "temperature": 0
  },
  "stream": false
}

フィールドは、2026-11-03 時点の /api/chat の Ollama API リファレンスに記載されているとおりです。 Ollama API: チャットメッセージを生成する

すべてブラウザの中で処理します。ツールはコマンドを書くだけで、何も送信しません。

Ollama の /api/chat エンドポイントは、モデルと messages のリストを含む JSON ボディを受け取り、さらにいくつかの任意のフィールドを指定できます。関数呼び出し用の tools、JSON の答え、または JSON Schema に従う答えを求める format、temperature や num_ctx などの設定を渡す options、そして stream、think、keep_alive です。このボディをターミナルで手書きすると間違えやすくなります。カンマが1つ抜けると壊れ、メッセージ中のアポストロフィでシェルの引用符が閉じてしまい、文字として入力した数値が数値として読まれないこともあります。このツールは、フォームからボディを組み立て、Ollama のドキュメントにある例の形の curl コマンドに入れます。アポストロフィはシェル向けにエスケープします。JSON Schema とツールのリストが正しい JSON であること、各ツールが API リファレンスの求める type、name、parameters を備えていること、options が正しい種類の数値であることを確認します。生成したコマンドは、qwen2.5:7b を使って Ollama 0.40.11 に対して実行しました。JSON Schema を指定したリクエストではその形の答えが返り、ツールを指定したリクエストではツール呼び出しが返り、ストリーミング、json モード、ストップシーケンス、keep_alive もエラーなく動きました。

このツールの計算部分は、オープンソース(MIT ライセンス)で公開しています。 github.com/seigo5555/toolkitbox-lib/src/ollama-api-request.ts

こんな時に使う

  • コードを書く前に、自分のサーバーで構造化出力を試す: JSON Schema を貼り付けて、モデルが何を返すかを見る
  • アプリケーションで使う予定のツール定義で、モデルが自分の関数を呼び出すかを確認する
  • パスワード付きの nginx プロキシの背後にある Ollama を、正しい URL と curl -u で呼び出す

使い方

  1. Ollama サーバーのアドレス(空にすると http://localhost:11434)とモデル名を入力し、ユーザーメッセージを書きます。必要ならシステムメッセージも書いてください。
  2. 出力形式を選び、ツール定義を JSON 配列として追加し、思考とストリーミングを設定します。オプションを開くと、temperature、num_ctx、シード、ストップシーケンス、keep_alive を設定できます。空の欄は出力されません。
  3. curl コマンドをコピーして、Ollama に接続できるマシンのターミナルで実行します。自分のコードから送りたい場合のために、JSON ボディは別に表示されます。

FAQ

stream は何をしますか?

API リファレンスでは、stream の既定値は true です。ストリーミングされた答えは、改行区切りの JSON として、1つずつ届きます。stream を false にすると、ドキュメントによれば答えは1つの JSON オブジェクトとして返ります。ストリーミングのページはこれを、処理しやすく、短いレスポンスや構造化出力に向いていると説明しています。ツールは、ストリーミングをオフにしたときだけ "stream": false を書き出します。

think にはどんな値を指定できますか?

API リファレンスによると、true は思考を求め、false は思考の出力を求めず、文字列はモデルが定義するレベルを選びます。数値には対応していません。ドキュメントには、モデルが対応する値は /api/show で調べるよう書かれており、think を設定するとツールがそのコマンドを表示します。私たちのテストでは、qwen2.5:7b では think を false にすると動き、true にすると "qwen2.5:7b" does not support thinking で拒否されました。

format の json と JSON Schema は何が違いますか?

API リファレンスによると、format には json か JSON schema を指定できます。json は、有効な JSON であれば何でもよいという指定です。スキーマは、プロパティ名や必須のものなど、正確な形を記述します。私たちのテストでは、答えはそのとおりの形になりました。ツールは、スキーマを文字列ではなくオブジェクトとして送ります。

ツール定義はどう書けばよいですか?

API リファレンスでは、常に function である type と、name と parameters を持つ function オブジェクトが必須です。parameters は引数の JSON Schema で、description は省略できます。ツールはこれらのフィールドを確認します。モデルが関数を呼び出すと決めたときは、答えにテキストではなく message.tool_calls が含まれます。

パスワード付きの Ollama はどう呼び出しますか?

プロキシのアドレス(https://ollama.example.com など)とユーザー名を入力します。ツールは、そのユーザー名を付けた -u を curl コマンドに加え、curl がパスワードを尋ねるため、パスワードがコマンドに含まれることはありません。このサイトの Ollama nginx Config Generator で、そのようなプロキシを作れます。

サーバーに何か送信されますか?

いいえ。ツールはコマンドを書くだけです。自分で実行するまで、何も送信されません。

関連する記事

関連ツール