~/tools / 在自己的伺服器上執行本機 LLM / Ollama API Request Builder

Ollama API Request Builder — 建立送往 Ollama /api/chat 的 curl 請求:format、tools、think、options

用表單建立送往 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
}

欄位依 Ollama API 參考文件中 /api/chat 所載,於 2026-11-03 確認。 Ollama API:產生聊天訊息

所有處理都在你的瀏覽器中完成。工具只負責寫出指令,不會傳送任何東西。

Ollama 的 /api/chat 端點接收一個 JSON 本文,內含模型與 messages 清單,另外還有一些選用欄位:用於函式呼叫的 tools、要求 JSON 回答或遵循 JSON Schema 的回答的 format、放 temperature 與 num_ctx 等設定的 options,以及 stream、think 與 keep_alive。在終端機裡手寫這份本文很容易出錯:少一個逗號就壞了,訊息中的單引號會結束 shell 的引號,以文字輸入的數字也可能不會被當成數字讀取。本工具從表單建立本文,並包成與 Ollama 文件範例相同形式的 curl 指令,同時為 shell 跳脫單引號。它會檢查 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 逐段送達。把 stream 設為 false 時,文件說回答會以單一 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 參考文件要求 type(一律是 function),以及一個含有 name 與 parameters 的 function 物件,其中 parameters 是引數的 JSON Schema;description 為選填。工具會檢查這些欄位。當模型決定呼叫該函式時,回答中會是 message.tool_calls,而不是文字。

要怎麼呼叫有密碼保護的 Ollama?

輸入代理伺服器的位址(例如 https://ollama.example.com)與使用者名稱。工具會在 curl 指令中加上帶有該名稱的 -u,之後由 curl 詢問密碼,所以密碼不會出現在指令中。本站的 Ollama nginx Config Generator 可以建立這樣的代理伺服器。

有任何資料會傳送到伺服器嗎?

不會。工具只負責寫出指令。在你自己執行之前,不會傳送任何東西。

相關文章

相關工具