使用 Ollama + Ngrok 搭建本地 LLM,遠端存取 AI 模型教學
本篇要解決的問題
ChatGPT 等 AI 工具很方便,但有時工作上的數據可能會被 AI 當作學習資料,尤其這陣子新聞被洗版的 DeepSeek,幾個國家會禁用的原因都是安全疑慮。
前陣子新買了一台 Mac mini,就想來在本地安裝 LLM,然後在工作時使用。
本地安裝好 LLM 後,要能遠端使用,試了幾次 NAT 通訊埠轉發都失敗,就改用最簡單的 Ngrok。
安裝、使用 Ollama
Ollama 官網:https://ollama.com/。
點擊 Download 就可以下載、安裝。
安裝完後,可以藉由 Ollama 下載 Models,像 Llama、Phi、Gemma、Mistral,有開源的這邊幾乎都有:
August 實測,買的 Mac mini 是:
- 10 核心 CPU
- 10 核心 GPU
- 16GB 統一記憶體
運行 Phi-4 14B 還算順暢,但更大的模型(如 Mistral Small3 22B)就會明顯卡頓 QQ。
Ollama 要下載 Models 很簡單,從上面的官網網址找到想下載的,點進去後就會看到可以複製的命令,貼上終端機後執行就行:
Ollama 的指令如下:
以下是 Ollama 的指令對應的中文翻譯:
- ollama serve - 啟動 Ollama
- ollama run - 執行模型
- ollama list - 列出所有模型
- ollama rm - 移除模型
- ollama create - 從 Modelfile 建立模型
- ollama show - 顯示模型的資訊
- ollama stop - 停止運行中的模型
- ollama pull - 從 Ollama Models 拉取模型
- ollama push - 將模型推送至 Ollama Models
- ollama ps - 列出正在運行的模型
- ollama cp - 複製模型
- ollama help - 顯示指令的幫助資訊
前四個是最常用的。
安裝好 model,會看到一個基本的對話模式正在使用:
輸入「/bye」就可以退出。
因為想讓遠端公司的電腦可以使用,需要的是 API 模式。
Ollama 啟動後,預設就可以用 API 的方式調用。
API
文件:https://github.com/ollama/ollama/blob/main/docs/api.md
POST 端點:
http://localhost:11434/api/generate
出去的參數,常用部份:
- model:(必填)模型名稱
- prompt:用來生成回應的提示詞
- suffix:模型回應後的附加文字
- images:(選填)Base64 編碼的圖片列表(適用於如 Llava 這類的多模態模型)
- format:回應的格式。格式可以是
json
或 JSON schema - options:額外的模型參數,可參考 Modelfile 文件,例如 temperature
- system:系統訊息(會覆蓋 Modelfile 中定義的內容)
- template:要使用的提示詞模板(會覆蓋 Modelfile 中定義的內容)
- stream:如果設定為 false,回應將以單一物件返回,而不是以流(stream)方式傳輸
- raw:如果設定為 true,則不會對提示詞進行格式化。當請求 API 時,如果已提供完整的模板化提示詞,可以使用此選項
- keep_alive:控制模型在記憶體中保持加載的時間(預設:5 分鐘)
這邊用 Postman 簡單測試一下:
有收到 response 就代表成功了。
安裝、使用 Ngrok
Ngrok 是做什麼的呢?
想像我們在家裡建了一個「秘密基地」,可是我們的朋友都在公司當社畜,沒辦法直接走過來看秘密基地的樣子。
Ngrok 就是一個神奇的隧道,可以幫把家裡的「秘密基地」(我們的電腦或伺服器)連接到網路上,讓社畜們(咦)可以從公司(遠端位置)透過這個隧道找到我們。
再簡單來,就是我們原本只對內的 localhost,讓外部的外星人也連結得到。
Ngrok 官網:https://ngrok.com/。
註冊以後,就可以看到有多種的安裝方式:
本篇示範 MacOS 的方式,上圖中選擇 MacOS 後,頁面下方就會出現安裝的命令:
第一個命令是安裝 Ngrok。
第二個命令是設定 token,有 token 才可以使用 Ngrok 的服務。
接著以下命令,是把我們本地 Ollama API 的 11434 綁到 Ngrok:
ngrok http 11434 --host-header="localhost:11434"
實測後,必需要是這樣下命令才可以。
執行後,會看到終端機出現以下訊息:
最重要的是 Forwarding 那行:
https://fb55-118-233-2-60.ngrok-free.app -> http://localhost:11434
代表我們本地的 localhost:11434,已經被 Ngrok 建立成公開網址 https://fb55-118-233-2-60.ngrok-free.app。
Postman 的測試可以修改後來測試:
成功啦~ 之後可以在公司用 API 的方式使用了。
要注意的是,如果是用免費方案的 Ngrok,每次出來的公開網址都會不一樣,要一樣的話要升成付費方案。
本人的財力就跟小八差不多,免費的就覺得好用了 QQ。
Top comments (1)
不错,谢谢分享