Ollama 簡介
市面上的 ChatGPT 或 DeepSeek,想使用他們的模型 api 撰寫自已的聊天程式,都是要付費的,不想付費的唯一方法就是自已架設 LLM 大型語言模型伺服器。
Ollama 奧拉瑪是一款可以在自已電腦執行和管理大型語言模型(LLM) 的工具,支援 Windows、Mac 及 Linux,然後使用 Ollama api 就可以開始撰寫自已的程式。
Ollama 伺服器安裝
在 Linux 執行如下指令就自動全部安裝完成
curl -fsSL https://ollama.com/install.sh | sh
若是在 Windows 下,請到 https://ollama.com/download 下載 Windows 版。
常用指令
下載模型
ollama 支援的模型請由 https://ollama.com/library 查詢,請用如下指令下載
ollama pull phi4:14b
model_tag 有如下幾種
latest : 4.7G,很不準
7b: 4.7G,不準
8b : 4.9G,不準
14b : 9G,準度不錯且速度快,適合個人電腦
32b : 19G,蠻慢的
70b : 40G,準但很慢,不適合個人電腦
671b : 404G,超準但超慢,不適合個人電腦
8b-llama-distill-fp16 : 16G,蒸餾模型,模型大,但很不準
14b-qwen-distill-fp16 : 26G,蒸餾模型,很慢
32b-qwen-distill-fp16 : 65G,蒸餾模型,超慢
本人使用 RTX-3080Ti,建議使用 14b
安裝位置
主程式安裝在 /usr/share/ollama
模型安裝在 /usr/share/ollama/.ollama/models
執行
使用如下指令即可執行 Ollama
ollama run pil4
執行上述指令即可開始發問問題,若想離開請輸入 /bye。
Nginx 反向代理
如果想要用 Python 撰寫機器人聊天程式,必需開啟 api。Ollama 的 api 使用 http://localhost:11434,如果想開放給外部使用,就需使用 Nginx 反向代理,設定如下藍色部份。
最後還需使用 Let’s Encrypt 安裝 SSL
安裝 Python 套件
在 Python 中需使用 ollama 套件,請在 Pycharm 的 Terminal 安裝套件
pip install ollama
Python 代碼
撰寫如下代碼並執行
結果如下
景甜是一位中國內地的女演員,於1986年3月21日出生在遼寧省丹東市。她畢業於中央戲劇學院演藝系本科班,並於2004年正式出道。 ### 主要作品 #### 電影 - **《花木蘭》**(2020):景甜在該片中饰演花木蘭。 - **《大秦始皇》**(2019):她在該片中飾演趙姬。 - **《/ssホールディングス株式会社》**(2018):景甜在該片中飾演楊貴妃。 #### 電視劇 - **《神探狄仁傑》**(2013-2017):景甜在該系列劇中饰演武則天。 - **《大秦 Thrones》**(2018):她在該劇中飾演芈月。 ### 荣譽和獎項 景甜憑藉其出色的表演,多次獲得電視_CHANNELS Drama Awards 的提名和獲獎。例如,在《神探狄仁傑》中,她因飾演武則天而獲得極高評價。 ### 私生活 景甜的私生活相對謹慎,但她與導演張鈴_tolerance 被傳聞有過一段戀情。 ### 其他活動 除了演藝事業,景甜還積極參與公益活動,並於2017年成為某兒童基金會的形象大使。 景甜在中國內地影視圈具有重要影響力,其出色的演技和多變的角色塑造能力受到廣泛贊賞。
記得上下文
如果要記住前面的要求,讓後面可以更精準的回答,就必需把發問的問題加入 list 中,其 role 為 “user”,ai 回答後的答案亦必需加為 list 中,其 role 為 “asistant”,如下代碼所示。
上面的 messages 到底可以塞多少呢,這要看模型的特性,可以使用如下指令查看。
ollama show phi4
結果 :
Model
architecture phi3
parameters 14.7B
context length 16384
embedding length 5120
quantization Q4_K_M
Parameters
stop "<|im_start|>"
stop "<|im_end|>"
stop "<|im_sep|>"
License
Microsoft.
Copyright (c) Microsoft Corporation.
上面顯示 context 是16384,也就是 16k,這是 phi4 的預設大小,也就是能記得上下文的大小。如果是 mb3_utf8的話,每個中文字是 3byte,那就表示能記住 5000 多個字。以每則 500字計算,約可記個 10 則。
如果想記個 30 則,就要更改 context 的大小,使用如下指令更改
responses = ollama.chat(model='phi4', messages=messages, stream=True,options={"context": 49152})
context 愈大當然就會愈慢,所以需看自已的硬体狀況來調適
資料庫版上下文
如果是網頁版的機器人,每次詢問都是獨立的 Session,無法像記憶體那樣保存先前的對話記錄。因此,需要使用資料庫來儲存對話內容,並在每次詢問前載入先前的訊息,以維持對話的連貫性。通常的做法是,在使用者發問前,先從資料庫載入最近幾條對話紀錄,然後連同新的問題送至 AI 處理,這樣可以讓機器人理解上下文,提供更符合邏輯的回應。
資料庫表格請使用如下 SQL 語法建立
CREATE TABLE `ollama` ( `id` int NOT NULL AUTO_INCREMENT, `user_id` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `role` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, `content` varchar(2000) COLLATE utf8mb3_unicode_ci NOT NULL, `日期` date NOT NULL, `時間` time NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci
python 代碼如下
答案的正確性
這樣的比較其實沒有太大意義。一台價格僅數萬元台幣的個人電腦,內建的模型僅 9GB,若要與 ChatGPT 這類耗資上百億美金,或 DeepSeek 這類投入上百萬美金的 AI 模型相提並論,確實不太能實現。 這些大型 AI 模型背後的訓練數據規模往往達到上百萬 TB,而個人電腦能夠在有限的資源下,做到基本的語意理解並提供合理的回答,已經相當不容易。
