關注TechLead,復旦AI博士,分享AI領域全維度知識與研究。擁有10+年AI領域研究經驗、復旦機器人智慧實驗室成員,國家級大學生賽事評審專家,發表多篇SCI核心期刊學術論文,上億營收AI產品研發負責人。
利用Ollama本地LLM(大語言模型)搭建AI的REST API服務是一個實用的方法。下面是一個簡單的工作流程。
1. 安裝Ollama和LLMs
首先,在本地機器上安裝Ollama和本地LLMs。Ollama可以幫助你輕鬆地在本地部署LLMs,並讓它們更方便地處理各種任務。
安裝 Ollama
Ollama安裝介面
Ollama下載頁面
安裝應用檔案
為Ollama安裝LLMs
ollama pull llama3
ollama run llama3
下載並執行llama3
在本地與llama3對話
Ollama命令
可用的命令:
/set 設定會話變數
/show 顯示模型資訊
/bye 退出
/?, /help 幫助命令
使用 "" 開始多行訊息
測試Ollama
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "為什麼天空是藍色的?",
"stream": true
}'
如果stream
設定為false,響應將是一個完整的JSON物件。
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "為什麼天空是藍色的?",
"stream": false
}'
2. 設定FastAPI
接下來,設定一個Python的FastAPI應用。FastAPI是一個現代、快速(高效能)的Web框架,基於標準的Python型別提示,支援Python 3.7及以上版本。它是構建穩健高效API的理想選擇。
編寫FastAPI的路由和端點,以便與Ollama伺服器進行互動。這個過程包括髮送請求給Ollama以處理任務,比如文字生成、語言理解或其他LLM支援的AI任務。以下是一個簡單的程式碼示例(你也可以使用 Ollama Python庫 來最佳化程式碼)。
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
import json
import requests
app = FastAPI(debug=True)
class Itemexample(BaseModel):
name: str
prompt: str
instruction: str
is_offer: Union[bool, None] = None
class Item(BaseModel):
model: str
prompt: str
urls = ["http://localhost:11434/api/generate"]
headers = {
"Content-Type": "application/json"
}
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.post("/chat/{llms_name}")
def update_item(llms_name: str, item: Item):
if llms_name == "llama3":
url = urls[0]
payload = {
"model": "llama3",
"prompt": "為什麼天空是藍色的?",
"stream": False
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
return {"data": response.text, "llms_name": llms_name}
else:
print("錯誤:", response.status_code, response.text)
return {"item_name": item.model, "error": response.status_code, "data": response.text}
return {"item_name": item.model, "llms_name": llms_name}
測試REST-API服務
curl --location 'http://127.0.0.1:8000/chat/llama3' \
--header 'Content-Type: application/json' \
--data '{
"model": "llama3",
"prompt": "為什麼天空是藍色的?"
}'
透過API傳送Curl請求
API日誌
3. 部署
當你對REST API的功能和效能感到滿意後,可以將此服務部署到生產環境。這可能涉及將其部署到雲平臺、使用Docker進行容器化,或者在伺服器上部署。
在這個簡單的示例中,我們透過使用Ollama進行本地LLM部署並結合FastAPI構建REST API伺服器,建立了一個免費的AI服務解決方案。你可以透過自己的訓練資料對模型進行微調以實現定製用途(我們將在未來討論)。
本文由部落格一文多發平臺 OpenWrite 釋出!