1 Ollama
1.1 簡介
Ollama 是一個開源的本地大語言模型運行框架,專為在本地機器上便捷部署和運行大型語言模型(LLM)而設(shè)計,支持多種操作系統(tǒng),包括 macOS、Windows、Linux 以及通過 Docker 容器運行。
Ollama 的特點在于它不僅僅提供了現(xiàn)成的模型和工具集,還提供了方便的界面和 API,使得從文本生成、對話系統(tǒng)到語義分析等任務(wù)都能快速實現(xiàn)。
與其他 NLP 框架不同,Ollama 旨在簡化用戶的工作流程,Ollama 支持多種硬件加速選項,包括純 CPU 推理和各類底層計算架構(gòu)(如 Apple Silicon),能夠更好地利用不同類型的硬件資源。
核心功能與特點:
- 多種預(yù)訓(xùn)練語言模型支持:
Ollama提供了多種開箱即用的預(yù)訓(xùn)練模型,包括常見的 GPT、BERT 等大型語言模型。 - 易于集成和使用:
Ollama提供了命令行工具(CLI)和Python SDK,簡化了與其他項目和服務(wù)的集成。無需擔(dān)心復(fù)雜的依賴或配置,可以快速將 Ollama 集成到現(xiàn)有的應(yīng)用中。 - 本地部署與離線使用:不同于一些基于云的 NLP 服務(wù),
Ollama允許開發(fā)者在本地計算環(huán)境中運行模型。 - 支持模型微調(diào)與自定義:用戶不僅可以使用
Ollama提供的預(yù)訓(xùn)練模型,還可以在此基礎(chǔ)上進(jìn)行模型微調(diào)。
1.2 下載安裝
Ollama 官方下載地址:https://ollama.com/download
下載后,打開命令提示符或 PowerShell,輸入以下命令驗證安裝是否成功:ollama --version
更改安裝路徑(可選)
如果需要將 Ollama 安裝到非默認(rèn)路徑,可以在安裝時通過命令行指定路徑,例如:
OllamaSetup.exe /DIR="d:\some\location"
這樣可以將 Ollama 安裝到指定的目錄
或者使用 scoop 安裝也可以 (點擊此處了解scoop用法)
1.3 基本概念
1.3.1 模型(Model)
在 Ollama 中,模型是核心組成部分。它們是經(jīng)過預(yù)訓(xùn)練的機器學(xué)習(xí)模型,能夠執(zhí)行不同的任務(wù),例如文本生成、文本摘要、情感分析、對話生成等。
Ollama 支持多種流行的預(yù)訓(xùn)練模型,常見的模型有:
-
deepseek-v3:深度求索提供的大型語言模型,專門用于文本生成任務(wù)。 -
LLama2:Meta 提供的大型語言模型,專門用于文本生成任務(wù)。 -
GPT:OpenAI的 GPT 系列模型,適用于廣泛的對話生成、文本推理等任務(wù)。 -
BERT:用于句子理解和問答系統(tǒng)的預(yù)訓(xùn)練模型。 -
其他自定義模型:用戶可以上傳自己的自定義模型,并利用 Ollama 進(jìn)行推理。
Ollama 支持的模型可以訪問:https://ollama.com/library
模型的主要功能:
- 推理(
Inference):根據(jù)用戶輸入生成輸出結(jié)果。 - 微調(diào)(
Fine-tuning):用戶可以在已有模型的基礎(chǔ)上使用自己的數(shù)據(jù)進(jìn)行訓(xùn)練,從而定制化模型以適應(yīng)特定的任務(wù)或領(lǐng)域。
1.3.2 任務(wù)(Task)
Ollama 支持多種 NLP 任務(wù)。每個任務(wù)對應(yīng)模型的不同應(yīng)用場景,主要包括但不限于以下幾種:
- 對話生成(
Chat Generation):通過與用戶交互生成自然的對話回復(fù)。 - 文本生成(
Text Generation):根據(jù)給定的提示生成自然語言文本,例如寫文章、生成故事等 - 情感分析(
Sentiment Analysis):分析給定文本的情感傾向(如正面、負(fù)面、中立) - 文本摘要(
Text Summarization):將長文本壓縮為簡潔的摘要。 - 翻譯(
Translation):將文本從一種語言翻譯成另一種語言。
1.3.3 推理(Inference)
推理是指在已訓(xùn)練的模型上進(jìn)行輸入處理,生成輸出的過程。
Ollama 提供了易于使用的命令行工具或 API,可以快速向模型提供輸入并獲取結(jié)果。
推理是 Ollama 的主要功能之一,也是與模型交互的核心。
推理過程:
-
輸入:用戶向模型提供文本輸入,可以是一個問題、提示或者對話內(nèi)容。 -
模型處理:模型通過內(nèi)置的神經(jīng)網(wǎng)絡(luò)根據(jù)輸入生成適當(dāng)?shù)妮敵觥?/li> -
輸出:模型返回生成的文本內(nèi)容,可能是回復(fù)、生成的文章、翻譯文本等。
1.3.4 微調(diào)(Fine-tuning)
微調(diào)是指在一個已預(yù)訓(xùn)練的模型上,基于特定的領(lǐng)域數(shù)據(jù)進(jìn)行進(jìn)一步的訓(xùn)練,以便使模型在特定任務(wù)或領(lǐng)域上表現(xiàn)得更好。
Ollama 支持微調(diào)功能,用戶可以使用自己的數(shù)據(jù)集對預(yù)訓(xùn)練模型進(jìn)行微調(diào),來定制模型的輸出。
微調(diào)過程:
-
準(zhǔn)備數(shù)據(jù)集:用戶準(zhǔn)備特定領(lǐng)域的數(shù)據(jù)集,數(shù)據(jù)格式通常為文本文件或 JSON 格式。 -
加載預(yù)訓(xùn)練模型:選擇一個適合微調(diào)的預(yù)訓(xùn)練模型,例如 LLama2 或 GPT 模型。 -
訓(xùn)練:使用用戶的特定數(shù)據(jù)集對模型進(jìn)行訓(xùn)練,使其能夠更好地適應(yīng)目標(biāo)任務(wù)。 -
保存和部署:訓(xùn)練完成后,微調(diào)過的模型可以保存并部署,供以后使用。
1.4 Ollama命令
Ollama 提供了多種命令行工具(CLI)與本地運行的模型進(jìn)行交互。
基本格式:ollama <command> [args]
用 ollama --help 查看包含有哪些命令
使用方法:
-
ollama [flags]:使用標(biāo)志(flags)運行ollama
可用標(biāo)志(Flags):-
-h, --help:顯示ollama的幫助信息 -
-v, --version:顯示版本信息
-
-
ollama [command]:運行ollama的某個具體命令
可用命令如下:-
serve:啟動ollama服務(wù)
REST端點(默認(rèn) http://localhost:11434/api):-
/api/generate:文本生成 -
/api/chat:對話流式接口 -
/api/pull:遠(yuǎn)程拉取 -
/api/tags:本地模型列表
-
-
create:根據(jù)一個Modelfile創(chuàng)建一個模型 -
show:顯示某個模型的詳細(xì)信息,查看模型的元數(shù)據(jù)、參數(shù)或Modelfile -
run:運行一個模型,如果不存在則自動拉取-
--num-predict <number>:限制輸出 token 數(shù) -
--temperature <float>:控制隨機性 -
--top-k <int>:采樣范圍 -
--top-p <float>:核采樣 -
--seed <int>:固定隨機性 -
--format json:輸出 JSON -
--keepalive <seconds>:會話保持時間
-
-
stop:停止一個正在運行的模型 -
pull:從一個模型倉庫(registry)拉取一個模型,但不運行 -
push:將一個模型推送到一個模型倉庫 -
list:列出本地所有已下載的模型 -
ps:列出所有正在運行的模型及顯存占用 -
cp:復(fù)制一個模型,將現(xiàn)有模型復(fù)制為新名稱 -
rm:移除本地模型釋放空間 -
help:獲取關(guān)于任何命令的幫助信息
-
當(dāng)輸入 ollama run 進(jìn)入聊天界面后,不再是在操作命令行,而是在和 AI 對話。這時可以使用以 / 開頭的快捷指令來控制對話:
-
/bye或/exit:退出聊天界面,返回命令行 -
/clear:清空當(dāng)前的上下文記憶(開啟一段新的對話)。 -
/show info:查看當(dāng)前模型的詳細(xì)參數(shù)信息 -
/set parameter seed 123:設(shè)置隨機種子(高級玩法,用于復(fù)現(xiàn)結(jié)果) -
/help:在聊天中查看所有可用的快捷鍵
構(gòu)建模型時使用 Modelfile 指令:
-
FROM <model>:基礎(chǔ)模型 -
SYSTEM "xxx":設(shè)定系統(tǒng)提示 -
PARAMETER key=value:設(shè)定默認(rèn)參數(shù) -
TEMPLATE "xxx":自定義 Chat 模板 -
LICENSE "xxx":設(shè)置 License -
ADAPTER <file> / WEIGHTS <file>:加載 LoRA 或額外權(quán)重
1.5 模型操作
1.5.1 運行模型
Ollama 運行模型使用 ollama run 命令。
比如:ollama run llama3.2,執(zhí)行以上命令如果沒有該模型會去下載 llama3.2 模型
通過 Python SDK 使用模型
如果想將 Ollama 與 Python 代碼集成,可以使用 Ollama 的 Python SDK 來加載和運行模型。
安裝 Ollama 的 Python SDK,打開終端,執(zhí)行:pip install ollama
使用 Python 代碼來加載和與模型交互。
import ollama
response = ollama.generate(
model="llama3.2", # 模型名稱
prompt="你是誰。" # 提示文本
)
print(response)
流式響應(yīng)
from ollama import chat
stream = chat(
model="llama3.2",
messages=[{"role": "user", "content": "為什么天空是藍(lán)色的?"}],
stream=True
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
1.5.2 模型交互
- 命令行交互:
通過命令行直接與模型進(jìn)行交互是最簡單的方式
使用ollama run命令啟動模型并進(jìn)入交互模式:ollama run <model-name>
啟動后,您可以直接輸入問題或指令,模型會實時生成響應(yīng)。
在交互模式下,輸入/bye或按下Ctrl+d退出 - 單次命令交互:
如果只需要模型生成一次響應(yīng),可以直接在命令行中傳遞輸入。
通過管道將輸入傳遞給模型:
echo "你是誰?" | ollama run deepseek-coder
直接在命令行中傳遞輸入:ollama run deepseek-coder "Python 的 hello world 代碼?" - 多輪對話
Ollama支持多輪對話,模型可以記住上下文 - 文件輸入
可以將文件內(nèi)容作為輸入傳遞給模型
ollama run deepseek-coder < input.txt - 自定義提示詞
通過Modelfile定義自定義提示詞或系統(tǒng)指令,使模型在交互中遵循特定規(guī)則。
創(chuàng)建自定義模型
編寫一個Modelfile:FROM deepseek-coder SYSTEM "你是一個編程助手,專門幫助用戶編寫代碼。"
然后創(chuàng)建自定義模型:ollama create test-coder -f ./Modelfile
運行自定義模型:ollama run test-coder - 交互日志
Ollama會記錄交互日志,方便調(diào)試和分析:ollama logs
1.6 與瀏覽器交互
1.6.1 Open WebUI
1.6.1.1 簡介
Open WebUI 用戶友好的 AI 界面(支持 Ollama、OpenAI API 等)。
Open WebUI 支持多種語言模型運行器(如 Ollama 和 OpenAI 兼容 API),并內(nèi)置了用于檢索增強生成(RAG)的推理引擎,使其成為強大的 AI 部署解決方案。
Open WebUI 可自定義 OpenAI API URL,連接 LMStudio、GroqCloud、Mistral、OpenRouter 等。
官方文檔:https://docs.openwebui.com
1.6.1.2 安裝
使用 Docker 安裝
如果 Ollama 已安裝在電腦上,使用以下命令:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
使用 Nvidia GPU 支持運行 Open WebUI:
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
裝完成后,通過訪問 http://localhost:3000 使用 Open WebUI。
Open WebUI 可以通過 Python 的包安裝程序 pip 進(jìn)行安裝,在開始安裝之前,請確保使用的是 Python 3.11,以避免可能出現(xiàn)的兼容性問題。
打開終端,運行以下命令以安裝 Open WebUI:pip install open-webui
安裝完成后,通過以下命令啟動 Open WebUI:open-webui serve
啟動后,Open WebUI 服務(wù)器將運行在 http://localhost:8080
1.6.2 Page Assist
1.6.2.1 簡介
Page Assist 是一款開源的瀏覽器擴(kuò)展程序,主要為本地 AI 模型提供直觀的交互界面,讓用戶可以在任何網(wǎng)頁上與本地 AI 模型進(jìn)行對話和交互。
Page AssistGithub 源代碼:https://github.com/n4ze3m/page-assist
基本功能:
- 側(cè)邊欄交互:用戶可以在任何網(wǎng)頁上打開側(cè)邊欄,與本地 AI 模型進(jìn)行對話,獲取與網(wǎng)頁內(nèi)容相關(guān)的智能輔助。
- 網(wǎng)頁 UI:提供類似 ChatGPT 的網(wǎng)頁界面,用戶可以在此界面中與 AI 模型進(jìn)行更全面的對話。
- 網(wǎng)頁內(nèi)容對話:用戶可以直接與網(wǎng)頁內(nèi)容進(jìn)行對話,獲取相關(guān)信息的解釋或分析。
多瀏覽器支持:支持 Chrome、Brave、Edge 和 Firefox 等主流瀏覽器。 - 快捷鍵操作:通過快捷鍵可以快速打開側(cè)邊欄和網(wǎng)頁 UI,方便用戶使用。
- 支持多種本地 AI 提供商:目前支持 Ollama 和 Chrome AI (Gemini Nano) 等本地 AI 提供商。
- 文檔解析:支持與 PDF、CSV 等多格式文檔進(jìn)行聊天交流。
- 離線模型適配:適用于離線環(huán)境,用戶可以在本地運行 AI 模型。
- 隱私保護(hù):所有交互都在本地完成,不會收集用戶個人數(shù)據(jù),數(shù)據(jù)存儲在瀏覽器的本地存儲中。
- 開發(fā)模式:支持開發(fā)者模式,便于進(jìn)行擴(kuò)展的開發(fā)和測試。
1.6.2.2 安裝與使用
直接從 Chrome Web Store 或 Firefox Add-ons 商店下載安裝,也可以通過手動安裝的方式進(jìn)行,訪問 https://chromewebstore.google.com/search/,搜索 Page Assist
打開后就可以看到 Ollama 正在運行的提示,如果還沒啟動則需要啟動 Ollama

接下來我們可以選擇指定的模型,然后輸入提示詞:

1.7 與Python交互
1.7.1 安裝SDK
安裝 Ollama 的 Python SDK。
pip install ollama
確保環(huán)境中已安裝了 Python 3.x,并且網(wǎng)絡(luò)環(huán)境能夠訪問 Ollama 本地服務(wù)
在使用 Python SDK 之前,確保 Ollama 本地服務(wù)已經(jīng)啟動。
使用命令行工具來啟動它:ollama serve
如果已經(jīng)用run啟動了為什么還要用server?
因為
ollama run只能打開一個交互式命令行會話;它本身不會監(jiān)聽任何端口,也就無法被Python程序調(diào)用。
因此想讓Ollama對外提供 API(HTTP 或官方 SDK),都必須先執(zhí)行ollama serve
這條命令會在后臺啟動本地服務(wù),默認(rèn)監(jiān)聽 localhost:11434,然后才能用 Python 通過 HTTP 或 ollama-python 與之通信 。
1.7.2 使用SDK交互
1.7.2.1 簡單使用
通過 Python SDK,向指定的模型發(fā)送請求,生成文本或?qū)υ挘?/p>
from ollama import chat
from ollama import ChatResponse
response: ChatResponse = chat(model='deepseek-coder', messages=[
{
'role': 'user',
'content': '你是誰?',
},
])
# 打印響應(yīng)內(nèi)容
print(response['message']['content'])
# 或者直接訪問響應(yīng)對象的字段
#print(response.message.content)
1.7.2.2 常用 API 方法
Ollama Python SDK 提供了一些常用的 API 方法,用于操作和管理模型。
-
chat方法
與模型進(jìn)行對話生成,發(fā)送用戶消息并獲取模型響應(yīng):
ollama.chat(model='llama3.2', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]) -
generate方法
用于文本生成任務(wù)。與 chat 方法類似,但是它只需要一個 prompt 參數(shù):ollama.generate(model='llama3.2', prompt='Why is the sky blue?') -
list方法
列出所有可用的模型:ollama.list() -
show方法
顯示指定模型的詳細(xì)信息:ollama.show('llama3.2') -
create方法
從現(xiàn)有模型創(chuàng)建新的模型:
ollama.create(model='example', from_='llama3.2', system="You are Mario from Super Mario Bros.") -
copy方法
復(fù)制模型到另一個位置:ollama.copy('llama3.2', 'user/llama3.2') -
delete方法
刪除指定模型:ollama.delete('llama3.2') -
pull方法
從遠(yuǎn)程倉庫拉取模型:ollama.pull('llama3.2') -
push方法
將本地模型推送到遠(yuǎn)程倉庫:ollama.push('user/llama3.2') -
embed方法
生成文本嵌入:
ollama.embed(model='llama3.2', input='The sky is blue because of rayleigh scattering') -
ps方法
查看正在運行的模型列表:ollama.ps()
1.7.3 使用Http方式交互
1.7.3.1 使用Ollama http
Ollama 的端口兼容 OpenAI 格式,也提供原生 REST 端點
from ollama import Client
client = Client(
host='http://localhost:11434',
headers={'x-some-header': 'some-value'}
)
response = client.chat(model='deepseek-coder', messages=[
{
'role': 'user',
'content': '你是誰?',
},
])
print(response['message']['content'])
異步執(zhí)行請求,可以使用 AsyncClient 類,適用于需要并發(fā)的場景。
import asyncio
from ollama import AsyncClient
async def chat():
message = {'role': 'user', 'content': '你是誰?'}
response = await AsyncClient().chat(model='deepseek-coder', messages=[message])
print(response['message']['content'])
asyncio.run(chat())
異步客戶端支持與傳統(tǒng)的同步請求一樣的功能,唯一的區(qū)別是請求是異步執(zhí)行的,可以提高性能,尤其是在高并發(fā)場景下。
1.7.3.2 使用其他http請求
import requests, json
url = 'http://localhost:11434/api/chat'
payload = {
"model": "deepseek-coder",
"messages": [{"role": "user", "content": "寫個快速排序"}],
"stream": False
}
resp = requests.post(url, json=payload)
print(resp.json()['message']['content'])