最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用Ollama本地大模型API的完全指南

 更新時(shí)間:2026年03月06日 08:54:39   作者:大尚來(lái)也  
Ollama?是一個(gè)開(kāi)源工具,允許開(kāi)發(fā)者在本地輕松運(yùn)行主流大語(yǔ)言模型,這篇文章主要介紹了Python調(diào)用Ollama本地大模型API的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

Ollama 是一個(gè)開(kāi)源工具,允許開(kāi)發(fā)者在本地輕松運(yùn)行 Llama、Mistral、Gemma 等主流大語(yǔ)言模型(LLM)。它不僅提供命令行交互,還內(nèi)置了 HTTP API 服務(wù),使得我們可以通過(guò) Python 等編程語(yǔ)言遠(yuǎn)程調(diào)用本地模型,實(shí)現(xiàn)私有化、低延遲、無(wú)網(wǎng)絡(luò)依賴的 AI 應(yīng)用開(kāi)發(fā)。

本文將手把手教你如何在 Python 中通過(guò) HTTP 請(qǐng)求調(diào)用 Ollama 的 API,完成文本生成、對(duì)話交互等任務(wù)。

一、前提準(zhǔn)備

安裝并啟動(dòng) Ollama

1.官網(wǎng)下載安裝

2.安裝后,在終端運(yùn)行:

ollama run llama3  # 或 mistral、gemma、qwen 等

3.首次運(yùn)行會(huì)自動(dòng)下載模型(需聯(lián)網(wǎng)),之后即可離線使用。

