WeHelp
Ollama 是免費且開源的本地大型語言模型(LLM)運行框架。可以下載、安裝、執行各種開源 AI 模型。
  1. 簡介、用途說明
  2. 下載、安裝、快速使用
  3. 模型管理功能
  4. LLM API 串接
  5. Embed API 串接
LLM API 串接
以下示範如何使用 Python 串接本地端的 Ollama API。Ollama 預設會在以下網址提供 API: ```text http://localhost:11434 ``` ## 一、事前準備 ### 1. 安裝並啟動 Ollama 安裝 Ollama 後,確認服務已啟動: ```bash ollama serve ``` 有些作業系統安裝後會自動啟動服務。 ### 2. 下載模型 例如下載 `llama3.2`: ```bash ollama pull llama3.2 ``` 也可以先直接測試: ```bash ollama run llama3.2 ``` ### 3. 安裝 Python 套件 以下範例使用 `requests`: ```bash pip install requests ``` --- # 範例一:使用 `/api/generate` 產生文字 `/api/generate` 適合單次提示,例如請模型摘要、翻譯或回答一個問題。 ```python import requests url = "http://localhost:11434/api/generate" payload = { "model": "llama3.2", "prompt": "請用繁體中文簡單說明什麼是 Python。", "stream": False } try: response = requests.post(url, json=payload, timeout=120) response.raise_for_status() result = response.json() print("模型回答:") print(result["response"]) except requests.exceptions.ConnectionError: print("無法連線到 Ollama,請確認 Ollama 服務是否已啟動。") except requests.exceptions.Timeout: print("請求逾時,模型可能需要較長的處理時間。") except requests.exceptions.HTTPError as error: print("API 發生錯誤:", error) ``` ### 重要參數 ```python { "model": "llama3.2", "prompt": "你的問題", "stream": False } ``` - `model`:使用的模型名稱。 - `prompt`:傳送給模型的提示內容。 - `stream`:是否採用串流回傳。設為 `False` 時,會等模型完成後一次回傳完整結果。 API 回傳結果大致如下: ```json { "model": "llama3.2", "response": "Python 是一種高階、直譯式的程式語言……", "done": true } ``` --- # 範例二:使用 `/api/chat` 進行對話 `/api/chat` 適合具有上下文的聊天情境,可以傳入多筆訊息。 ```python import requests url = "http://localhost:11434/api/chat" payload = { "model": "llama3.2", "messages": [ { "role": "system", "content": "你是一位友善的 Python 教學助手。" }, { "role": "user", "content": "請解釋 Python 中 list 和 tuple 的差異。" } ], "stream": False } try: response = requests.post(url, json=payload, timeout=120) response.raise_for_status() result = response.json() print("模型回答:") print(result["message"]["content"]) except requests.exceptions.ConnectionError: print("無法連線到 Ollama,請確認 Ollama 服務是否已啟動。") except requests.exceptions.Timeout: print("請求逾時。") except requests.exceptions.HTTPError as error: print("API 發生錯誤:", error) ``` ### `messages` 的角色 常見角色如下: ```python [ { "role": "system", "content": "設定模型的行為" }, { "role": "user", "content": "使用者的問題" }, { "role": "assistant", "content": "模型先前的回答" } ] ``` API 回傳結果大致如下: ```json { "model": "llama3.2", "message": { "role": "assistant", "content": "list 可以修改,而 tuple 通常不可修改……" }, "done": true } ``` 因此,可以透過以下方式取得回答: ```python answer = result["message"]["content"] ``` --- ## 將對話記錄保留下來 如果要進行多輪對話,可以把每次的使用者問題和模型回答加入 `messages`: ```python import requests url = "http://localhost:11434/api/chat" messages = [ { "role": "system", "content": "你是一位 Python 助手,請使用繁體中文回答。" } ] while True: user_input = input("你:") if user_input.lower() in ["exit", "quit"]: break messages.append({ "role": "user", "content": user_input }) payload = { "model": "llama3.2", "messages": messages, "stream": False } response = requests.post(url, json=payload, timeout=120) response.raise_for_status() result = response.json() answer = result["message"]["content"] print("Ollama:", answer) messages.append({ "role": "assistant", "content": answer }) ``` 這樣每次請求都會帶上先前的對話內容,模型就能維持基本的上下文。 ## 常見問題 ### 無法連線到 `localhost:11434` 確認 Ollama 是否正在執行: ```bash ollama serve ``` 也可以測試: ```bash curl http://localhost:11434/api/tags ``` ### 找不到模型 確認模型名稱與已安裝的模型一致: ```bash ollama list ``` 例如使用: ```python "model": "llama3.2" ``` ### API 是否需要 API Key? Ollama 在本地端預設通常不需要 API Key。若 Ollama 被設定為遠端服務或經過反向代理,則可能需要額外設定驗證機制。
相關學習地圖、教學課程
Python 人工智慧
建議完成「Python 資料工程」教程後,繼續學習以下課程。