聊天機器人 Ollama

      在〈聊天機器人 Ollama〉中尚無留言

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,而個人電腦能夠在有限的資源下,做到基本的語意理解並提供合理的回答,已經相當不容易。

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *