DeepSeek可以在網(wǎng)頁端使用,但是有些時候可能不是很穩(wěn)定,除了網(wǎng)頁端,也能通過本地部署來使用贾虽。
一、Ollama本地安裝Deepseek R1 模型
Ollama官網(wǎng):https://ollama.com/吼鱼,打開官網(wǎng)蓬豁,然后點擊下載,之后安裝到本地菇肃。但默認從github下載比較慢地粪,可以用這個github加速: https://ghfast.top/
打開網(wǎng)頁并輸入如下下載鏈接:https://github.com/ollama/ollama/releases/latest/download/OllamaSetup.exe
然后點擊下載
按鈕,之后安裝exe文件到本地琐谤,Ollama的大模型默認下到C盤蟆技,對空間占用比較大確保C盤空間夠大。
如何更改斗忌?見后面附錄描述质礼。
官方建議:應該至少有 8 GB 可用 RAM 來運行 7 B 型號,16 GB 來運行 13 B 型號织阳,32 GB 來運行 33 B 型號眶蕉。
然后打開Ollama 的模型列表,搜索到DeepSeek R1唧躲,
https://ollama.com/library/deepseek-r1
像我們普通的電腦安裝1.5B造挽、7B就可以使用,然后在【右上角的的代碼】復制在命令行中運行弄痹。
輸入【
ollama list
】饭入,就可以查看安裝的模型。ollama run deepseek-r1:1.5b
啟動模型肛真,run后面的參數(shù)是上圖的模型名稱谐丢。第一次運行會下載相關的鏡像文件。安裝需要一段時間蚓让,我們等一下就可以等success庇谆,就代表安裝成功。 第二次運行無需下載過程凭疮,直接進入命令行交互頁面饭耳。
測試一下問答效果:
API方式調(diào)用DeepSeek:
curl http://localhost:11434/api/generate -d "{\"model\":\"deepseek-r1:1.5b\", \"prompt\":\"介紹一下大模型在2025年有哪些亮點?\", \"stream\": false}"
接口請求支持 stream 模式执解,上邊這個請求響應 10s 左右寞肖,如果使用 stream 模式,體驗會更好衰腌。
curl http://localhost:11434/api/generate -d "{\"model\":\"deepseek-r1:1.5b\", \"prompt\":\"介紹一下大模型在2025年有哪些亮點新蟆?\", \"stream\": true}"
二、其他命令
ollama serve
Start ollama
運行之后右蕊,訪問 localhost:11434琼稻,查看Ollama是否正常運行:
ollama show deepseek-r1:1.5b
Show information for a model
ollama ps
List running models
ollama stop
Stop a running model
三、Ollama運行本地模型
Ollama 通常支持 GGUF 等格式的模型饶囚,而 .pt
文件一般是 PyTorch 保存的模型文件帕翻,不能直接被 Ollama 使用鸠补。若要使用 Ollama 與本地 .pt
模型進行交互,需要將 .pt
模型轉換為 Ollama 支持的格式嘀掸。
import torch
# 加載 .pt 模型
try:
# 設置 weights_only=True 來加載模型權重
model_pt = torch.load('GuoPT.pt', weights_only=True)
except Exception as e:
print(f"加載模型時出現(xiàn)錯誤: {e}")
# 這里需要根據(jù)具體模型架構和 GGUF 格式要求進行處理
# 例如紫岩,提取模型的權重、偏置等參數(shù)睬塌,并按照 GGUF 格式進行存儲
# 由于 GGUF 格式較為復雜泉蝌,具體實現(xiàn)需要參考相關文檔和規(guī)范
# 保存轉換后的模型
# 這里只是示例,實際保存為 GGUF 格式需要更詳細的處理
torch.save(model_pt, 'converted_model.gguf')
得到轉換后的模型文件揩晴。
3.1 將轉換后的模型添加到 Ollama
轉換完成后勋陪,將轉換后的 GGUF 模型添加到 Ollama 中。在終端中輸入以下命令啟動 Ollama 服務:
ollama serve
創(chuàng)建Modelfile文件:
在你的工作目錄中創(chuàng)建一個名為Modelfile的文本文件(擴展名可以省略)硫兰。在文件中寫入一句話诅愚,指定GGUF模型文件的路徑。例如:FROM ./path/to/your-model.gguf
瞄崇。
創(chuàng)建Ollama模型:打開終端或命令行界面呻粹,運行以下命令來創(chuàng)建Ollama模型:
ollama create my_llama_model -f Modelfile
其中,my_llama_model是你為模型指定的名稱苏研,-f選項后面跟的是Modelfile文件的路徑等浊。
檢查模型是否創(chuàng)建成功:運行以下命令來檢查Ollama中是否已包含你創(chuàng)建的模型:
ollama list
你應該能在列表中看到你的模型名稱。
運行模型:一旦模型創(chuàng)建成功摹蘑,你就可以使用以下命令來運行它:
ollama run my_llama_model
此時筹燕,Ollama將加載你指定的GGUF模型文件,并運行該模型衅鹿。
3.2 使用 Ollama 與模型進行交互
3.2.1 命令行交互
添加模型成功后撒踪,在終端中使用 ollama run
命令與模型進行交互:
ollama run my_converted_model
輸入問題后,按下回車鍵大渤,模型會生成相應的回答制妄。若要結束交互意推,按下 Ctrl + C
碑韵。
3.2.2 API 交互
也可以通過 API 的方式與模型進行交互誊垢,以下是一個 Python 示例:
import requests
url = "http://localhost:11434/api/generate"
data = {
"model": "my_converted_model",
"prompt": "請介紹一下人工智能",
"stream": False
}
response = requests.post(url, json=data)
if response.status_code == 200:
result = response.json()
print(result["response"])
else:
print(f"請求失敗鬓椭,狀態(tài)碼: {response.status_code}")
3.2.3 Web頁面交互
Ollama有個開源的WebUI,但是需要安裝Node.js吹由、Docker等川抡。索性自己寫了一個輕量級的前端頁面與DeepSeek R1交互(實質是與Ollama的API進行交互沸伏,API的入?yún)⒅付P兔Q)较曼。
如果頁面直接請求http://localhost:11434/api/generate
會有跨域問題磷斧,后端會拒絕頁面請求。由于我們無法修改Ollama的代碼,結合上面我們通過Python代碼調(diào)用正常弛饭,我們用Python寫個代理服務器冕末,讓頁面請求代理(下述代碼執(zhí)行了CORS(app) # 允許所有來源的跨域請求),代理再請求后端API孩哑。
使用 Flask 包裝 Ollama 的 API栓霜,代理服務器文件名:OllamaProxy.py翠桦,具體代碼:
from flask import Flask, request, jsonify
from flask_cors import CORS
import requests
app = Flask(__name__)
CORS(app) # 允許所有來源的跨域請求
@app.route('/api/generate', methods=['POST'])
def generate():
data = request.get_json()
url = "http://localhost:11434/api/generate"
response = requests.post(url, json=data)
if response.status_code == 200:
result = response.json()
return jsonify(result)
else:
return jsonify({"error": f"請求失敗横蜒,狀態(tài)碼: {response.status_code}"}), response.status_code
if __name__ == '__main__':
app.run(host='localhost', port=5000) # 可以選擇不同的端口
啟動代理服務器:python OllamaProxy.py
。
JS代碼:
// 獲取 DOM 元素
const chatContainer = document.getElementById('chat-container');
const userInput = document.getElementById('user-input');
const sendButton = document.getElementById('send-button');
// 發(fā)送消息的函數(shù)
function sendMessage() {
const message = userInput.value.trim();
if (message === '') return;
// 顯示用戶輸入的消息
displayMessage(message, 'user');
// 清空輸入框
userInput.value = '';
// 構建請求數(shù)據(jù)
const data = {
model: "deepseek-r1:7b",
prompt: message,
stream: false
};
// 發(fā)送 POST 請求到后端 API
fetch("http://localhost:5000/api/generate", {
method: 'POST',
// mode: 'no-cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => {
if (!response.ok) {
throw new Error(`請求失敗销凑,狀態(tài)碼: ${response.statusCode}`);
}
return response.json();
})
.then(result => {
// 顯示大模型的響應消息
displayMessage(result.response, 'bot');
})
.catch(error => {
// 顯示錯誤消息
displayMessage(error.message, 'bot');
});
}
// 顯示消息的函數(shù)
function displayMessage(message, sender) {
const messageElement = document.createElement('div');
messageElement.classList.add(`${sender}-message`);
messageElement.textContent = message;
chatContainer.appendChild(messageElement);
// 滾動到最新消息
chatContainer.scrollTop = chatContainer.scrollHeight;
}
// 為發(fā)送按鈕添加點擊事件監(jiān)聽器
sendButton.addEventListener('click', sendMessage);
// 為輸入框添加按鍵事件監(jiān)聽器丛晌,當按下回車鍵時發(fā)送消息
userInput.addEventListener('keydown', function (event) {
if (event.key === 'Enter') {
sendMessage();
}
});
Html代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>大模型交互界面</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
#chat-container {
width: 400px;
border: 1px solid #ccc;
border-radius: 5px;
padding: 10px;
margin-bottom: 20px;
max-height: 400px;
overflow-y: auto;
}
#input-container {
display: flex;
width: 400px;
}
#user-input {
flex: 1;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px 0 0 5px;
}
#send-button {
padding: 10px 20px;
background-color: #007BFF;
color: white;
border: none;
border-radius: 0 5px 5px 0;
cursor: pointer;
}
#send-button:hover {
background-color: #0056b3;
}
.user-message {
background-color: #e0f7fa;
padding: 8px;
margin: 5px 0;
border-radius: 5px;
text-align: right;
}
.bot-message {
background-color: #f1f8e9;
padding: 8px;
margin: 5px 0;
border-radius: 5px;
text-align: left;
}
</style>
</head>
<body>
<div id="chat-container">
<!-- 聊天消息將顯示在這里 -->
</div>
<div id="input-container">
<input type="text" id="user-input" placeholder="輸入你的問題">
<button id="send-button">發(fā)送</button>
</div>
<script src="script.js"></script>
</body>
</html>
js和html文件在同一目錄,結構如下:
使用瀏覽器打開本地的index.html頁面進行交互斗幼。
四澎蛛、附錄
在 Ollama 中,你可以通過設置環(huán)境變量來修改模型的下載位置蜕窿。以下是詳細的步驟和示例:
步驟
關閉正在運行的 Ollama 服務:在修改模型下載位置之前谋逻,需要先確保 Ollama 服務沒有在運行,避免出現(xiàn)沖突桐经。
設置環(huán)境變量:通過設置
OLLAMA_MODELS
環(huán)境變量來指定模型的下載位置毁兆。不同的操作系統(tǒng)設置環(huán)境變量的方法有所不同,下面分別介紹阴挣。
在 Linux 或 macOS 系統(tǒng)上
你可以通過以下幾種方式設置環(huán)境變量:
臨時設置(當前終端會話有效):
打開終端气堕,輸入以下命令,將 /new/path/to/models
替換為你想要的模型存儲路徑:
export OLLAMA_MODELS=/new/path/to/models
然后啟動 Ollama 服務:
ollama serve
在這個終端會話中畔咧,Ollama 會將模型下載到你指定的新路徑茎芭。
永久設置:
如果你希望每次啟動系統(tǒng)時都自動設置該環(huán)境變量,可以將設置命令添加到 shell 的配置文件中誓沸。例如梅桩,對于大多數(shù) Linux 用戶和 macOS 用戶,如果你使用的是 Bash shell拜隧,可以編輯 ~/.bashrc
文件宿百;如果你使用的是 Zsh shell,可以編輯 ~/.zshrc
文件虹蓄。
echo 'export OLLAMA_MODELS=/new/path/to/models' >> ~/.bashrc # 對于 Bash
# 或者
echo 'export OLLAMA_MODELS=/new/path/to/models' >> ~/.zshrc # 對于 Zsh
然后使配置文件生效:
source ~/.bashrc # 對于 Bash
# 或者
source ~/.zshrc # 對于 Zsh
最后啟動 Ollama 服務:
ollama serve
在 Windows 系統(tǒng)上
臨時設置(當前命令提示符會話有效):
打開命令提示符犀呼,輸入以下命令,將 C:\new\path\to\models
替換為你想要的模型存儲路徑:
set OLLAMA_MODELS=C:\new\path\to\models
然后啟動 Ollama 服務:
ollama serve
永久設置:
你可以通過系統(tǒng)的環(huán)境變量設置界面來永久設置 OLLAMA_MODELS
環(huán)境變量薇组。步驟如下:
- 右鍵點擊“此電腦”外臂,選擇“屬性”。
- 點擊“高級系統(tǒng)設置”律胀。
- 在“系統(tǒng)屬性”窗口中宋光,點擊“環(huán)境變量”按鈕貌矿。
- 在“系統(tǒng)變量”部分,點擊“新建”罪佳。
- 在“變量名”輸入框中輸入
OLLAMA_MODELS
逛漫,在“變量值”輸入框中輸入你想要的模型存儲路徑,例如C:\new\path\to\models
赘艳。 - 點擊“確定”保存設置酌毡。
- 重新打開命令提示符,啟動 Ollama 服務:
ollama serve
-
下載模型:設置好環(huán)境變量并啟動 Ollama 服務后蕾管,當你使用
ollama pull
命令下載模型時枷踏,模型將被下載到你指定的新位置。例如:
ollama pull llama2
通過以上步驟掰曾,你就可以成功修改 Ollama 下載模型的位置旭蠕。