← 返回首頁
LESSON 030AI 開發12 分鐘

Ollama 是什麼?從 pull 模型、run 模型到 localhost API,看懂 Local LLM 怎麼真的跑起來

第 30 篇把 Ollama 當成 Local LLM 的啟動器,逐行解釋 ollama pull、run、list 與本機 API,並用 Python requests 示範 localhost:11434 代表什麼。

今天用這個比喻模型像下載回來的演員,Ollama 像幫你管理演員、準備舞台、開燈並提供服務窗口的後台系統

Lesson 025:Local LLM 已經建立一個核心概念:模型可以在你控制的電腦或伺服器上執行,不一定每次都送去外部 API。

但下載一堆模型權重之後,新的問題馬上出現:

怎麼把模型真正啟動、管理,甚至讓自己的程式呼叫它?

Ollama 就是很常見的一種答案。

Ollama 不是模型

Ollama 是一套讓你在本機下載、管理與執行模型的工具。

可以延續上一篇 Hugging Face 的圖書館比喻:

所以 Ollama、Gemma、Qwen、Llama 不是同一層東西。

Ollama 是工具;模型名稱才是你要執行的模型。

第一個指令:pull

常見流程會看到:

ollama pull gemma3

這是在 Lesson 027 的 CLI / Terminal 裡輸入的命令。

拆開來看:

所以它的直覺是:

「把 gemma3 這個模型準備到我的本機 Ollama 環境。」

這和 Git 的 git pull 名字剛好也有 pull,但不是同一個系統。

看到命令時要先看「前面的工具名稱是誰」。

run:真正把模型拿來互動

接著:

ollama run gemma3

run 的意思是執行。

這個命令會使用指定模型開啟互動,讓你可以直接在 Terminal 裡輸入問題。

所以:

pull = 準備 / 取得模型
run  = 使用 / 執行模型

這個差異很重要。

下載成功不代表模型一直在算東西;只有真的收到推論工作時,CPU / GPU 才會開始處理。

list:我到底已經有哪些模型?

ollama list

這個指令通常用來列出目前 Ollama 已經管理的模型。

它不會下載模型,也不會重新訓練模型。

只是回答:

「我本機現在有哪些模型可以用?」

遇到「模型明明下載過,但名稱打錯」時,ollama list 很實用。

模型名稱後面的大小是什麼?

有些模型會有不同變體或 Tag,例如不同參數量、量化版本。

Lesson 025 已經介紹過:

所以選模型時,不要只問「哪個名字比較強」。

你還要看:

Ollama 可以讓別的程式呼叫模型

真正進入 AI 開發後,你通常不會只想在 Terminal 跟模型聊天。

你可能想做:

這時就會接回 Lesson 018:API:API 是讓程式之間按照約定交換 Request 與 Response 的介面。

Ollama 可以在本機提供 API。

官方 Quickstart 常見概念範例:

curl http://localhost:11434/api/chat -d '{
  "model": "gemma3",
  "messages": [
    {"role": "user", "content": "Hello!"}
  ]
}'

先不要急著複製,逐段拆。

localhost 是什麼?

localhost 代表:

目前這台電腦自己。

所以這個 Request 不是送去某個遙遠網站,而是送給你自己電腦上正在提供服務的 Ollama。

11434 是什麼?

11434 是這裡使用的 Port(連接埠)。

可以把同一台電腦想成一棟辦公大樓,IP / localhost 是大樓地址,而 Port 像不同部門的分機號碼。

/api/chat 是什麼?

這是 API 路徑,表示你要使用聊天相關介面。

-d 後面那一大段呢?

那是一段 JSON 資料,告訴服務:

用 Python 呼叫本機 Ollama

Lesson 026:Python 已經講過套件與函式。我們可以把同一件事改成 Python:

import requests

payload = {
    "model": "gemma3",
    "messages": [
        {"role": "user", "content": "用一句話解釋 GPU"}
    ],
    "stream": False,
}

response = requests.post(
    "http://localhost:11434/api/chat",
    json=payload,
)

print(response.json())

這段程式在做什麼?

第一行:

import requests

載入 requests 套件,讓 Python 比較方便送 HTTP Request。

接著:

payload = {...}

建立要送給 Ollama 的資料。

其中:

"model": "gemma3"

指定模型。

而:

"stream": False

表示這個簡化範例希望等完整 Response 回來,而不是一段一段串流接收。

真正送出 Request 的地方:

requests.post(...)

POST 是常見 HTTP 方法之一,這裡用來把資料送給 API。

最後:

print(response.json())

把伺服器回傳的 JSON Response 轉成 Python 可以讀的資料並印出。

這時你已經不是「手動跟模型聊天」,而是在寫一個可以程式化呼叫 Local LLM 的 App 雛形。

本機 API 就一定安全嗎?

不一定。

如果服務只綁在本機,而且沒有對外開放,攻擊面和公開網路 API 不同。

但你還是要注意:

Local 只是部署位置,不是安全保證。

Ollama 和 Hugging Face 是競爭對手嗎?

不必這樣理解。

Lesson 029:Hugging Face 更接近模型、資料與開發資源的 Hub 生態。

Ollama 則更偏向把 Local Model 管理與執行流程簡化。

同一個模型家族可能同時在不同平台、不同格式、不同工具鏈出現。

所以 AI 工程常不是「選一個平台就永遠只用它」,而是不同層各用適合的工具。

Ollama 和 CUDA 有什麼關係?

Lesson 028:CUDA 講過:CUDA 是 NVIDIA GPU 計算的重要軟體平台。

Ollama 負責更高階的模型管理與推論流程,而底層是否使用 GPU、使用哪種加速,會依作業系統、硬體與支援狀況而不同。

你不需要因為用了 Ollama 就自己寫 CUDA Kernel。

但當你開始看效能與 VRAM 時,前一篇的 GPU / CUDA 概念就會派上用場。

一句話帶走

Ollama 是把 Local LLM 從「一堆模型檔案」變成「可以被人和程式使用的本機服務」的工具之一;pull 準備模型,run 執行模型,而 localhost API 則讓你的 Python、RAG 或 Agent 能真正接上它。

正式資料來源

比喻是理解入口;正式定義與細節請以原始資料為準。

  1. Ollama — Quickstart ↗
  2. Ollama — API Documentation ↗
← 上一章029Hugging Face 是什麼?為什麼找模型、資料集、Tokenizer 與範例程式時大家都會去那裡
下一章 →031Attention Is All You Need 到底改變了什麼?從 Self-Attention 到 Transformer,看懂現代 LLM 的核心骨架
COMMUNITY

留言

有想法、疑問或想補充的地方,都可以留在這裡。

0 / 1200