Python 调用 Ollama 本地大模型 API 完全指南

Python 调用 Ollama 本地大模型 API 完全指南

Python 调用 Ollama 本地大模型 API 完全指南

Ollama 是一个开源工具,允许开发者在本地轻松运行 Llama、Mistral、Gemma 等主流大语言模型(LLM)。它不仅提供命令行交互,还内置了 HTTP API 服务,使得我们可以通过 Python 等编程语言远程调用本地模型,实现私有化、低延迟、无网络依赖的 AI 应用开发。

本文将手把手教你如何在 Python 中通过 HTTP 请求调用 Ollama 的 API,完成文本生成、对话交互等任务。


一、前提准备

1. 安装并启动 Ollama

  • 官网下载安装:https://ollama.com/
  • 首次运行会自动下载模型(需联网),之后即可离线使用。

安装后,在终端运行:

ollama run llama3 # 或 mistral、gemma、qwen 等 
重要:Ollama 默认启动一个本地 HTTP 服务(http://localhost:11434),即使你只运行 ollama run,API 也会在后台可用。

二、Ollama API 简介

Ollama 提供了简洁的 RESTful API,核心接口为:

  • POST /api/generate:用于单轮文本生成(非对话)
  • POST /api/chat:用于多轮对话(推荐用于聊天场景)

本文以 /api/chat 为主,更贴近实际应用。


三、Python 调用示例(使用 requests)

首先安装依赖(如未安装):

pip install requests 

示例 1:基础对话(单轮)

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 # 关闭流式响应,获取完整结果 } response = requests.post(url, json=payload) if response.status_code == 200: result = response.json() return result["message"]["content"] else: raise Exception(f"请求失败: {response.text}") # 使用示例 answer = chat_with_ollama("你好!你能介绍一下自己吗?") print(answer) 

示例 2:多轮对话(带上下文)

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("出错了:", resp.text) break # 启动对话 multi_turn_chat() 

四、关键参数说明

参数说明
model模型名称,必须是你本地已通过 ollama pullrun 下载的(如 llama3, qwen:7b, gemma:2b
messages对话历史,格式为 [{"role": "user/assistant", "content": "..."}]
stream是否启用流式输出。设为 True 时需逐块解析响应(适合 Web 实时展示),False 则返回完整结果
options可选,用于设置 temperature、max_tokens 等(见下文)

添加生成参数(如温度、最大长度):

payload = { "model": "llama3", "messages": [{"role": "user", "content": "写一首诗"}], "stream": False, "options": { "temperature": 0.7, "num_predict": 100, # 最大生成 token 数 "top_p": 0.9 } } 

五、常见问题排查

❌ 问题 1:Connection refused 或无法连接

  • 原因:Ollama 服务未运行
  • 解决:确保终端中已运行 ollama serve 或至少执行过一次 ollama run xxx

❌ 问题 2:model not found

  • 原因:指定的模型未下载
  • 解决:先在终端执行 ollama pull llama3(替换为你想用的模型)

❌ 问题 3:响应慢或卡住

  • 尝试关闭 stream(设为 False
  • 检查模型是否过大(如 70B 模型需高性能 GPU)

六、进阶:流式响应(Stream)

若需实时输出(如打字机效果),可启用流式模式:

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"],, flush=True) print() # 换行 
⚠️ 注意:流式响应返回的是 JSON Lines(每行一个 JSON 对象),需逐行解析。

七、总结

通过 Ollama 的 HTTP API,Python 开发者可以:

  • 在本地安全、私有地调用大模型;
  • 构建离线 AI 应用(如智能客服、文档摘要、代码助手);
  • 无缝集成到 Flask/FastAPI/Web 应用中。

核心优势
✅ 无需联网
✅ 支持多种开源模型
✅ API 简洁易用
✅ 完全免费 & 开源

📌 提示:Ollama 还支持自定义 Modelfile 微调提示词,进一步提升模型表现。

现在,你已经掌握了在 Python 中调用 Ollama 的全部基础知识。快去试试用本地 LLM 构建你的第一个 AI 应用吧!

Read more

人工智能、机器学习和深度学习,其实不是一回事

人工智能、机器学习和深度学习,其实不是一回事

一、人工智能、机器学习与深度学习的真正区别 在当今科技领域,我们经常听到人工智能、机器学习和深度学习这三个词。它们虽然相关,但含义不同。 1.1 人工智能 人工智能是计算机科学的一个分支,旨在研究如何合成与分析能够像人一样行动的计算主体。简单来说,AI 的目标是利用计算机来模拟甚至替代人类大脑的功能。 一个理想的 AI 系统通常具备以下特征:像人一样思考、像人一样行动、理性地思考与行动。 1.2 机器学习 机器学习是实现人工智能的一种途径。它的核心定义是:赋予计算机在没有被显式编程的情况下进行学习的能力。 与传统的基于规则的编程不同,机器学习不依赖程序员手写每一条逻辑指令,而是通过算法让机器从大量数据中寻找规律,从而对新的数据产生预测或判断。 1.3 深度学习 深度学习是机器学习的一种特殊方法,也称为深度神经网络。它受人类大脑结构的启发,通过设计多层的神经元网络结构,来模拟万事万物的特征表示。 1.4 三者之间的层级关系 厘清这三者的关系对于初学者至关重要。人工智能 AI是最宏大的概念,包含了所有让机器变聪明的技术。机器学习 ML是 AI

By Ne0inhk

91代码神器:AI如何帮你自动生成高质量代码

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 点击'项目生成'按钮,等待项目生成完整后预览效果 输入框内输入如下内容: 使用91代码平台,创建一个能够自动生成Python爬虫代码的AI助手。要求:1. 输入目标网站URL后自动分析页面结构;2. 根据分析结果生成可运行的爬虫代码;3. 支持反爬虫机制处理;4. 输出结构化数据存储方案。使用Kimi-K2模型实现智能代码生成,并确保代码包含必要的注释和异常处理。 最近尝试用AI工具自动生成Python爬虫代码,发现整个过程比想象中高效。通过91代码平台的Kimi-K2模型,只需要简单几步就能完成从页面分析到完整爬虫的生成。这里分享下具体实现过程和实际体验。 1. 输入目标网站URL 在平台对话框直接粘贴需要爬取的网址,比如某个电商商品页面。AI会先自动检测网页结构特征,识别出关键数据区域(如商品标题、价格、评论区块等),这步相当于人工查看网页源码的自动化版本。 2. 智能生成基础爬虫框架 根据分析结果,AI会生成包含Requests或Sel

By Ne0inhk
Claude Code安装与使用完全指南:2026 年最前沿的 AI 编程助手

Claude Code安装与使用完全指南:2026 年最前沿的 AI 编程助手

文章目录 * 前言 * 一、什么是 Claude Code? * 1.1 定义与定位 * 1.2 技术优势 * 二、安装前的环境准备 * 2.1 系统要求 * 2.2 前置依赖 * 三、Claude Code 全平台安装教程 * 3.1 安装方式对比 * 3.2 Windows 系统安装 * 3.3 macOS 系统安装 * 3.5 安装后初始化 * 四、配置与优化 * 4.1 配置文件位置 * 4.2 跳过新手引导 * 4.3 接入国产大模型(免翻墙方案)

By Ne0inhk
Flutter 三方库 mediapipe_core 的鸿蒙化适配指南 - 实现高性能的端侧 AI 推理库集成、支持多维视觉任务与手势/表情识别实战

Flutter 三方库 mediapipe_core 的鸿蒙化适配指南 - 实现高性能的端侧 AI 推理库集成、支持多维视觉任务与手势/表情识别实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 mediapipe_core 的鸿蒙化适配指南 - 实现高性能的端侧 AI 推理库集成、支持多维视觉任务与手势/表情识别实战 前言 在进行 Flutter for OpenHarmony 的智能化应用开发时,集成强大的机器学习(ML)能力是打造差异化体验的关键。mediapipe_core 是谷歌 MediaPipe 框架在 Dart 侧的核心封装库。它能让你在鸿蒙真机上实现极其流畅的人脸检测、手势追踪以及实时姿态估计。本文将深入探讨如何在鸿蒙系统下构建低功耗、高响应的端侧 AI 推理链路。 一、原原理性解析 / 概念介绍 1.1 基础原理 mediapipe_core 作为 MediaPipe 的“神经中枢”

By Ne0inhk