Ollama API 应用指南

1. 基础信息
- 默认地址:
http://localhost:11434/api - 数据格式:
application/json - 支持方法:
POST(主要)、GET(部分接口)
2. 模型管理 API
(1) 列出本地模型
- 端点:
GET /api/tags - 功能: 获取已下载的模型列表。
- 示例:
curl http://localhost:11434/api/tagsimport 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. 注意事项
-
模型兼容性
- 不同模型支持的参数可能不同(如 GPU 加速需模型编译时启用 CUDA)。
-
长上下文处理
- 增大
num_ctx可能导致内存不足,建议逐步测试。
- 增大
-
流式传输优化
- 使用
stream=True时,客户端需逐块处理数据以减少延迟。
- 使用
-
自定义模型集成
- 通过
Modelfile创建的模型可直接通过 API 调用(model: 自定义模型名)。
- 通过
通过此指南,可全面掌握 Ollama API 的核心功能,适用于开发聊天机器人、自动化脚本、语义分析等多种场景。
相关文章:
Ollama API 应用指南
1. 基础信息 默认地址: http://localhost:11434/api数据格式: application/json支持方法: POST(主要)、GET(部分接口) 2. 模型管理 API (1) 列出本地模型 端点: GET /api/tags功能: 获取已下载的模型列表。示例:curl http://lo…...
PNG透明免抠设计素材大全26000+
在当今的数字设计领域,寻找高质量且易于使用的素材是每个设计师的日常需求。今天,我们将为大家介绍一个超全面的PNG透明免抠设计素材大全,涵盖多种风格、主题和应用场景,无论是平面设计、网页设计还是多媒体制作,都能轻…...
4.多表查询
SQL 多表查询:数据整合与分析的强大工具 文章目录 SQL 多表查询:数据整合与分析的强大工具一、 多表查询概述1.1 为什么需要多表查询1.2 多表查询的基本原理 二、 多表查询关系2.1 一对一关系(One-to-One)示例: 2.2 一…...
MCP 基于 TypeScript 的完整示例,包含stdio、sse多种用法和调试,对于构建自己的API工具链很有用
typescript-mcp-demo 这是一个基于 Model Context Protocol (MCP) 的 TypeScript 示例项目,展示了如何创建一个简单的 MCP 服务器,包含基本的工具(tools)和资源(resources)功能。 官网:https:…...
位运算知识
位运算是一种直接对整数在内存中的二进制位进行操作的运算方式。计算机中的整数是以二进制形式存储的,位运算通过操作这些二进制位来实现高效的计算。位运算通常比普通的算术运算更快,因为它直接作用于硬件层面。 以下是几种常见的位运算符及其功能&…...
mybatis高级查询:一对多配置,一次性查出主表和子表中的数据
一、MyBatis高级查询:一对多 MyBatis是一款强大的持久层框架,提供了多种方式来处理关联查询,其中包括一对一和一对多的情况。在本文中,我们将深入探讨一对多关联查询的实现方式。 在MyBatis中配置一对多关系通常涉及到associati…...
美团2024年春招第一场笔试 C++
目录 1,小美的平衡矩阵 2,小美的数组询问 3,小美的MT 4,小美的朋友关系 1,小美的平衡矩阵 【题目描述】 给定一个n*n的矩阵,该矩阵只包含数字0和1。对于 每个i(1<i<n),求在该矩阵中&am…...
XHTMLConverter把docx转换html报java.lang.NullPointerException异常
一.报错 1.报错信息 org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:77)at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConve…...
OpenCV 图形API(52)颜色空间转换-----将 NV12 格式的图像数据转换为 RGB 格式的图像
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从 NV12 (YUV420p) 色彩空间转换为 RGB。该函数将输入图像从 NV12 色彩空间转换到 RGB。Y、U 和 V 通道值的常规范围是 0 到 255。 输出图…...
pojovoDto等概念
Java 中的数据模型概念 POJO (Plain Old Java Object) POJO 是最简单的 Java 对象,不依赖于特定的框架,不实现任何特殊的接口,也不继承特定的类。 特点 具有无参构造函数属性使用 private 修饰提供公共的 getter 和 setter 方法可序列化 …...
COdeTop-206-反转链表
题目 206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 …...
线段树讲解(小进阶)
目录 前言 一、线段树知识回顾 线段树区间加减 区间修改维护: 区间修改的操作: 区间修改update: 线段树的区间查询 区间查询: 区间查询的操作: 递归查询过程: 区间查询query: 代码&…...
4082P 信号/频谱分析仪
——新利通仪器仪表—— 4082P丨信号/频谱分析仪 2Hz~110GHz Ceyear 4082系列信号/频谱分析仪在显示平均噪声电平、相位噪声、互调抑制、动态范围、幅度精度和测试速度等方面具备极佳的射频性能。具备强大的频谱分析、符合标准的功率测量套件、I/Q分析、瞬态分析…...
夏季跑步注意
夏季跑步注意 医学专家警示:大众跑者需以安全为先,警惕高温环境下“盲目冲刺”的风险。一些事件再次印证马拉松适宜气温为6-15℃,超过20℃时需主动降速并增加补水量。 所以建议每一位跑友,为了健康的跑步,每年除了做…...
openharmony5.0.0中C++公共基础类测试-线程相关(一)
C公共基础类测试及源码剖析 延续传统,show me the code,除了给出应用示例还重点分析了下openharmony中的实现。 简介 openharmony中提供了C公共基础类库,为标准系统提供了一些常用的C开发工具类,本文分析其实现,并给…...
TDengine 数据订阅设计
简介 数据订阅作为 TDengine 的一个核心功能,为用户提供了灵活获取所需数据的能力。通过深入了解其内部原理,用户可以更加有效地利用这一功能,满足各种实时数据处理和监控需求。 基本概念 主题 与 Kafka 一样,使用 TDengine 数…...
python:mido 提取 midi文件中某一音轨的音乐数据
pip install mido 使用 mido库可以方便地处理 MIDI 文件,提取其中音轨的音乐数据。 1.下面的程序会读取指定的 MIDI 文件,并提取指定编号音轨的音乐数据,主要包括音符事件等信息。 编写 mido_extract.py 如下 # -*- coding: utf-8 -*- &…...
vue3 中推荐使用的页面布局方式
1、Flexbox布局 原理 Flexbox(弹性盒子布局模型)提供了一种更加高效的方式来对容器中的子元素进行布局、对齐和分配空间。它能够根据容器的大小和子元素的内容自动调整布局,非常适合一维布局(水平或垂直方向)。 优…...
URP-UGUI交互功能实现
一、非代码层面实现交互(SetActive) Button :在OnClick()中添加SetActive方法(但是此时只首次有效) Toggle :在OnClick()中添加动态的SetActive方法 &#…...
UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
UniGoal的提出了一个通用的零样本目标导航框架,能够统一处理多种类型的导航任务 (如对象类别导航、实例图像目标导航和文本目标导航),而无需针对特定任务进行训练或微调。 它的特点是 图匹配与多阶段探索策略!&#x…...
通过Quartus II实现Nios II编程
目录 一、认识Nios II二、使用Quartus II 18.0Lite搭建Nios II硬件部分三、软件部分四、运行项目 一、认识Nios II Nios II软核处理器简介 Nios II是Altera公司推出的一款32位RISC嵌入式处理器,专门设计用于在FPGA上运行。作为软核处理器,Nios II可以通…...
Linux/AndroidOS中进程间的通信线程间的同步 - IPC方式简介
前言 从来没有总结过Linux/Android系统中进程间的通信方式和线程间的同步方式,这个专栏就系统总结讨论一下。首先从标题可知,讨论问题的主体是进程和线程、通信和同步;在这里默认你理解进程和线程的区别。通信和同步有什么概念上的区别&…...
Windows:注册表配置应用
0、简介 本篇博客记录一下,日常的系统注册表配置选项,以防再次遇到问题不知如何解决。 1、开机启动配置 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run :: 此位置存储了所有用户登录时需要启动的程序。 在该项下新建字符串值&#…...
升级xcode16之后react-native-zip-archive不兼容,unsupported option ‘-G‘
问题 升级xcode到16之后,xcode build报错:unsupported option -G for target x86_64-apple-ios13.4-simulator (in target RNZipArchive from project Pods) 出现原因 在 React Native 项目中,当你将 Xcode 升级到 16 后,可能会遇到 RNZipArchive 相关的编译错误,特别是…...
WebXR教学 05 项目3 太空飞船小游戏
准备工作 自动创建 package.json 文件 npm init -y 安装Three.js 3D 图形库,安装现代前端构建工具Vite(用于开发/打包) npm install three vite 启动 Vite 开发服务器(推荐)(正式项目开发) …...
网页在浏览器中显示的原理(简要)
网页在浏览器中显示的过程是一个复杂的多阶段流程。 1. 输入URL并发起请求 用户在地址栏输入URL并回车 浏览器检查缓存(DNS缓存、页面缓存等) 如果没有缓存,通过DNS解析获取服务器IP地址 建立TCP连接(三次握手) 发…...
rl中,GRPO损失函数详解。
文章目录 **一、GRPO损失函数的设计背景****二、代码逐行解析****三、关键组件详解****1. 对数概率与KL散度计算****2. 优势值与策略梯度****3. 掩码与平均损失****四、训练动态与调参建议**在TRL(Transformer Reinforcement Learning)库中,GRPO(Group Relative Policy Opt…...
【Java面试笔记:基础】12.Java有几种文件拷贝方式?哪一种最高效?
在 Java 中,文件拷贝可以通过多种方式实现,不同方式的性能和适用场景有所差异。 1. Java 文件拷贝方式 传统 IO 方式 使用 FileInputStream 和 FileOutputStream,通过循环读取和写入数据实现文件拷贝。 示例代码: try (InputStream is = new FileInputStream("sou…...
【leetcode】3524 求出数组的X值1
题目链接 题目描述 给你一个正整数数组 nums 和一个正整数 k。 你可以对数组执行一次操作:移除不重叠的前缀和后缀(可以为空),留下一个连续非空子数组。 对于每一种留下的子数组,计算: (该子数组的乘积…...
达梦统计信息收集情况检查
查询达梦某个对象上是否有统计信息 select id,T_TOTAL,N_SMAPLE,N_DISTINCT,N_NULL,BLEVEL,N_LEAF_PAGES,N_LEAF_USED_PAGES,LAST_GATHERED from sysstats where id IN (select id from sysobjects where upper(name)upper(&objname));可能有系统对象,可以增加…...
