Ollama API 應用指南

在這里插入圖片描述

1. 基礎信息
  • 默認地址: http://localhost:11434/api
  • 數據格式: application/json
  • 支持方法: POST(主要)、GET(部分接口)

2. 模型管理 API

(1) 列出本地模型
  • 端點: GET /api/tags
  • 功能: 獲取已下載的模型列表。
  • 示例:
    curl http://localhost:11434/api/tags
    
    import requests
    response = requests.get("http://localhost:11434/api/tags")
    print(response.json()["models"])
    
(2) 拉取模型
  • 端點: POST /api/pull
  • 參數:
    • name: 模型名稱(必需,如 llama3:8b
    • stream: 是否流式顯示進度(默認 true
    • insecure: 是否跳過 TLS 驗證(默認 false
  • 示例:
    curl http://localhost:11434/api/pull -d '{"name": "mistral"}'
    
    response = requests.post("http://localhost:11434/api/pull",json={"name": "mistral", "stream": False}
    )
    
(3) 刪除模型
  • 端點: DELETE /api/delete
  • 參數: name(模型名稱)
  • 示例:
    curl -X DELETE http://localhost:11434/api/delete -d '{"name": "llama2"}'
    
    response = requests.delete("http://localhost:11434/api/delete",json={"name": "llama2"}
    )
    
(4) 創建自定義模型
  • 端點: POST /api/create
  • 參數: name(模型名)、modelfile(模型配置內容)
  • 示例:
    curl http://localhost:11434/api/create -d '{"name": "my-llama","modelfile": "FROM llama3\nSYSTEM 你是一個法律助手"
    }'
    

3. 文本生成與交互

(1) 生成文本 (/api/generate)
  • 參數:
    {"model": "模型名","prompt": "輸入文本","system": "系統提示(可選)","template": "模板(覆蓋默認提示格式)","context": [數組,歷史上下文ID],"stream": false,"options": {"temperature": 0.8,"top_p": 0.9,"max_tokens": 1000,"num_ctx": 4096}
    }
    
  • 響應:
    {"model": "模型名","response": "生成文本","context": [新的上下文ID],"done": true
    }
    
  • Python 流式處理:
    response = requests.post("http://localhost:11434/api/generate",json={"model": "llama3", "prompt": "寫一篇科幻小說開頭", "stream": True},stream=True
    )
    for line in response.iter_lines():if line:print(json.loads(line)["response"], end="", flush=True)
    
(2) 多輪對話 (/api/chat)
  • 參數:
    {"model": "模型名","messages": [{"role": "user", "content": "內容1"},{"role": "assistant", "content": "內容2"}],"stream": false
    }
    
  • 響應:
    {"message": {"role": "assistant", "content": "回復內容"},"context": [上下文ID]
    }
    
  • Python 示例:
    messages = [{"role": "user", "content": "如何學習Python?"},{"role": "assistant", "content": "先掌握基礎語法。"},{"role": "user", "content": "推薦一本書?"}
    ]
    response = requests.post("http://localhost:11434/api/chat",json={"model": "llama3", "messages": messages}
    )
    print(response.json()["message"]["content"])
    

4. 嵌入向量 (/api/embeddings)

  • 參數:
    {"model": "模型名","prompt": "輸入文本","options": {"temperature": 0.5}  # 可選參數
    }
    
  • 響應:
    {"embedding": [0.1, -0.2, ...]  # 浮點數數組
    }
    
  • Python 示例:
    response = requests.post("http://localhost:11434/api/embeddings",json={"model": "llama3", "prompt": "自然語言處理"}
    )
    vector = response.json()["embedding"]
    

5. 高級功能與參數

(1) 上下文延續
  • 在生成請求中傳遞 context 數組以維持對話狀態:
    response1 = requests.post("/api/generate", json={"model": "llama3", "prompt": "你好"})
    context = response1.json()["context"]response2 = requests.post("/api/generate",json={"model": "llama3", "prompt": "繼續上文", "context": context}
    )
    
(2) 性能調優參數
  • options 字段支持以下關鍵參數:
    {"num_ctx": 4096,      // 上下文窗口大小"num_gqa": 8,         // Grouped-Query Attention 組數"num_gpu": 1,         // GPU 層數(僅限支持GPU的模型)"main_gpu": 0,        // 主 GPU 索引"temperature": 0.7,   // 隨機性(0-1)"repeat_penalty": 1.1 // 抑制重復生成
    }
    

6. 錯誤處理

  • 常見狀態碼:
    • 400: 請求參數錯誤
    • 404: 模型不存在
    • 500: 服務器內部錯誤
  • 錯誤響應格式:
    {"error": "錯誤描述"
    }
    

7. 完整 Python 客戶端示例

import ollama# 生成文本
response = ollama.generate(model='llama3', prompt='用一句話解釋人工智能',options={'temperature': 0.5}
)
print(response['response'])# 流式對話
stream = ollama.chat(model='llama3',messages=[{'role': 'user', 'content': '寫一首五言絕句'}],stream=True
)
for chunk in stream:print(chunk['message']['content'], end='', flush=True)# 獲取嵌入向量
embedding = ollama.embeddings(model='llama3', prompt='深度學習')
print(embedding['embedding'][:5])  # 打印前5維

8. 注意事項

  1. 模型兼容性

    • 不同模型支持的參數可能不同(如 GPU 加速需模型編譯時啟用 CUDA)。
  2. 長上下文處理

    • 增大 num_ctx 可能導致內存不足,建議逐步測試。
  3. 流式傳輸優化

    • 使用 stream=True 時,客戶端需逐塊處理數據以減少延遲。
  4. 自定義模型集成

    • 通過 Modelfile 創建的模型可直接通過 API 調用(model: 自定義模型名)。

通過此指南,可全面掌握 Ollama API 的核心功能,適用于開發聊天機器人、自動化腳本、語義分析等多種場景。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80209.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80209.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80209.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【OSCP-vulnhub】Raven-2

目錄 端口掃描 本地/etc/hosts文件解析 目錄掃描: 第一個flag 利用msf下載exp flag2 flag3 Mysql登錄 查看mysql的運行權限 MySql提權:UDF 查看數據庫寫入條件 查看插件目錄 查看是否可以遠程登錄 gcc編譯.o文件 創建so文件 創建臨時監聽…

Podman Desktop:現代輕量容器管理利器(Podman與Docker)

前言 什么是 Podman Desktop? Podman Desktop 是基于 Podman CLI 的圖形化開源容器管理工具,運行在 Windows(或 macOS)上,默認集成 Fedora Linux(WSL 2 環境)。它提供與 Docker 類似的使用體驗…

極狐GitLab 權限和角色如何設置?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 權限和角色 (BASIC ALL) 將用戶添加到項目或群組時,您可以為他們分配角色。該角色決定他們在極狐GitLab 中可以執…

解鎖現代生活健康密碼,開啟養生新方式

在科技飛速發展的當下,我們享受著便捷生活,卻也面臨諸多健康隱患。想要維持良好狀態,不妨從這些細節入手,解鎖科學養生之道。? 腸道是人體重要的消化器官,也是最大的免疫器官,養護腸道至關重要。日常可多…

Kafka 主題設計與數據接入機制

一、前言:萬物皆流,Kafka 是入口 在構建實時數倉時,Kafka 既是 數據流動的起點,也是后續流處理系統(如 Flink)賴以為生的數據源。 但“消息進來了” ≠ “你就能處理好了”——不合理的 Topic 設計、接入方…

【繪制圖像輪廓|凸包特征檢測】圖像處理(OpenCV) -part7

15 繪制圖像輪廓 15.1 什么是輪廓 輪廓是一系列相連的點組成的曲線,代表了物體的基本外形。相對于邊緣,輪廓是連續的,邊緣不一定連續,如下圖所示。輪廓是一個閉合的、封閉的形狀。 輪廓的作用: 形狀分析 目標識別 …

uniapp中使用<cover-view>標簽

文章背景&#xff1a; uniapp中遇到了原生組件(canvas)優先級過高覆蓋vant組件 解決辦法&#xff1a; 使用<cover-view>標簽 踩坑&#xff1a; 我想實現的是一個vant組件庫中動作面板的效果&#xff0c;能夠從底部彈出框&#xff0c;讓用戶進行選擇&#xff0c;我直…

Kafka常見問題及解決方案

Kafka 是一個強大的分布式流處理平臺&#xff0c;廣泛用于高吞吐量的數據流處理&#xff0c;但在實際使用過程中&#xff0c;也會遇到一些常見問題。以下是一些常見的 Kafka 問題及其對應的解決辦法的詳細解答&#xff1a; 消息丟失 一、原因 1.生產端 網絡故障、生產者超時…

leetcode 二分查找應用

34. Find First and Last Position of Element in Sorted Array 代碼&#xff1a; class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {int low lowwer_bound(nums,target);int high upper_bound(nums,target);if(low high…

【Docker】在容器中使用 NVIDIA GPU

解決容器 GPU 設備映射問題&#xff0c;實現 AI 應用加速 &#x1f517; 官方文檔&#xff1a;NVIDIA Container Toolkit GitHub 常見錯誤排查 若在運行測試容器時遇到以下錯誤&#xff1a; docker: Error response from daemon: could not select device driver ""…

通過Quartus II實現Nios II編程

目錄 一、認識Nios II二、使用Quartus II 18.0Lite搭建Nios II硬件部分三、軟件部分四、運行項目 一、認識Nios II Nios II軟核處理器簡介 Nios II是Altera公司推出的一款32位RISC嵌入式處理器&#xff0c;專門設計用于在FPGA上運行。作為軟核處理器&#xff0c;Nios II可以通…

JAVA設計模式——(三)橋接模式

JAVA設計模式——&#xff08;三&#xff09;橋接模式&#xff08;Bridge Pattern&#xff09; 介紹理解實現武器抽象類武器實現類涂裝顏色的行為接口具體顏色的行為實現讓行為影響武器修改武器抽象類修改實現類 測試 適用性 介紹 將抽象和實現解耦&#xff0c;使兩者可以獨立…

k8s 證書相關問題

1.重新生成新證書 kubeadm init phase certs apiserver-etcd-client --config ~/kubeadm.yaml這個命令表示生成 kube-apiserver 連接 etcd 使用的證書,生成后如下 -rw------- 1 root root 1.7K Apr 23 16:35 apiserver-etcd-client.key -rw-r--r-- 1 root root 1.2K Apr 23 …

比較:AWS VPC peering與 AWS Transit Gateway

簡述: VPC 對等連接和 Transit Gateway 用于連接多個 VPC。VPC 對等連接提供全網狀架構,而 Transit Gateway 提供中心輻射型架構。Transit Gateway 提供大規模 VPC 連接,并簡化了 VPC 間通信管理,相比 VPC 對等連接,支持大量 VPC 的 VPC 間通信管理。 VPC 對等連接 AWS V…

制造企業PLM深度應用:2025年基于PDCA循環的7項持續改進指標

制造企業的產品生命周期管理&#xff08;PLM&#xff09;在數字化轉型的浪潮中扮演著至關重要的角色。PLM深度應用不僅能夠提升產品研發效率、保證產品質量&#xff0c;還能增強企業在市場中的競爭力。隨著2025年智能制造目標的推進&#xff0c;基于PDCA循環的持續改進對于PLM的…

極狐GitLab 的壓縮和合并是什么?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 壓縮和合并 (BASIC ALL) 在你處理一個特性分支時&#xff0c;通常會創建一些小的、獨立的提交。這些小提交幫助描述構建特性…

解耦舊系統的利器:Java 中的適配器模式(Adapter Pattern)實戰解析

在現代軟件開發中&#xff0c;我們經常需要與舊系統、第三方庫或不一致接口打交道。這時候&#xff0c;如果能優雅地整合這些不兼容組件&#xff0c;又不破壞原有結構&#xff0c;就需要一位“翻譯官” —— 適配器模式。本文將通過 Java 實例&#xff0c;詳細講解適配器模式的…

03-谷粒商城筆記

一個插件的install和生命周期的報錯是不一樣的 Maven找不到ojdbc6和sqljdbc4依賴包 這時候我找到了jar包&#xff0c;然后我就先找到一個jar安裝到了本地倉庫。 在終端上進行命令了&#xff1a; mvn install:install-file -DfileD:\ojdbc6-11.2.0.4.jar -DgroupIdcom.oracle …

黑馬點評redis改 part 5

達人探店 發布探店筆記 那第一張表block表它里邊的結構呢是這個 首先呢第一個字段是i d&#xff0c;就是主鍵&#xff0c;第二個呢是shop id&#xff0c;就是商戶你發的這個比例啊&#xff0c;它是跟哪個商戶有關系的。第三個呢用戶id就是誰發的這篇筆記&#xff0c;第四個呢標…

【PCB工藝】運放電路中的負反饋機制

通過運算方法器電路設計詳細解釋負反饋機制&#xff08;Negative Feedback&#xff09; 負反饋 是控制系統、電子電路、神經系統等多個領域中非常核心的概念。特別在運算放大器&#xff08;Op-Amp&#xff09;電路中&#xff0c;負反饋是實現精確控制和高穩定性的關鍵機制。 …