- BiliBili影片
- 官網:https://ollama.com/
- GitHub: https://github.com/ollama/ollama
- 官方文件(GitHub):https://github.com/ollama/ollama/tree/main/docs
- 標籤:對話型,客戶端,開源大模型
- 網路
- 部分需要訪問GitHub,可以使用Watt Toolkit免費工具訪問
- 容器映象,國內映象被禁用,下載可檢視該文件:https://wkdaily.cpolar.cn/archives/gc
- 其他均可直連訪問及下載
安裝
Docker
docker run -d -p 11434:11434 -e OLLAMA_HOST=0.0.0.0 --name ollama ollama/ollama
# 掛載GPU(--gpus=all)
docker run -d -p 11434:11434 -e OLLAMA_HOST=0.0.0.0 --name ollama --gpus=all ollama/ollama
Windows
- 開啟官網 > "Download" > Windows圖示 > "Download for Windows"
- 點選安裝
Linux
- 開啟官網 > "Download" > Linux圖示 > 複製下載命令
curl -fsSL https://ollama.com/install.sh | sh
驗證
# 列印Ollama版本
ollama -v
# ollama version is 0.3.4
# 請求Ollama服務(Windows直接瀏覽器訪問 http://localhost:11434 效果相同)
curl localhost:11434
# Ollama is running
下載模型
- ollama相當於平臺,執行需要另外下載模型
- 開啟官網 > 右上角"Models" > 列表中選擇一個模型
- 模型詳情頁中,可以切換模型版本,然後複製程式碼下載模型
- 大部分模型有多個版本,例如"8b"/"70b"/"405b"
# 檢視已下載模型
ollama list
# 拉取模型(在Ollama官網的"Models"模組中)
ollama pull <模型名稱>:<版本>
# 示例
ollama pull qwen2
ollama pull qwen2:0.5b
# 刪除模型
ollama rm <模型名稱>:<版本>
# 示例
ollama rm qwen2
ollama rm qwen2:0.5b
呼叫
cli呼叫
# 開啟對話(未載入的會自動下載模型)
ollama run <模型名稱>:<版本>
# 執行模型,進行問答
ollama run qwen2
>>> Send a message (/? for help)
API呼叫
- 文件:https://github.com/ollama/ollama/blob/main/docs/api.md
- 下方將其中一個介面作為示例,更多介面及詳情看文件
- 也可以參考curl語句使用HTTP客戶端呼叫
# 根據提示詞生成
# POST /api/generate
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "如何呼叫ollama的api?",
"stream": false
}'
# 識圖
curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt": "這張圖片是什麼意思(特定模型才有這個功能,如:llava)",
"images": ["iVBORw0KGgoAA...(base64編碼的圖片)"]
"stream": false
}'
- 對話
- role: 資訊的角色,用於上下文資訊,如"system","user","assistant"
- system: 場景設定
- user: 使用者提問,或使用者提供的資訊
- assistant: 一般是ollama響應,response裡也會有role欄位
- content: 內容
- images: 類似generate介面,使用base64編碼
# 對話
# POST /api/chat
curl http://localhost:11434/api/chat -d '{
"model": "qwen2",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
# 包含上下文(對話歷史)
curl http://localhost:11434/api/chat -d '{
"model": "llama3",
"messages": [
{ "role": "system", "content": "你是小學老師,解答小學生回答的問題,解釋儘量直白,能讓小學生聽懂"},
{ "role": "user", "content": "天空為什麼是藍色的?"},
{ "role": "assistant", "content": "阿巴阿巴..."},
{ "role": "user", "content": "說的簡練一下,然後用英文終結一下"}
]
}'
python呼叫
- 官方Github: https://github.com/ollama/ollama-python
pip install ollama
- 基礎用法
- 對話
- role: 資訊的角色,用於上下文資訊,如"system","user","assistant"
- system: 場景設定
- user: 使用者提問,或使用者提供的資訊
- assistant: 一般是ollama響應,response裡也會有role欄位
- content: 內容
- images: 類似generate介面,使用base64編碼
import ollama
# 設定host
client = ollama.Client(host='http://localhost:11434')
# 拉取映象(通義千問2,0.5b)
client.pull("qwen2:0.5b")
# 檢視所有模型資訊
images = client.list()
print(images)
# 呼叫generate介面
response = client.generate(model='llama3.1', prompt='python中如何呼叫ollama?')
print(response)
# chat介面(包含歷史上下文)
response = client.chat("qwen2:0.5b", messages=[
{"role": "system", "content": "你是小學老師,解答小學生回答的問題,解釋儘量直白,能讓小學生聽懂"},
{"role": "user", "content": "天空為什麼是藍色的?"},
{"role": "assistant", "content": "阿巴阿巴..."},
{"role": "user", "content": "說的簡練一下,然後用英文終結一下"}
])
print(response)
- 多模態(圖片)
- 多模態需要模型支援,如"llava"模型支援圖片解析
- 圖片讀寫均使用base64編碼
import base64
def read_image_as_base64(file_path):
"""讀取圖片,返回base64編碼字元"""
with open(file_path, 'rb') as f:
images_bytes = f.read()
base64_encoded = base64.b64encode(images_bytes)
base64_str = base64_encoded.decode('utf-8')
return base64_str
import ollama
from image_helper import read_image_as_base64
client = ollama.Client(host='http://localhost:11434')
response = client.generate(model="llava", prompt="描述一下這張圖片裡有哪些物體",
images=[read_image_as_base64("./cat.jpg")])
print(response)
js呼叫
- 官方Github: https://github.com/ollama/ollama-js
npm i ollama
import ollama from 'ollama'
const response = await ollama.chat({
model: 'llama3.1',
messages: [{ role: 'user', content: 'Why is the sky blue?' }],
})
console.log(response.message.content)
區域網訪問
- 預設情況下,Ollama服務僅在本地執行,只能本機(localhost/127.0.0.1)訪問,不對外提供服務
- 設定文章(chatbox):https://chatboxai.app/zh/help-center/connect-chatbox-remote-ollama-service-guide
- 設定後,區域網中可以使用IP訪問
Linux
# 修改Ollama配置
systemctl edit ollama.service
# 按下方修改後,重啟服務
systemctl daemon-reload
systemctl restart ollama
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
# 修改埠號拼接到0.0.0.0後面
# Environment="OLLAMA_HOST=0.0.0.0:11434"
Windows
- 在環境變數裡設定OLLAMA_HOST和OLLAMA_ORIGINS
- 重啟Ollama
OLLAMA_HOST=0.0.0.0
OLLAMA_ORIGINS=*
介面
Chatbox
- 官網:https://chatboxai.app/zh
- 設定Ollama訪問地址即可
- Ollama都在本機,直接使用 "http://localhost:11434" 訪問
- Ollama在其他主機時,Ollama需要配置區域網設定,然後使用ip訪問
OpenWebUI
- 官網:https://docs.openwebui.com/
- 開啟"外部連結"設定介面時很卡,發現是後臺在查詢openai介面,耐心等待一會兒
docker run -d -p 3000:8080 --gpus=all --name open-webui ghcr.io/open-webui/open-webui:ollama
# 單open-webui,然後設定ollama地址
docker run -d -p 3000:8080 --name open-webui ghcr.io/open-webui/open-webui:main
# 執行後,進入主頁 > 頭像 > 管理員皮膚 > 設定 > 外部連線 > Ollama API > 地址修改為Ollama地址
# ollama與open-webui同一臺電腦
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway --name open-webui ghcr.io/open-webui/open-webui:main