恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Python调用Ollama API实现本地大模型应用

  • 首页
  • 资讯中心
  • /
  • Python调用Ollama API实现本地大模型应用

相关资讯

Win11 Copilot后台内存占用优化:组策略与注册表禁用指南 2026/8/2 19:18:13
终极指南:3分钟彻底解决Cursor试用限制,让AI编程助手无限畅用 2026/8/2 19:18:13
清华AI教材解析:从基础理论到工程实践 2026/8/2 19:18:14

最新资讯

飞书 Android 技术栈拆解:从原生架构到 AI 落地与性能优化
如何停止自我否定?从内在批判者到自我盟友的实操指南
CentOS 7.9离线镜像源构建实战:覆盖EPEL、Zabbix、Certbot与ICU
CentOS 7.9 离线YUM镜像源构建实战:支持Zabbix、Certbot与ICU
Ella陈嘉桦“艾拉主意”巡演:两晚连唱、姐姐打call与演唱会运营全解析
t3code:从自然语言到可运行代码的本地化AI命令行工具实践

今日推荐

context-mode实战指南:从全量塞入到结构化裁剪与检索增强
大模型对话上下文管理实战:三种模式与Token优化
抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Python调用Ollama API实现本地大模型应用

发布时间:2026/10/8 9:46:15
Python调用Ollama API实现本地大模型应用 1. Python本地调用Ollama API的完整指南Ollama作为当前热门的本地大模型运行框架让开发者能够在个人电脑上部署和运行各类开源大语言模型。而Python作为最流行的编程语言之一与Ollama的结合为开发者提供了极大的便利。本文将详细介绍如何在Python环境中调用Ollama的API包括环境准备、基础调用、高级功能以及常见问题的解决方案。对于刚接触Ollama的开发者来说最常遇到的困惑是如何在自己的Python项目中集成Ollama的能力。实际上Ollama提供了简洁明了的REST API接口通过Python的requests库或者专门的Ollama Python库都能轻松实现调用。下面我们就从最基础的安装配置开始逐步深入探讨各种调用方式和技巧。2. 环境准备与基础配置2.1 Ollama的安装与运行在开始Python调用之前首先需要确保Ollama已经正确安装并在本地运行。对于国内用户由于网络原因直接从官网下载可能会遇到速度慢的问题。这里推荐使用国内镜像源进行安装# 对于Linux/macOS用户 curl -fsSL https://ollama.mirror.aliyun.com/install.sh | sh # 对于Windows用户 # 可以从国内镜像站下载安装包安装完成后启动Ollama服务ollama serve这个命令会启动Ollama的本地服务默认监听11434端口。你可以通过访问http://localhost:11434来验证服务是否正常运行。2.2 Python环境配置建议使用Python 3.8或更高版本。创建一个干净的虚拟环境是个好习惯python -m venv ollama-env source ollama-env/bin/activate # Linux/macOS ollama-env\Scripts\activate # Windows然后安装必要的Python包pip install requests ollama注意如果你只需要基础功能requests库就足够了。但如果你计划使用更高级的功能如流式响应或异步调用安装ollama官方库会更方便。3. 基础API调用3.1 使用requests库进行简单调用最基本的API调用方式是使用Python内置的requests库。Ollama的API遵循RESTful风格主要端点包括/api/generate- 用于生成文本/api/chat- 用于对话式交互/api/pull- 下载模型/api/tags- 列出可用模型下面是一个生成文本的简单示例import requests url http://localhost:11434/api/generate headers {Content-Type: application/json} data { model: llama2, prompt: 请用中文解释量子计算的基本原理, stream: False } response requests.post(url, headersheaders, jsondata) print(response.json())3.2 使用官方Ollama库Ollama官方提供了一个Python库封装了底层API调用使用起来更加简洁import ollama response ollama.generate( modelllama2, prompt请用中文解释量子计算的基本原理 ) print(response[response])官方库还支持流式响应这对于处理长文本生成非常有用stream ollama.generate( modelllama2, prompt请用中文解释量子计算的基本原理, streamTrue ) for chunk in stream: print(chunk[response], end, flushTrue)4. 高级功能与技巧4.1 模型管理与自定义Ollama允许你下载和管理多个模型。通过Python可以方便地进行这些操作# 列出可用模型 models ollama.list() print(models) # 下载新模型 ollama.pull(codellama:7b) # 创建自定义模型 with open(Modelfile, w) as f: f.write(FROM llama2\nSYSTEM \你是一个专业的Python程序员助手\) ollama.create(namemy-python-helper, modelfile./Modelfile)4.2 参数调优Ollama的generate API支持多种参数来调整生成结果response ollama.generate( modelllama2, prompt请用中文解释量子计算的基本原理, options{ temperature: 0.7, # 控制随机性 (0-1) top_p: 0.9, # 核采样参数 max_tokens: 500, # 最大生成token数 repeat_penalty: 1.1 # 重复惩罚因子 } )4.3 上下文管理对于多轮对话保持上下文非常重要messages [ {role: user, content: Python中如何读取文件} ] # 第一轮对话 response ollama.chat( modelllama2, messagesmessages ) print(response[message][content]) # 将AI回复加入上下文 messages.append({ role: assistant, content: response[message][content] }) # 用户继续提问 messages.append({ role: user, content: 那如何写入文件呢 }) # 第二轮对话 response ollama.chat( modelllama2, messagesmessages ) print(response[message][content])5. 常见问题与解决方案5.1 API错误处理在实际使用中你可能会遇到各种API错误。下面是一些常见错误及其解决方法try: response ollama.generate( modelnon-existent-model, prompttest ) except Exception as e: if model not found in str(e): print(模型不存在请先下载模型) elif connection refused in str(e): print(Ollama服务未启动请先运行ollama serve) elif context length in str(e): print(输入过长请减少prompt长度) else: print(f未知错误: {e})5.2 性能优化对于需要高性能的场景可以考虑以下优化措施批处理请求如果有多个独立prompt可以合并为一个请求流式处理对于长文本生成使用流式响应可以提升用户体验模型量化使用量化版本的模型如llama2:7b-q4可以显著减少内存占用和提高速度# 批处理示例 prompts [ 解释Python中的列表推导式, 解释Python中的生成器表达式, 解释Python中的装饰器 ] responses [] for prompt in prompts: stream ollama.generate( modelllama2:7b-q4, promptprompt, streamTrue ) full_response for chunk in stream: full_response chunk[response] responses.append(full_response)5.3 国内网络问题解决方案国内用户可能会遇到下载模型慢的问题。可以通过以下方式解决使用国内镜像源export OLLAMA_HOSThttps://ollama.mirror.aliyun.com ollama pull llama2手动下载模型文件后导入从镜像站下载模型文件如llama2.tar使用命令导入ollama create llama2 -f Modelfile6. 实际应用案例6.1 构建本地知识问答系统结合Ollama和本地文档可以构建一个简单的知识问答系统import ollama from pathlib import Path # 读取本地文档 documents [] for file in Path(docs).glob(*.txt): with open(file, r, encodingutf-8) as f: documents.append(f.read()) # 构建知识库 knowledge_base \n\n.join(documents) def ask_question(question): prompt f基于以下知识回答问题 {knowledge_base} 问题{question} 答案 response ollama.generate( modelllama2, promptprompt, options{temperature: 0.3} # 降低随机性使回答更准确 ) return response[response] # 使用示例 print(ask_question(Python中如何处理异常))6.2 代码生成与解释Ollama特别适合用于代码相关的任务def generate_python_code(description): prompt f根据以下描述生成Python代码 描述{description} 代码 response ollama.generate( modelcodellama:7b, promptprompt, options{temperature: 0.5, max_tokens: 500} ) return response[response] # 使用示例 print(generate_python_code(一个计算斐波那契数列的函数))6.3 与LangChain集成对于更复杂的应用可以将Ollama与LangChain集成from langchain_community.llms import Ollama from langchain.chains import LLMChain from langchain.prompts import PromptTemplate llm Ollama(modelllama2) template 你是一个专业的{role}。请回答以下问题 问题{question} 回答 prompt PromptTemplate( input_variables[role, question], templatetemplate ) chain LLMChain(llmllm, promptprompt) print(chain.run(rolePython工程师, question如何优化Python代码的性能))7. 安全与最佳实践7.1 API安全注意事项如果需要在网络上暴露Ollama API务必设置认证ollama serve --auth username:password然后在Python代码中添加认证import requests from requests.auth import HTTPBasicAuth response requests.post( http://localhost:11434/api/generate, authHTTPBasicAuth(username, password), json{model: llama2, prompt: test} )对于生产环境建议使用HTTPS限制访问IP定期更新Ollama和模型版本7.2 资源管理监控显存使用情况import subprocess def get_gpu_memory(): result subprocess.run([nvidia-smi, --query-gpumemory.used, --formatcsv,noheader,nounits], capture_outputTrue, textTrue) return int(result.stdout.strip()) print(f当前GPU显存使用: {get_gpu_memory()}MB)卸载不使用的模型释放内存ollama.delete(llama2)7.3 模型选择建议根据不同的使用场景可以选择不同的模型通用对话llama2, mistral代码相关codellama, deepseek-coder中文任务qwen, chatglm轻量级phi, tinyllama对于中文用户特别推荐使用qwen系列模型其中文表现优秀# 下载并运行qwen模型 ollama.pull(qwen:7b) response ollama.generate(modelqwen:7b, prompt用中文解释神经网络)

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号