重要:Ollama 默認(rèn)啟動(dòng)一個(gè)本地 HTTP 服務(wù)(http://localhost:11434),即使你只運(yùn)行 ollama run,API 也會(huì)在后臺(tái)可用。

二、Ollama API 簡(jiǎn)介

Ollama 提供了簡(jiǎn)潔的 RESTful API,核心接口為:

  • POST /api/generate:用于單輪文本生成(非對(duì)話)
  • POST /api/chat:用于多輪對(duì)話(推薦用于聊天場(chǎng)景)

本文以 /api/chat 為主,更貼近實(shí)際應(yīng)用。

三、Python 調(diào)用示例(使用 requests)

首先安裝依賴(如未安裝):

pip install requests

示例 1:基礎(chǔ)對(duì)話(單輪)

import requests
import json

def chat_with_ollama(prompt: str, model: str = "llama3") -> str:
    url = "http://localhost:11434/api/chat"
    payload = {
        "model": model,
        "messages": [{"role": "user", "content": prompt}],
        "stream": False  # 關(guān)閉流式響應(yīng),獲取完整結(jié)果
    }
    response = requests.post(url, json=payload)
    if response.status_code == 200:
        result = response.json()
        return result["message"]["content"]
    else:
        raise Exception(f"請(qǐng)求失敗: {response.text}")

# 使用示例
answer = chat_with_ollama("你好!你能介紹一下自己?jiǎn)幔?)
print(answer)

示例 2:多輪對(duì)話(帶上下文)

def multi_turn_chat():
    messages = []
    model = "mistral"  # 可替換為你本地已安裝的模型
    
    while True:
        user_input = input("你: ")
        if user_input.lower() in ["退出", "quit", "exit"]:
            break
            
        messages.append({"role": "user", "content": user_input})
        
        resp = requests.post(
            "http://localhost:11434/api/chat",
            json={
                "model": model,
                "messages": messages,
                "stream": False
            }
        )
        
        if resp.ok:
            reply = resp.json()["message"]["content"]
            print(f"AI: {reply}")
            messages.append({"role": "assistant", "content": reply})
        else:
            print("出錯(cuò)了:", resp.text)
            break

# 啟動(dòng)對(duì)話
multi_turn_chat()

四、關(guān)鍵參數(shù)說(shuō)明

參數(shù)說(shuō)明
model模型名稱,必須是你本地已通過(guò) ollama pull 或 run 下載的(如 llama3, qwen:7b, gemma:2b)
messages對(duì)話歷史,格式為 [{"role": "user/assistant", "content": "..."}]
stream是否啟用流式輸出。設(shè)為 True 時(shí)需逐塊解析響應(yīng)(適合 Web 實(shí)時(shí)展示),F(xiàn)alse 則返回完整結(jié)果
options可選,用于設(shè)置 temperature、max_tokens 等(見(jiàn)下文)

添加生成參數(shù)(如溫度、最大長(zhǎng)度)

payload = {
    "model": "llama3",
    "messages": [{"role": "user", "content": "寫(xiě)一首詩(shī)"}],
    "stream": False,
    "options": {
        "temperature": 0.7,
        "num_predict": 100,      # 最大生成 token 數(shù)
        "top_p": 0.9
    }
}

五、常見(jiàn)問(wèn)題排查

問(wèn)題 1:Connection refused或無(wú)法連接

  • 原因:Ollama 服務(wù)未運(yùn)行
  • 解決:確保終端中已運(yùn)行 ollama serve 或至少執(zhí)行過(guò)一次 ollama run xxx

問(wèn)題 2:model not found

  • 原因:指定的模型未下載
  • 解決:先在終端執(zhí)行 ollama pull llama3(替換為你想用的模型)

問(wèn)題 3:響應(yīng)慢或卡住

  • 嘗試關(guān)閉 stream(設(shè)為 False
  • 檢查模型是否過(guò)大(如 70B 模型需高性能 GPU)

六、進(jìn)階:流式響應(yīng)(Stream)

若需實(shí)時(shí)輸出(如打字機(jī)效果),可啟用流式模式:

def stream_chat(prompt: str, model: str = "llama3"):
    url = "http://localhost:11434/api/chat"
    payload = {
        "model": model,
        "messages": [{"role": "user", "body": prompt}],
        "stream": True
    }
    with requests.post(url, json=payload, stream=True) as r:
        for line in r.iter_lines():
            if line:
                chunk = json.loads(line)
                if "message" in chunk:
                    print(chunk["message"]["content"], end="", flush=True)
    print()  # 換行

注意:流式響應(yīng)返回的是 JSON Lines(每行一個(gè) JSON 對(duì)象),需逐行解析。

七、總結(jié)

通過(guò) Ollama 的 HTTP API,Python 開(kāi)發(fā)者可以:

  • 在本地安全、私有地調(diào)用大模型;
  • 構(gòu)建離線 AI 應(yīng)用(如智能客服、文檔摘要、代碼助手);
  • 無(wú)縫集成到 Flask/FastAPI/Web 應(yīng)用中。

核心優(yōu)勢(shì)

  • 無(wú)需聯(lián)網(wǎng)
  • 支持多種開(kāi)源模型
  • API 簡(jiǎn)潔易用
  • 完全免費(fèi) & 開(kāi)源

提示:Ollama 還支持自定義 Modelfile 微調(diào)提示詞,進(jìn)一步提升模型表現(xiàn)。

現(xiàn)在,你已經(jīng)掌握了在 Python 中調(diào)用 Ollama 的全部基礎(chǔ)知識(shí)??烊ピ囋囉帽镜?LLM 構(gòu)建你的第一個(gè) AI 應(yīng)用吧!

到此這篇關(guān)于Python調(diào)用Ollama本地大模型API的完全指南的文章就介紹到這了,更多相關(guān)Python調(diào)用Ollama API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

郑州市| 宣汉县| 临安市| 布拖县| 平原县| 江口县| 台山市| 涟水县| 济阳县| 黄山市| 大庆市| 锡林郭勒盟| 昌平区| 古交市| 郧西县| 余江县| 威宁| 贡觉县| 永德县| 卢湾区| 望谟县| 大丰市| 丰县| 苏尼特右旗| 渝北区| 诸城市| 四平市| 应城市| 林口县| 平江县| 休宁县| 韶山市| 祁连县| 西乌珠穆沁旗| 河曲县| 鄄城县| 五峰| 松江区| 靖州| 湾仔区| 山阴县|