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.mzph.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;负反馈是实现精确控制和高稳定性的关键机制。 …