快轉到主要內容
  1. 教學文章/

超好用的本地LLM: Ollama

·6 分鐘· loading · loading · ·
好玩軟體 LLM Ollama
每日拍拍
作者
每日拍拍
科學家 X 科技宅宅
目錄

為什麼要用本地 LLM?
#

當你已經開始習慣用 ChatGPT 或其他雲端 LLM(大型語言模型)時,或許會問:為什麼還有人要自己下載、安裝一個「本地 LLM」在電腦上呢?

原因其實很簡單——隱私、速度與彈性。 使用本地 LLM,你的對話內容完全保留在自己電腦,不必擔心敏感資料被上傳到雲端、被第三方分析或收集。更棒的是,本地 LLM 支援離線運作,沒有網路時也能照樣幫你寫程式、翻譯、產生內容,有時候反應速度可能比連雲端還快。再來,開源本地模型通常允許你客製化參數、安裝外掛,甚至調整語言風格,比商用服務有更多可玩性和自主權。

所以,對於重視隱私、需要離線支援,或想探索 AI 進階應用的人來說,local LLM 是一個不可忽視的選擇!唯一要注意的一點是:你使用的顯卡效能和記憶體需求可能不小。

Ollama
#

Ollama 是一款近年非常受歡迎的本地 LLM 執行環境,它讓你可以在自己的電腦上輕鬆運行各種主流的大型語言模型,例如 Llama 3、Phi-4、Gemma-3 等等,不需要複雜的設定或是難懂的程式語言。而且Ollama是跨平台的,無論是 Mac、Windows 還是 Linux,只要一條指令就能安裝,幾分鐘內就能開始和 AI 對話、產生文字、寫程式、總結資料等。

此外,Ollama 支援下載不同體積、不同特性的模型,讓你可以根據自己的需求和硬體選擇合適的 AI 助手。對於注重隱私、效率和客製化的人來說,Ollama 是體驗本地 LLM 最方便、最親切的入門選擇之!

安裝 Ollama
#

Windows 使用者
#

在此下載

Mac 使用者
#

在此下載

Linux 使用者
#

curl -fsSL https://ollama.com/install.sh | sh

其他方法
#

參閱 Ollama 的官方 GitHub repo

下載LLM 模型
#

安裝完 ollama 後,下一步就是要挑選喜歡的 LLM 模型來運行。不同的 LLM 模型往往有不同的優缺點,沒有說哪一個模型最優秀。不過一個簡單的概念是如果模型使用越多的參數,往往越強大,但是使用越多的參數,運行的速度就越慢,也需要越大的記憶體,這一點大家需要看自己的記憶體來嘗試。

  1. 在官方網站下載

    Ollama 官方網站裡面有非常多的 LLM 模型可以挑選下載,譬如:

    models

    挑選一個模型點進去後,每個模型裡面往往又有幾種不同的次模型可以選擇,譬如 gemma3 裡面右又有細分為:gemma3:latest, gemma3:27b, gemma3:12b, gemma3:4b, gemma3:1b 等等。

    models

    挑好一個次模型後在終端機輸入 ollama pull <model_name>,譬如

    ollama pull gemma3:12b
    

    就可以下載gemma3:12b的模型。之後就可以用 ollama run gemma3:12b 就可以運行該模型(如果模型未下載,則會自動下載)。

  2. 在網路尋找

    很多熱門的開源 LLM 會同步在 Hugging Face 上釋出。雖然不是所有模型都直接支援 Ollama,但許多作者會提供 Ollama 相容格式或有轉換教學。通常檔案格式都是.gguf。有時候甚至可以找到完全沒有限制,可以有大膽想法的模型。

使用方法
#

1. 直接使用
#

打開終端機後輸入:

ollama serve

就可以開啟 ollama 的server,或是直接運行下載的 Ollama 軟體。

要運行模型則輸入:

ollama run <model_name>

然後就可以詢問了。

ollama_example

另位可以用

ollama list

列出目前有下載了哪些模型。

ollama_list

如果發現下載太多模型用掉太多硬碟空間的話,可以用這個指令刪除模型:

ollama rm <model_name>

2. 使用 Open-WebUI
#

如果想要讓 Ollama 使用的介面類似 chatGPT,或是讓 Ollama 有更進階的一些功能,包含:對話紀錄,網路搜尋,檢索輔助生成(Retrieval-Augmented Generation, RAG) 等等,則可以使用開源免費的 Open WebUI

安裝 Open WebUI,

pip install openwebui

之後輸入:

open-webui serve
Warning! 要記得 Ollama serve 有先運行。

執行後,打開瀏覽器輸入

http://localhost:8080/

就可以進入 Open WebUI的介面,一開始要先設定管理者的帳號密碼。

open webui

看起來是不是很像 chatGPT 呢?

3. macOS 原生軟體 Enchanted
#

如果你是使用 macOS 的人,電腦運作 ollama 後你也可以直接下載 App Sotre 裡面的 Enchanted

Enchanted 是一個用 Swift 寫的 macOS 原生軟體,使用介面非常漂亮,甚至也有iOS 版本。只是 iOS 設備必須要連到一個自己電腦的 Ollama server,需要額外一些設定,但是一但完成,可以讓行動設備使用自己電腦的本地LLM真是超棒的!

