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

【Java 开发日记】我们来说说 ThreadLocal 的原理,使用场景及内存泄漏问题

【Java 开发日记】我们来说说 ThreadLocal 的原理,使用场景及内存泄漏问题

目录 一、核心原理 1. 数据存储结构 2. 关键设计 二、源码分析 1. set() 方法流程 2. get() 方法流程 三、使用场景 1. 典型应用场景 2. 使用建议 四、内存泄漏问题 1. 泄漏原理 2. 解决方案对比 3. 最佳实践 五、注意事项 六、替代方案 七、调试技巧 面试回答 1. 首先,它的核心原理是什么? 2. 其次,它的典型使用场景有哪些? 3. 最后,关于它的内存泄漏问题 一、核心原理 1. 数据存储结构 // 每个

By Ne0inhk
OpenClaw 最新保姆级飞书对接指南教程 搭建属于你的 AI 助手

OpenClaw 最新保姆级飞书对接指南教程 搭建属于你的 AI 助手

OpenClaw 最新保姆级飞书对接指南教程 搭建属于你的 AI 助手 OpenClaw 是一款开源的本地 AI 助手,本篇 OpenClaw 安装教程将手把手教你在 Linux 系统下部署最新版 OpenClaw,并完成飞书机器人对接。OpenClaw 支持在你自己的服务器上运行,通过飞书、WhatsApp、Telegram 等聊天工具交互。与云端 SaaS 服务不同,OpenClaw 让你完全掌控数据隐私,可以执行系统命令、浏览网页、管理文件,甚至编写代码——是你的专属开源 AI 助手。 注意:本教程在 Linux 系统下进行 OpenClaw 是什么? OpenClaw(原名 Clawdbot,后更名为 Moltbot,现正式命名为 OpenClaw)是一个运行在你本地环境的高权限 AI 智能体。

By Ne0inhk

AI股票分析师daily_stock_analysis实测:3步完成私有化金融分析

AI股票分析师daily_stock_analysis实测:3步完成私有化金融分析 1. 为什么你需要一个“不联网”的股票分析工具? 你有没有过这样的经历:想快速了解一只股票的基本面,却要打开多个网页——财经新闻、股吧讨论、券商研报、交易所公告……信息杂乱,真假难辨,还可能被广告和营销内容干扰。更关键的是,当你输入敏感的自选股或内部研究代码时,是否担心数据被上传到云端?是否在意分析过程是否完全可控? 这正是 AI股票分析师daily_stock_analysis 镜像诞生的出发点:它不调用任何外部API,不连接互联网获取实时行情,也不依赖第三方服务。整个分析流程——从模型加载、提示词执行到报告生成——全部在你的本地设备上完成。你输入的股票代码(哪怕是MY-COMPANY这样的虚构代号),不会离开你的机器半步。 这不是一个“假装专业”的玩具。它用真实的大模型能力,配合严谨的角色设定和结构化输出约束,把复杂的金融分析逻辑压缩成三个清晰段落:近期表现、潜在风险、未来展望。没有图表,没有K线图,但有逻辑、有判断、

By Ne0inhk
2026年1月16日- 白嫖Claude Opus 4.5!Kiro + AIClient-2-API 让你免费用上顶级AI

2026年1月16日- 白嫖Claude Opus 4.5!Kiro + AIClient-2-API 让你免费用上顶级AI

前言 在AI辅助开发工具快速发展的今天,各大厂商纷纷推出自己的AI编程助手。好家伙,继GitHub Copilot、Cursor、Claude Code之后,AWS也按捺不住了,在2025年7月正式推出了自家的AI IDE——Kiro。这款工具不仅支持Claude Sonnet 4、Claude Opus 4.5等顶级大模型,而且新用户注册就送550积分,相当于白嫖数百次高质量AI对话,这对于想要体验顶级AI编程能力的小伙伴来说简直是福音。 但问题来了,Kiro目前只能在其IDE内部使用,如果我们想在其他工具比如Cherry Studio、Claude Code中使用这些免费额度怎么办?这就需要借助一个神器——AIClient-2-API。这个开源项目可以将Kiro等AI客户端的能力转换为标准的OpenAI API格式,让我们能够在任何支持OpenAI API的第三方工具中使用Kiro的免费额度,实现真正的"白嫖"顶级大模型。 最近两天我解锁了 Kiro 搭配 AIClient-2-API 的 “邪修玩法”,今天就手把手带大家实操:从注册 Kiro 账号、

By Ne0inhk