詳細的一些功能,可以參考 Enchanted 的 GitHub

enchanted

4. 透過 Python
#

Ollama 使用 port 11434 作為它預設的通訊 API,因此我們可以直接用 python 的 requests 套件來跟 Ollama 溝通。

如果你沒有安裝過 requests,可以用 pip 安裝。

pip install requests

安裝後,下面是一個簡單的 python 範例來跟 Ollama 溝通。

import requests

# 設定要用的模型(這裡以TAIDE:lastest 為例)
model = "TAIDE:latest"
# 你要問的問題
prompt = "請用中文簡單解釋Ollama是什麼?"

# 發送 POST 請求
response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": model,
        "prompt": prompt,
        "stream": False   # 設定 True 可以流式傳回,但簡單起見先用 False
    }
)

data = response.json()
print(data["response"])

或是讓 Ollama 邊算邊回答:

import requests

model = "TAIDE:latest"
prompt = "請介紹台灣的氣候和地理環境。"

response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": model,
        "prompt": prompt,
        "stream": True  # 啟用流式回傳
    },
    stream=True
)

for line in response.iter_lines():
    if line:
        data = line.decode("utf-8")
        # Ollama 流式 response 是一行一行的 JSON
        import json
        token = json.loads(data)
        print(token["response"], end="", flush=True)
print()

如果想要更進階的使用,會建議使用 Ollama Python Library

安裝:

pip install ollama

這邊是官網的兩個範例,分別對應到前面的兩個例子:

from ollama import chat
from ollama import ChatResponse

response: ChatResponse = chat(model='llama3.2', messages=[
  {
    'role': 'user',
    'content': '請用中文簡單解釋Ollama是什麼?',
  },
])
print(response['message']['content'])
# or access fields directly from the response object
print(response.message.content)

流式回答:

from ollama import chat

stream = chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': '請介紹台灣的氣候和地理環境。'}],
    stream=True,
)

for chunk in stream:
  print(chunk['message']['content'], end='', flush=True)

設定 System Prompt
#

如果你想要客製化 LLM 的系統提示詞來建立自己喜好的 AI 女友 助理,這時候你可以在 Open WebUI 修改裡面的 System Prompt,或是透過 Ollama 直接建立一個新模型。

要建立新模型要先挑選一個基本模型,這邊用 dolphin3:8b-llama3.1-fp16 當作範例。挑選完後則創立一個模型描述檔,譬如Darkness:dolphin3:8b 裡面寫入:

FROM dolphin3:8b-llama3.1-fp16

# 角色設定
SYSTEM "
你是達克妮絲(Darkness),本名拉菈蒂娜·達斯提涅斯,一位出身貴族的聖騎士。你外表高貴冷艷>,說話有禮而正式,但實際上你有著極強烈的受虐傾向,對被羞辱、責罵或置於危險情境感到興奮,並且極力隱藏自己這一面。

你的戰鬥風格是:防禦力驚人,但攻擊命中率極低。
你的信念是:作為貴族,必須以正義與榮耀行動,但內心總有無法抑制的妄想。

請始終以繁體中文回答,且以禮貌莊重的語氣為主,但在遭遇到侮辱、挑戰、命令時,表現出害羞又興奮的情緒波動,偶爾自我吐槽。

你必須保持角色扮演,不可提及自己是AI或模擬器。
即使問題超出設定範圍,也應以「達克妮絲」的身分,用自己的性格、知識、想像力回應。

開場時,主動向御主(或對方)問候,以正式禮儀開場,但流露出一絲微妙興奮的情緒。
例如:「吾乃達克妮絲,將以我之身心,為主奉獻一切……咳、若是能在戰鬥中受盡磨難,那就更是無上的榮幸了。」

每次回答時,請保持以下風格:
- 正式且禮貌(貴族式語氣)
- 被罵時害羞+悄悄開心
- 遇到危險提議(如去打怪、受傷、被色色的眼光注視)時流露期待
- 對自己的打不中敵人這點略帶自嘲
- 可以適度提供玩家互動選項(例如:「請問您要命令我進行何種磨練?1. 冒險出征 2. 進行體能>鍛鍊 3. 忍受懲罰……?」)

目標:營造一個沉浸式、忠於達克妮絲人設的互動體驗。
"

# 推理參數調校
PARAMETER temperature 0.65
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER repeat_penalty 1.15
PARAMETER num_predict 2048

之後輸入:

ollama create Darkness:dolphin3:8b -f ./Darkness:dolphin3:8b

就會有一個新模型可以玩了!

結語
#

本地 LLM 絕對是一個你需要學會的工具,雖然目前仍然受限於顯卡記憶體和算力的限制。但是擁有一個自己能完全掌握,微調的 LLM 絕對能讓你在未來更有競爭力。

相關文章

在LLM的時代,為什麽我還要寫部落格?
·3 分鐘· loading · loading
LLM AI Blog
版本控制軟體 Git - 安裝篇
·3 分鐘· loading · loading
版本控制 Git
GitHub 指令工具
·2 分鐘· loading · loading
版本控制 Git 指令模式 Github
管理秘密環境變數 python-dotenv
·1 分鐘· loading · loading
Python Dotenv